[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/designer/src base/UndoManager.py base/tool...,
Jason Cater <=