commit-gnue
[Top][All Lists]
Advanced

[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
+
 



reply via email to

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