[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef/designer/src Incubator.py Instance.p...
From: |
Jason Cater |
Subject: |
gnue/gnuef/designer/src Incubator.py Instance.p... |
Date: |
Wed, 20 Jun 2001 15:31:55 -0700 |
CVSROOT: /home/cvs
Module name: gnue
Changes by: Jason Cater <address@hidden> 01/06/20 15:31:55
Modified files:
gnuef/designer/src: Incubator.py Instance.py LayoutEditor.py
MenuBar.py PropertyEditor.py TreeView.py
TriggerEditor.py
Log message:
Added more create object options (in tree-viewer); added trigger
editor; changed some of the event properties
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/Incubator.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/Instance.py.diff?cvsroot=OldCVS&tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/LayoutEditor.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/MenuBar.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/PropertyEditor.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/TreeView.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/TriggerEditor.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: gnue/gnuef/designer/src/Incubator.py
diff -u gnue/gnuef/designer/src/Incubator.py:1.1
gnue/gnuef/designer/src/Incubator.py:1.2
--- gnue/gnuef/designer/src/Incubator.py:1.1 Tue Jun 19 13:41:34 2001
+++ gnue/gnuef/designer/src/Incubator.py Wed Jun 20 15:31:55 2001
@@ -30,45 +30,106 @@
from gnue.common import GDebug, GConfig
from gnue.forms import GFForm, GFInstance, GFParser, GFObjects, GFTrigger,
GFLibrary, UIwxpython
-def createObject(instance, form, tag, type=None, parent=None, name=None,
- currentObject=None, x=None, y=None, height=None, width=None):
+def createObject(instance, form, tag, type=None, parent=None,
+ parentHint=None, attributes={}):
- if name == None:
- name = instance.getNextGenericName(tag)
- o = None
+ GDebug.printMesg(3,'Creating a "%s" object' % tag)
- if tag == 'page':
- o = GFObjects.GFPage(form)
+ name = instance.getNextGenericName(tag)
- elif tag == 'trigger':
- if type == None:
- type = 'NAMED'
- if type == 'NAMED':
- parent = form
- o = GFTrigger.GFTrigger(form, type="NAMED",text="")
-
- elif tag == 'datasource':
- o = GFObjects.GFDataSource(form)
-
-
- if o != None:
- o.name = name
- o.buildObject()
- self.instance.onCreateObject(o, __name__)
- self.instance.onSetCurrentObject(o, __name__)
- else:
- GDebug.printMesg(0, "Attempted to create a '%t', "
+ try:
+ objclass, attrs = elements[tag][:2]
+ except KeyError:
+ GDebug.printMesg(1, "Attempted to create a '%s', "
"but I don't know what to do!" % tag)
+ return
+
+ if tag == 'trigger':
+ if not attributes.has_key('type'):
+ attributes['type'] = 'NAMED'
+ if attributes['type'] == 'NAMED':
+ parent = form
+ else:
+ parent = parent or parentHint
+ elif tag in ('page','datasource','import'):
+ parent = form
+
+ o = objclass(parent or parentHint)
+
+ # Pull default values for any attributes not supplied
+ for attr in attrs.keys():
+ if not attributes.has_key(attr):
+ if attrs[attr][3] != None:
+ attributes[attr] = attrs[attr][2](attrs[attr][3])
+ elif attr in ('x','y','height'):
+ attributes[attr] = 1
+ elif attr == 'width':
+ attributes[attr] = 10
+
+ for attr in attributes.keys():
+ if attrs.has_key(attr):
+ o.__dict__[attr] = attributes[attr]
+ o.name = name
+ o.buildObject()
+ instance.onCreateObject(o, __name__)
+ instance.onSetCurrentObject(o, __name__)
+
def reparentObject(instance, form, object, newParent):
if object._parent == newParent:
return
pass
+
+
+def deleteObject(instance, form, object, newCurrentObject=None, firstRun=1):
-def deleteObject(instance, form, object):
+ if firstRun:
+ newCurrentObject = object._parent
+ parent = object._parent
+
for child in object._children:
- pass
- pass
+ child.deleteObject(instance, form, child, firstRun=0)
+
+ instance.onDeleteObject(object, __name__)
+
+ if firstRun:
+ o = parent
+ while not isinstance(o, GFForm.GFForm):
+ o.buildObject()
+ o = o._parent
+
+ if newCurrentObject:
+ instance.onSetCurrentObject(newCurrentObject, __name__)
+
+
+
+#
+# Figure out GFParser's dependencies
+#
+elements = None
+elementMapping = {}
+def calcDependencies():
+
+ global elements
+ global elementMapping
+
+ elements = GFParser.getXMLelements()
+ for tag in elements.keys():
+ t = elements[tag]
+ if len(t) > 3:
+ cascade, parents = t[3]
+ else:
+ cascade, parents = (0,None)
+
+ if parents != None:
+ for parent in parents:
+ if elementMapping.has_key(parent):
+ elementMapping[parent].append(tag)
+ else:
+ elementMapping[parent] = [tag]
+
+
+calcDependencies()
Index: gnue/gnuef/designer/src/Instance.py
diff -u gnue/gnuef/designer/src/Instance.py:1.7
gnue/gnuef/designer/src/Instance.py:1.8
--- gnue/gnuef/designer/src/Instance.py:1.7 Mon Jun 18 12:50:12 2001
+++ gnue/gnuef/designer/src/Instance.py Wed Jun 20 15:31:55 2001
@@ -148,7 +148,7 @@
object._parent == self._form:
self._pages.append(object)
- object._popupMenu = ObjectMenu(object, self)
+ object._popupMenu = ObjectMenu(self, object)
Index: gnue/gnuef/designer/src/LayoutEditor.py
diff -u gnue/gnuef/designer/src/LayoutEditor.py:1.3
gnue/gnuef/designer/src/LayoutEditor.py:1.4
--- gnue/gnuef/designer/src/LayoutEditor.py:1.3 Mon Jun 18 12:50:12 2001
+++ gnue/gnuef/designer/src/LayoutEditor.py Wed Jun 20 15:31:55 2001
@@ -44,6 +44,7 @@
self.widgets.update(UIwxpython.WIDGETS)
del self.widgets['GFPage']
+ self.page = None
self.pageNameLabel = wxStaticText(self, -1, "Page: ", pos=wxPoint(10,20))
self.pageCombo = wxComboBox(self, -1,
pos=wxPoint(self.pageNameLabel.GetSize().width + 11,18), style=wxCB_READONLY)
self.blockNameLabel = wxStaticText(self, -1, "Block:",
pos=wxPoint(self.pageCombo.GetPosition().x + self.pageCombo.GetSize().width +
20,20))
@@ -73,7 +74,10 @@
if object == None:
return
if handler != __name__:
- pass
+ print object
+ if object.findParentOfType('GFPage') == self.page:
+ self.__getBlocks(object)
+ self.__drawItem(object)
def onModifyObject (self, object, handler, modifications):
if object == None:
@@ -86,7 +90,8 @@
if object == None:
return
if handler != __name__:
- pass
+ if hasattr(object, '_widgetHandler') and object._widgetHandler != None:
+ object._widgetHandler.Destroy()
def drawPage(self, page):
self._currentSelection = {}
@@ -411,6 +416,10 @@
widget.SetPosition(wxPoint(x,y+self.instance.gridHeight))
self.recalcBoundaries()
+ def Destroy(self):
+ self.highlightBox.Destroy()
+ for widget in self.mainWidget.widgets:
+ widget.Destroy()
#
#
@@ -471,7 +480,10 @@
def Refresh(self):
for object in (self.north,self.south,self.east,self.west):
object.Refresh()
-
+
+ def Destroy(self):
+ self.setSelected(0)
+
def setSelected (self, selected):
if selected:
self.selected = selected
Index: gnue/gnuef/designer/src/MenuBar.py
diff -u gnue/gnuef/designer/src/MenuBar.py:1.5
gnue/gnuef/designer/src/MenuBar.py:1.6
--- gnue/gnuef/designer/src/MenuBar.py:1.5 Tue Jun 19 13:41:34 2001
+++ gnue/gnuef/designer/src/MenuBar.py Wed Jun 20 15:31:55 2001
@@ -97,74 +97,85 @@
class ObjectMenu(wxMenu):
- def __init__(self, object, instance):
- wxMenu.__init__(self, "Object Tasks")
+ def __init__(self, instance, object):
+ wxMenu.__init__(self, "Object Tasks...")
self.object = object
self.instance = instance
-
- # New >
+ self._newMap = {}
- menu = wxMenu("New")
+ if object == None:
+ id = wxNewId()
+ self.Append(id, "New Data Source")
+ EVT_MENU(self, id, self.OnCreateDataSource)
+ id = wxNewId()
+ self.Append(id, "New Shared Trigger")
+ EVT_MENU(self, id, self.OnCreateNamedTrigger)
+ id = wxNewId()
+ self.Append(id, "New Layout Page")
+ EVT_MENU(self, id, self.OnCreatePage)
+ else:
- id = wxNewId()
- menu.Append(id, "Data Source")
- EVT_MENU(menu, id, self.OnCreateDataSource)
- id = wxNewId()
- menu.Append(id, "Named Trigger")
- EVT_MENU(menu, id, self.OnCreateNamedTrigger)
- id = wxNewId()
- menu.Append(id, "Layout Page")
- EVT_MENU(menu, id, self.OnCreatePage)
+ # New >
- self._newMap = {}
+ menu = wxMenu("New...")
- menu.AppendSeparator()
+ id = wxNewId()
+ menu.Append(id, "Data Source")
+ EVT_MENU(menu, id, self.OnCreateDataSource)
+ id = wxNewId()
+ menu.Append(id, "Shared Trigger")
+ EVT_MENU(menu, id, self.OnCreateNamedTrigger)
+ id = wxNewId()
+ menu.Append(id, "Layout Page")
+ EVT_MENU(menu, id, self.OnCreatePage)
+
+ menu.AppendSeparator()
- tag = string.lower(object.getObjectType()[2:])
- if elementMapping.has_key(tag):
- elementMapping[tag].sort()
- for element in elementMapping[tag]:
- tid = wxNewId()
- self._newMap[tid] = object.getObjectType()
- menu.Append(tid, element)
- EVT_MENU(menu, tid, self.OnCreateObject)
- self.AppendMenu(wxNewId(), "&New", menu)
-
- # Properties
- id = wxNewId()
- self.Append(id, "&Properties...")
- EVT_MENU(self, id, self.OnEditProperties)
-
- if not isinstance (object, GFForm.GFForm):
- # Delete
- id = wxNewId()
- self.Append(id, "&Delete %s" % object.getObjectType()[2:])
- EVT_MENU(self, id, self.OnDeleteObject)
-
- self.AppendSeparator()
-
- # Events >
- if isinstance (object, GFTrigger.GFTriggerAware):
- menu = wxMenu("Events")
- self._triggerMap = {}
- keys = GFTrigger.VALIDTRIGGERS.keys()
- keys.sort()
- for trigger in (keys):
- tid = wxNewId()
- self._triggerMap[tid] = trigger
- menu.Append(tid, GFTrigger.VALIDTRIGGERS[trigger] + "...")
- EVT_MENU(menu, tid, self.OnEditEvent)
- self.AppendMenu(wxNewId(), "&Events", menu)
-
- self.AppendSeparator()
-
- if isinstance(object, GFObjects.GFPage) or \
- isinstance(object, GFObjects.GFBlock):
- # Reorder
+ tag = string.lower(object.getObjectType()[2:])
+ if Incubator.elementMapping.has_key(tag):
+ Incubator.elementMapping[tag].sort()
+ for element in Incubator.elementMapping[tag]:
+ tid = wxNewId()
+ self._newMap[tid] = element
+ menu.Append(tid, element)
+ EVT_MENU(menu, tid, self.OnCreateObject)
+ self.AppendMenu(wxNewId(), "&New", menu)
+
+ # Properties
id = wxNewId()
- self.Append(id, "&Reorder by Location")
- EVT_MENU(self, id, self.OnReorderLayout)
+ self.Append(id, "&Properties...")
+ EVT_MENU(self, id, self.OnEditProperties)
+
+ if not isinstance (object, GFForm.GFForm):
+ # Delete
+ id = wxNewId()
+ self.Append(id, "&Delete %s" % object.getObjectType()[2:])
+ EVT_MENU(self, id, self.OnDeleteObject)
+
+ self.AppendSeparator()
+
+ # Events >
+ if isinstance (object, GFTrigger.GFTriggerAware):
+ menu = wxMenu("Events...")
+ self._triggerMap = {}
+ keys = GFTrigger.VALIDTRIGGERS.keys()
+ keys.sort()
+ for trigger in (keys):
+ tid = wxNewId()
+ self._triggerMap[tid] = trigger
+ menu.Append(tid, GFTrigger.VALIDTRIGGERS[trigger] + "...")
+ EVT_MENU(menu, tid, self.OnEditEvent)
+ self.AppendMenu(wxNewId(), "&Events", menu)
+
+ self.AppendSeparator()
+
+ if isinstance(object, GFObjects.GFPage) or \
+ isinstance(object, GFObjects.GFBlock):
+ # Reorder
+ id = wxNewId()
+ self.Append(id, "&Reorder by Location")
+ EVT_MENU(self, id, self.OnReorderLayout)
@@ -175,7 +186,7 @@
pass
def OnDeleteObject(self, event):
- pass
+ Incubator.deleteObject(self.instance, self.instance._form, self.object)
def OnReorderLayout(self, event):
pass
@@ -183,50 +194,18 @@
def OnCreateObject(self, event):
GDebug.printMesg(3, "Creating Object")
tag = self._newMap[event.GetId()]
- o = GFObjects.GFDataSource(self.instance._form)
- o.name = self.instance.getNextGenericName('datasource')
- self.instance.onCreateObject(o, __name__)
- self.instance.onSetCurrentObject(o, __name__)
+ Incubator.createObject(self.instance, self.instance._form, tag,
+ parentHint=self.object)
def OnCreateDataSource(self, event):
- GDebug.printMesg(3, "Creating Data Source")
Incubator.createObject(self.instance, self.instance._form, 'datasource')
def OnCreateNamedTrigger(self, event):
- GDebug.printMesg(3, "Creating a trigger")
Incubator.createObject(self.instance, self.instance._form, 'trigger')
def OnCreatePage(self, event):
- GDebug.printMesg(3, "Creating a page")
Incubator.createObject(self.instance, self.instance._form, 'page')
-#
-# Figure out GFParser's dependencies
-#
-elements = None
-elementMapping = {}
-def calcDependencies():
-
- global elements
- global elementMapping
-
- elements = GFParser.getXMLelements()
- for tag in elements.keys():
- t = elements[tag]
- if len(t) > 3:
- cascade, parents = t[3]
- else:
- cascade, parents = (0,None)
-
- if parents != None:
- for parent in parents:
- if elementMapping.has_key(parent):
- elementMapping[parent].append(tag)
- else:
- elementMapping[parent] = [tag]
-
-
-calcDependencies()
Index: gnue/gnuef/designer/src/PropertyEditor.py
diff -u gnue/gnuef/designer/src/PropertyEditor.py:1.2
gnue/gnuef/designer/src/PropertyEditor.py:1.3
--- gnue/gnuef/designer/src/PropertyEditor.py:1.2 Sun Jun 17 22:41:25 2001
+++ gnue/gnuef/designer/src/PropertyEditor.py Wed Jun 20 15:31:55 2001
@@ -66,3 +66,5 @@
if handler != __name__:
pass
+
+
Index: gnue/gnuef/designer/src/TreeView.py
diff -u gnue/gnuef/designer/src/TreeView.py:1.3
gnue/gnuef/designer/src/TreeView.py:1.4
--- gnue/gnuef/designer/src/TreeView.py:1.3 Mon Jun 18 12:50:12 2001
+++ gnue/gnuef/designer/src/TreeView.py Wed Jun 20 15:31:55 2001
@@ -31,8 +31,8 @@
from gnue.common import GDebug, GConfig
from gnue.forms import GFForm, GFInstance, GFParser, GFObjects, GFTrigger,
GFLibrary, UIwxpython
from GFDesigner import *
+from MenuBar import ObjectMenu
-
class TreeView (wxTreeCtrl):
def __init__(self, instance, form, parent):
wxTreeCtrl.__init__(self, parent, wxNewId(),
@@ -58,6 +58,10 @@
self.AppendItem(self.form._treeItem, "Page Layout")
self.SetPyData(self.form._treeItem, self.form)
+ self.SetPyData(self.form._treeItemFormProperties,
ObjectMenu(self.instance,None))
+ self.SetPyData(self.form._treeItemDataSources,
ObjectMenu(self.instance,None))
+ self.SetPyData(self.form._treeItemNamedTriggers,
ObjectMenu(self.instance,None))
+ self.SetPyData(self.form._treeItemPageLayout,
ObjectMenu(self.instance,None))
form.walk(self.inventoryLoadedItems)
@@ -134,7 +138,8 @@
def OnTreeItemSelected(self, event):
if self.__handler == None:
object = self.GetPyData(event.GetItem())
- if object != None:
+
+ if object != None and not isinstance(object, ObjectMenu):
self.instance.onSetCurrentObject(object, __name__)
else:
self.instance.onSetCurrentObject(None, __name__)
@@ -144,6 +149,8 @@
object = self.GetPyData(id)
self.EnsureVisible(id)
self.SelectItem(id)
- if object != None:
+ if isinstance(object, ObjectMenu):
+ self.PopupMenu(object, event.GetPosition())
+ elif object != None:
self.PopupMenu(object._popupMenu, event.GetPosition())
Index: gnue/gnuef/designer/src/TriggerEditor.py
diff -u gnue/gnuef/designer/src/TriggerEditor.py:1.2
gnue/gnuef/designer/src/TriggerEditor.py:1.3
--- gnue/gnuef/designer/src/TriggerEditor.py:1.2 Sun Jun 17 22:41:25 2001
+++ gnue/gnuef/designer/src/TriggerEditor.py Wed Jun 20 15:31:55 2001
@@ -19,7 +19,7 @@
# - Suite 330, Boston, MA 02111-1307, USA.
#
# FILE:
-# PropertyEditor.py
+# TriggerEditor.py
#
# DESCRIPTION:
#
@@ -29,7 +29,7 @@
import sys, os, time
from wxPython.wx import *
-from gnue.common import GDebug, GConfig
+from gnue.common import GDebug, GConfig, GParser
from gnue.forms import GFForm, GFInstance, GFParser, GFObjects, GFTrigger,
GFLibrary, UIwxpython
from GFDesigner import *
@@ -41,16 +41,41 @@
self.SetSize(parent.GetClientSize())
self.editor.SetSize(self.GetClientSize())
parent.SetSize(self.GetSize())
+ self.object = None
parent.Refresh()
self.parent = parent
self.instance = instance
self.form = form
+ self.editor.SetEditable(0)
+# This isn't working! Argh!!!!!
+# EVT_KILL_FOCUS(self.editor, self.OnKillFocus)
+# So I'll do this instead (slower)
+ EVT_TEXT(self, self.editor.GetId(), self.OnKillFocus)
+ self.__ignoreevent = 0
def onSetCurrentObject (self, object, handler):
if object == None:
return
if handler != __name__:
- pass
+ if isinstance(object, GFTrigger.GFTrigger):
+ self.__ignoreevent = 1
+ self.editor.SetValue(object.getChildrenAsContent())
+ self.__ignoreevent = 0
+ self.object = object
+ if not len(self.object._children):
+ GParser.GContent(object, "")
+ elif len(self.object._children) > 1:
+ content = self.object.getChildrenAsContent()
+ self.object._children = []
+ GParser.GContent(self.object, "")
+ self.editor.SetEditable(1)
+
+ def OnKillFocus(self, event):
+# if object != None:
+# object._children = []
+ if self.object != None and not self.__ignoreevent:
+ self.object._children[0]._content = self.editor.GetValue()
+ print "Set"
def onCreateObject (self, object, handler):
if object == None:
@@ -70,4 +95,5 @@
return
if handler != __name__:
pass
+
- gnue/gnuef/designer/src Incubator.py Instance.p...,
Jason Cater <=