commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/designer/src base/UndoManager.py base/tool...


From: Jason Cater
Subject: gnue/designer/src base/UndoManager.py base/tool...
Date: Mon, 02 Jun 2003 19:33:26 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    03/06/02 19:33:26

Modified files:
        designer/src/base: UndoManager.py 
        designer/src/base/tools: SchemaNavigator.py SchemaViewer.py 
        designer/src/forms/LayoutEditor: DisplayDropTarget.py 
                                         LayoutEditor.py 
                                         WidgetHandler.py 
                                         WidgetHighlighter.py 

Log message:
        misc fixes; more work on drag-and-drop

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/UndoManager.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/tools/SchemaNavigator.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/tools/SchemaViewer.py.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.81&tr2=1.82&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/WidgetHandler.py.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: gnue/designer/src/base/UndoManager.py
diff -c gnue/designer/src/base/UndoManager.py:1.2 
gnue/designer/src/base/UndoManager.py:1.3
*** gnue/designer/src/base/UndoManager.py:1.2   Fri May 30 19:08:44 2003
--- gnue/designer/src/base/UndoManager.py       Mon Jun  2 19:33:25 2003
***************
*** 82,87 ****
--- 82,88 ----
      self.redo = 1
      if self.history:
        events = self.history.pop()
+       events.reverse()
        for event in events:
          event.reverse(self)
  
Index: gnue/designer/src/base/tools/SchemaNavigator.py
diff -c gnue/designer/src/base/tools/SchemaNavigator.py:1.2 
gnue/designer/src/base/tools/SchemaNavigator.py:1.3
*** gnue/designer/src/base/tools/SchemaNavigator.py:1.2 Fri May 30 01:02:56 2003
--- gnue/designer/src/base/tools/SchemaNavigator.py     Mon Jun  2 19:33:26 2003
***************
*** 44,50 ****
  #
  #
  #
! import sys, os, cPickle, traceback, StringIO, string
  from wxPython.wx import *
  from wxPython.gizmos import *
  from gnue.common.apps import GDebug
--- 44,50 ----
  #
  #
  #
! import sys, os, cPickle, traceback, StringIO, string, types
  from wxPython.wx import *
  from wxPython.gizmos import *
  from gnue.common.apps import GDebug
***************
*** 101,106 ****
--- 101,108 ----
      tree.SetItemHasChildren(root, 1)
      tree.SetPyData(root, self)
      self.expanded = 1
+     EVT_TREE_BEGIN_DRAG(self, self.tree.GetId(), self.OnBeginDrag)
+     EVT_TREE_BEGIN_RDRAG(self, self.tree.GetId(), self.OnBeginRDrag)
  
      for connection in self.connectionNames:
         ConnectionNode(self, tree, root, connection=connection)
***************
*** 113,118 ****
--- 115,122 ----
  
    def OnSize(self, event):
      self.scroll.SetSize(self.GetClientSize())
+     # This is some hackery since the earlier
+     # SetSashPosition is doing absolutely no good :(
      if self.splitter.GetSashPosition() < 30:
        self.splitter.SetSashPosition(int(self.splitter.GetSizeTuple()[0]*.6))
  
***************
*** 121,132 ****
    def getColumn(self, i=0):
      return ""
  
  
  class TreeCtrl(wxRemotelyScrolledTreeCtrl):
  
    def __init__(self, parent):
      wxRemotelyScrolledTreeCtrl.__init__(self, parent, -1,
!            style=wxTR_HAS_BUTTONS|wxTR_NO_LINES|wxTR_ROW_LINES|wxNO_BORDER)
  
      EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnExpand)
  
--- 125,205 ----
    def getColumn(self, i=0):
      return ""
  
+   def OnBeginDrag(self, event, right=0):
+     do = wxCustomDataObject(wxCustomDataFormat("GNUeDesVisualElement")) 
#"application/x-gnue-designer-schema"))
+     do.SetData(cPickle.dumps(self.buildDataObject(right),1))
+ 
+     dropSource = wxDropSource(self)
+     dropSource.SetData(do)
+     result = dropSource.DoDragDrop(false)
+     print "result=%s" % result
+ 
+   def OnBeginRDrag(self, event):
+     self.OnBeginDrag(event, right=1)
+ 
+ 
+   def __addTable(self, object):
+     # Find the "connection" node
+     parent = self.tree.GetPyData(self.tree.GetItemParent(object.node))
+     while not isinstance(parent, ConnectionNode):
+       parent = self.tree.GetPyData(self.tree.GetItemParent(parent.node))
+ 
+     connection = parent.connection
+ 
+     return { 'connection': connection,
+              'name': object.schema.name }
+ 
+ 
+   def __addField(self, object):
+     rs = {}
+     for attr, val in object.field.__dict__.items():
+       if attr[0] != '_' and type(val) != types.MethodType:
+         rs[attr] = val
+     return rs
+ 
+ 
+   def buildDataObject(self, right=0):
+     rs = []
+     tableCache = {}
+ 
+     # Add all our tables/fields to a list
+     # in the format [ (table, [field, field]),
+     #                 (table, [field, field]) ]
+     for tid in self.tree.GetSelections():
+       node = self.tree.GetPyData(tid)
+       if isinstance(node, TableNode):
+         tn = tableCache[node] = []
+         rs.append((self.__addTable(node), tn))
+       elif isinstance(node, FieldNode):
+         table = self.tree.GetPyData(self.tree.GetItemParent(tid))
+         try:
+           tn = tableCache[table]
+         except KeyError:
+           tn = tableCache[table] = []
+           rs.append((self.__addTable(table), tn))
+         tn.append(self.__addField(node))
+ 
+     # If a table was selected, but no fields,
+     # then add all the fields to the cache
+     for table, fields in tableCache.items():
+       if not fields:
+         if not table.expanded:
+           table.expand()
+         cookie = 0
+         child, cookie = self.tree.GetFirstChild(table.node, cookie)
+         while child.IsOk():
+           fields.append(child)
+           child, cookie = self.tree.GetNextChild(table.node, cookie)
+ 
+     return [{'Type': 'SchemaDrop', 'Data': rs, 'ShowMenu': right}]
+ 
  
  class TreeCtrl(wxRemotelyScrolledTreeCtrl):
  
    def __init__(self, parent):
      wxRemotelyScrolledTreeCtrl.__init__(self, parent, -1,
!            style=wxTR_HAS_BUTTONS|wxTR_NO_LINES|
!                  wxTR_ROW_LINES|wxNO_BORDER|wxTR_MULTIPLE)
  
      EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnExpand)
  
Index: gnue/designer/src/base/tools/SchemaViewer.py
diff -c gnue/designer/src/base/tools/SchemaViewer.py:1.14 
gnue/designer/src/base/tools/SchemaViewer.py:1.15
*** gnue/designer/src/base/tools/SchemaViewer.py:1.14   Fri May 23 20:02:31 2003
--- gnue/designer/src/base/tools/SchemaViewer.py        Mon Jun  2 19:33:26 2003
***************
*** 290,296 ****
                 "Attributes": {
                       "name": dname,
                       "table": object.name,
!                      "database": self.connectionName } },
               { "Type" : "block",
                 "Attributes": {
                       "name": bname,
--- 290,296 ----
                 "Attributes": {
                       "name": dname,
                       "table": object.name,
!                      "connection": self.connectionName } },
               { "Type" : "block",
                 "Attributes": {
                       "name": bname,
Index: gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py
diff -c gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.11 
gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.12
*** gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.11      Sun Mar 
30 12:17:00 2003
--- gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py   Mon Jun  2 
19:33:26 2003
***************
*** 75,80 ****
--- 75,84 ----
          x = int(x / self.editor.gridWidth)
          y = nextY
  
+         if params['Type'] == 'SchemaDrop':
+           self.schemaDrop(params, x, y)
+           continue
+ 
          attributes = params['Attributes']
  
          # Entry types require a "block".. find or create one
***************
*** 233,237 ****
--- 237,254 ----
      return d  # what is returned signals the source what to do
                # with the original data (move, copy, etc.)  In this
                # case we just return the suggested value given to us.
+ 
+ 
+   # This handles dropping from the Schema Navigator
+   def schemaDrop(self, params, x, y):
+ 
+     instance = self.editor.instance
+ 
+     # TODO: if params['ShowMenu'], give user options
+ 
+     for table, fields in params['Data']:
+       print "Find table %s" % table
+ 
+ 
  
  
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.81 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.82
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.81   Thu May 29 
12:43:07 2003
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Mon Jun  2 
19:33:26 2003
***************
*** 44,49 ****
--- 44,50 ----
  from WidgetHandler import WidgetHandler
  from PropertyBar import PropertyBar
  from DisplayDropTarget import DisplayDropTarget
+ from SchemaDropTarget import SchemaDropTarget
  
  
  class LayoutEditor (ToolBase):
***************
*** 438,444 ****
  
        # We are a drop target for Drag-and-Drop
        self.panel.SetDropTarget(DisplayDropTarget(self))
! 
  
        self.page.__panel = self.panel
        self.panelColor = self.panel.GetBackgroundColour()
--- 439,445 ----
  
        # We are a drop target for Drag-and-Drop
        self.panel.SetDropTarget(DisplayDropTarget(self))
! #      self.panel.SetDropTarget(SchemaDropTarget(self))
  
        self.page.__panel = self.panel
        self.panelColor = self.panel.GetBackgroundColour()
Index: gnue/designer/src/forms/LayoutEditor/WidgetHandler.py
diff -c gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.11 
gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.12
*** gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.11  Sun Mar 30 
12:17:00 2003
--- gnue/designer/src/forms/LayoutEditor/WidgetHandler.py       Mon Jun  2 
19:33:26 2003
***************
*** 260,268 ****
  
      else:
        # Signal the Properties dialog
!       self.instance._instance.propertyEditorWindow.Show(1)
!       self.instance._instance.propertyEditorWindow.Raise()
!       self.instance._instance.propertyEditorWindow.SetFocus()
  
    #
    # Resize the current widget.  dx and dy are incremental
--- 260,267 ----
  
      else:
        # Signal the Properties dialog
!       self.instance._instance.dispatchEvent('ShowTool:ObjectProperties')
!       
  
    #
    # Resize the current widget.  dx and dy are incremental
***************
*** 275,281 ****
  
      nx = dx * self.instance.gridWidth
      ny = dy * self.instance.gridHeight
!     
      try:
        self.object.Char__height
      except: 
--- 274,280 ----
  
      nx = dx * self.instance.gridWidth
      ny = dy * self.instance.gridHeight
! 
      try:
        self.object.Char__height
      except: 
Index: gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py
diff -c gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.6 
gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.7
*** gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.6       Sun Mar 
30 12:17:00 2003
--- gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py   Mon Jun  2 
19:33:26 2003
***************
*** 50,55 ****
--- 50,59 ----
      self.east = None
      self.north = None
      self.south = None
+     self.westb = None
+     self.eastb = None
+     self.northb = None
+     self.southb = None
  
  
    # Draw the lines comprising the highlights




reply via email to

[Prev in Thread] Current Thread [Next in Thread]