commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer/src base/Incubator.py base/PopupM...


From: Jason Cater
Subject: gnue/designer/src base/Incubator.py base/PopupM...
Date: Fri, 20 Dec 2002 23:52:33 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/12/20 23:52:32

Modified files:
        designer/src/base: Incubator.py PopupMenu.py TemplateBase.py 
                           TemplateParser.py 
        designer/src/base/tools: DataSourceEditor.py 
        designer/src/forms: Incubator.py Instance.py TemplateSupport.py 
        designer/src/forms/LayoutEditor: DisplayDropTarget.py 
                                         LayoutEditor.py 
        designer/src/navigator: Incubator.py Instance.py 
                                TemplateSupport.py 
        designer/src/reports: Incubator.py Instance.py 
                              TemplateSupport.py 
        designer/src/schema: Incubator.py Instance.py TemplateSupport.py 
        designer/src/schema/DiaEditor: VisualEditor.py 

Log message:
        * Move from Incubator being a module to being a class; all 
Incubator.xxx() references should now be instance.incubator.xxx()
        * Simplified the Incubator interface
        * Removed redundency in Incubator.createObject

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/Incubator.py.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/PopupMenu.py.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/TemplateBase.py.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/TemplateParser.py.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/tools/DataSourceEditor.py.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Incubator.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Instance.py.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/TemplateSupport.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.55&tr2=1.56&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/navigator/Incubator.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/navigator/Instance.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/navigator/TemplateSupport.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/reports/Incubator.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/reports/Instance.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/reports/TemplateSupport.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/Incubator.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/Instance.py.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/TemplateSupport.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/DiaEditor/VisualEditor.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text

Patches:
Index: gnue/designer/src/base/Incubator.py
diff -c gnue/designer/src/base/Incubator.py:1.14 
gnue/designer/src/base/Incubator.py:1.15
*** gnue/designer/src/base/Incubator.py:1.14    Fri Jun 28 00:03:37 2002
--- gnue/designer/src/base/Incubator.py Fri Dec 20 23:52:31 2002
***************
*** 27,53 ****
  # NOTES:
  #
  
! from gnue.common import GDebug
  
! def calcDependencies(elements, elementMapping):
  
!   for tag in elements.keys():
!     t = elements[tag]
  
!     if t.has_key('UsableBySiblings'):
!       cascade = t['UsableBySiblings']
!     else:
!       cascade = 0
! 
!     if t.has_key('ParentTags'):
!       parents = t['ParentTags']
!     else:
!       parents = None
! 
!     if parents != None:
!       for parent in parents:
!         if elementMapping.has_key(parent):
!           elementMapping[parent].append(tag)
!         else:
!           elementMapping[parent] = [tag]
  
--- 27,160 ----
  # NOTES:
  #
  
! from gnue.common import GDebug, GParserHelpers
  
! class BaseIncubator:
!   elements = []
  
!   ##
!   ##  Reparent an object
!   ##
!   def reparentObject(self, rootObject, object, newParent):
!     if object._parent == newParent:
!       return
  
!     # TODO
! 
! 
!   ##
!   ##  Create a new object
!   ##
!   def createObject(self, rootObject, tag,
!            parent, attributes={}, select=1):
! 
! 
!     GDebug.printMesg(3,'Creating a "%s" object' % tag)
!     GDebug.printMesg(6,"Object's parent is %s" % parent)
! 
!     try:
!       name = attributes['name']
!     except KeyError:
!       name = self.instance.getNextGenericName(tag)
! 
!     try:
!       objclass = self.elements[tag]['BaseClass']
!       if self.elements[tag].has_key('Attributes'):
!         attrs = self.elements[tag]['Attributes']
!       else:
!         attrs = {}
!     except KeyError:
!       GDebug.printMesg(1, "Attempted to create a '%s', "
!                           "but I don't know what to do!" % tag)
!       return 1
! 
!     o = objclass(parent)
! 
!     # Add any GContent
!     try:
!       GParserHelpers.GContent(o, attributes['_content_'])
!     except KeyError:
!       pass
! 
!     # Pull default values for any attributes not supplied
!     for attr in attrs.keys():
!       if not attributes.has_key(attr):
!         if attrs[attr].has_key('Default'):
!           attributes[attr] = attrs[attr]['Typecast'](attrs[attr]['Default'])
! 
! 
!     for attr in attributes.keys():
!       if attrs.has_key(attr):
!         o.__dict__[attr] = attributes[attr]
!       else:
!         self._handleUnknownAttribute(tag, o, attr, attributes[attr])
! 
!     o.name = name
!     self.instance.nameMappings[o.name] = o
!     o._buildObject()
!     self.instance.dispatchEvent('ObjectCreated',object=o, originator=__name__)
!     if select:
!       self.instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
!     return o
! 
!   ##
!   ##  Delete an object
!   ##
!   def deleteObject(self, rootObject, object, newCurrentObject=None, 
firstRun=1):
! 
!     if firstRun:
!       newCurrentObject = parent = object._parent
! 
!     for child in object._children:
!       if not child._type == '_content_':
!         self.deleteObject(rootObject, child, firstRun=0)
! 
!     self.instance.dispatchEvent('ObjectDeleted',object=object, 
originator=__name__)
! 
!     if firstRun:
!       o = parent
!       while o._parent:
!         o._buildObject()
!         o = o._parent
! 
!       if newCurrentObject:
!         instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
! 
!   ##
!   ##  Internal stuff
!   ##
! 
!   def __init__(self, instance):
!     self.instance = instance
! 
!     # Figure out tag dependencies
!     self._calcDependencies()
! 
! 
!   def _calcDependencies(self):
!     self.elementMapping = elementMapping = {}
!     elements = self.elements
! 
!     for tag in elements.keys():
!       t = elements[tag]
! 
!       try:
!         cascade = t['UsableBySiblings']
!       except KeyError:
!         cascade = 0
! 
!       if t.has_key('ParentTags'):
!         parents = t['ParentTags']
!       else:
!         parents = None
! 
!       if parents != None:
!         for parent in parents:
!           try:
!             elementMapping[parent].append(tag)
!           except KeyError:
!             elementMapping[parent] = [tag]
! 
!   def _handleUnknownAttribute(self, tag, object, attr, value):
!     return
  
Index: gnue/designer/src/base/PopupMenu.py
diff -c gnue/designer/src/base/PopupMenu.py:1.15 
gnue/designer/src/base/PopupMenu.py:1.16
*** gnue/designer/src/base/PopupMenu.py:1.15    Thu Oct 31 21:40:53 2002
--- gnue/designer/src/base/PopupMenu.py Fri Dec 20 23:52:31 2002
***************
*** 35,41 ****
  class ActionMenu(wxMenu):
    def __init__(self, instance, object, parent=None, text=None, 
parentText=None):
      wxMenu.__init__(self, text)
!     self._product_instance = instance
      self.__parent = parent
      self._object = object
      self._newMap = {}
--- 35,41 ----
  class ActionMenu(wxMenu):
    def __init__(self, instance, object, parent=None, text=None, 
parentText=None):
      wxMenu.__init__(self, text)
!     self.instance = instance
      self.__parent = parent
      self._object = object
      self._newMap = {}
***************
*** 99,118 ****
            self.AppendMenu(wxNewId(), hasattr(child,'name') and child.name or \
              string.upper(child._type[2]) + \
              string.lower(child._type[3:]),
!             PageMenu(self._product_instance, child, self.x, self.y))
  
  
    def addCreateTag(self, tag, text):
      tid = wxNewId()
      self._newMap[tid] = tag
      self.Append(tid, text)
!     EVT_MENU(self._product_instance, tid, self.OnCreateObject)
  
  
    def OnEditProperties(self, event):
!     self._product_instance.propertyEditorWindow.Show(1)
!     self._product_instance.propertyEditorWindow.Raise()
!     self._product_instance.propertyEditorWindow.SetFocus()
  
    def OnEditEvent(self, event):
      pass
--- 99,118 ----
            self.AppendMenu(wxNewId(), hasattr(child,'name') and child.name or \
              string.upper(child._type[2]) + \
              string.lower(child._type[3:]),
!             PageMenu(self.instance, child, self.x, self.y))
  
  
    def addCreateTag(self, tag, text):
      tid = wxNewId()
      self._newMap[tid] = tag
      self.Append(tid, text)
!     EVT_MENU(self.instance, tid, self.OnCreateObject)
  
  
    def OnEditProperties(self, event):
!     self.instance.propertyEditorWindow.Show(1)
!     self.instance.propertyEditorWindow.Raise()
!     self.instance.propertyEditorWindow.SetFocus()
  
    def OnEditEvent(self, event):
      pass
***************
*** 120,140 ****
    def OnCreateObject(self, event):
      tag = self._newMap[event.GetId()]
      GDebug.printMesg(4,'Creating object %s with id %s'%(tag, event.GetId()))
!     self._product_instance.incubator.createObject(self._product_instance, 
self._product_instance.rootObject, tag,
!       parentHint=self._object,
!       attributes=hasattr(self,'x') and {'x': self.x, 'y': self.y} or {} )
  
    def OnCreateDataSource(self, event):
!     self._product_instance.incubator.createObject(self._product_instance, 
self._product_instance.rootObject, _('datasource'))
  
    def OnCreateNamedTrigger(self, event):
!     self._product_instance.incubator.createObject(self._product_instance, 
self._product_instance.rootObject, _('trigger'))
  
    def OnCreatePage(self, event):
!     self._product_instance.incubator.createObject(self._product_instance, 
self._product_instance.rootObject, _('page'))
  
    def OnDeleteObject(self, event):
!     self._product_instance.incubator.deleteObject(self._product_instance, 
self._product_instance.rootObject, self._object)
  
    def OnReorderLayout(self, event):
      unqId = 0
--- 120,140 ----
    def OnCreateObject(self, event):
      tag = self._newMap[event.GetId()]
      GDebug.printMesg(4,'Creating object %s with id %s'%(tag, event.GetId()))
!     self.instance.incubator.createObject(self.instance.rootObject, tag,
!       self._object,
!       attributes=hasattr(self,'Char__x') and {'Char:x': self.Char__x, 
'Char:y': self.Char__y} or {} )
  
    def OnCreateDataSource(self, event):
!     self.instance.incubator.createObject(self.instance.rootObject, 
'datasource')
  
    def OnCreateNamedTrigger(self, event):
!     self.instance.incubator.createObject(self.instance.rootObject, 'trigger')
  
    def OnCreatePage(self, event):
!     self.instance.incubator.createObject(self.instance.rootObject, 'page')
  
    def OnDeleteObject(self, event):
!     self.instance.incubator.deleteObject(self.instance.rootObject, 
self._object)
  
    def OnReorderLayout(self, event):
      unqId = 0
***************
*** 157,163 ****
          object._popupMenu.OnReorderLayout(event)
          object.__savedChildren = object._children[:]
          for o2 in object.__savedChildren:
!           self._product_instance.onDeleteObject(o2, __name__)
  
          oid = "%5d.%5d.%5d" % (object._upperY, object._upperX, unqId)
          unqId = unqId + 1
--- 157,163 ----
          object._popupMenu.OnReorderLayout(event)
          object.__savedChildren = object._children[:]
          for o2 in object.__savedChildren:
!           self.instance.onDeleteObject(o2, __name__)
  
          oid = "%5d.%5d.%5d" % (object._upperY, object._upperX, unqId)
          unqId = unqId + 1
***************
*** 177,210 ****
            navObjects[oid] = object
  
        # Notify everyone that this object was deleted
!       self._product_instance.onDeleteObject(object, __name__)
  
      self._object._children = []
  
      # First, add back triggers
      for object in triggerObjects:
        self._object._children.append(object)
!       self._product_instance.onCreateObject(object, __name__)
  
  
      # Next, add back hidden objects
      for object in hiddenObjects:
        self._object._children.append(object)
!       self._product_instance.onCreateObject(object, __name__)
  
      # Now, add hidden objects
      boxes = boxObjects.keys()
      boxes.sort()
      for box in boxes:
        self._object._children.append(boxObjects[box])
!       self._product_instance.onCreateObject(boxObjects[box], __name__)
  
      # The rest of the objects (other than blocks) go here
      nav = navObjects.keys()
      nav.sort()
      for n in nav:
        self._object._children.append(navObjects[n])
!       self._product_instance.onCreateObject(navObjects[n], __name__)
  
      # And, finally, any child blocks
      blocks = blockObjects.keys()
--- 177,210 ----
            navObjects[oid] = object
  
        # Notify everyone that this object was deleted
!       self.instance.onDeleteObject(object, __name__)
  
      self._object._children = []
  
      # First, add back triggers
      for object in triggerObjects:
        self._object._children.append(object)
!       self.instance.onCreateObject(object, __name__)
  
  
      # Next, add back hidden objects
      for object in hiddenObjects:
        self._object._children.append(object)
!       self.instance.onCreateObject(object, __name__)
  
      # Now, add hidden objects
      boxes = boxObjects.keys()
      boxes.sort()
      for box in boxes:
        self._object._children.append(boxObjects[box])
!       self.instance.onCreateObject(boxObjects[box], __name__)
  
      # The rest of the objects (other than blocks) go here
      nav = navObjects.keys()
      nav.sort()
      for n in nav:
        self._object._children.append(navObjects[n])
!       self.instance.onCreateObject(navObjects[n], __name__)
  
      # And, finally, any child blocks
      blocks = blockObjects.keys()
***************
*** 212,221 ****
      for block in blocks:
        children = blockObjects[block].__savedChildren[:]
        self._object._children.append(blockObjects[block])
!       self._product_instance.onCreateObject(blockObjects[block], __name__)
        for child in children:
          blockObjects[block]._children.append(child)
!         self._product_instance.onCreateObject(child,__name__)
  
  
  class CreateObjectMenu(ActionMenu):
--- 212,221 ----
      for block in blocks:
        children = blockObjects[block].__savedChildren[:]
        self._object._children.append(blockObjects[block])
!       self.instance.onCreateObject(blockObjects[block], __name__)
        for child in children:
          blockObjects[block]._children.append(child)
!         self.instance.onCreateObject(child,__name__)
  
  
  class CreateObjectMenu(ActionMenu):
***************
*** 226,234 ****
  
      self.AppendSeparator()
      tag = string.lower(object._type[2:])
!     if self._product_instance.incubator.elementMapping.has_key(tag):
!       self._product_instance.incubator.elementMapping[tag].sort()
!       for element in self._product_instance.incubator.elementMapping[tag]:
          descr = string.upper(element[0])+string.lower(element[1:])
          if descr == 'Import': 
            descr = 'Import Library'
--- 226,234 ----
  
      self.AppendSeparator()
      tag = string.lower(object._type[2:])
!     if self.instance.incubator.elementMapping.has_key(tag):
!       self.instance.incubator.elementMapping[tag].sort()
!       for element in self.instance.incubator.elementMapping[tag]:
          descr = string.upper(element[0])+string.lower(element[1:])
          if descr == 'Import': 
            descr = 'Import Library'
Index: gnue/designer/src/base/TemplateBase.py
diff -c gnue/designer/src/base/TemplateBase.py:1.21 
gnue/designer/src/base/TemplateBase.py:1.22
*** gnue/designer/src/base/TemplateBase.py:1.21 Sun Dec  1 17:53:04 2002
--- gnue/designer/src/base/TemplateBase.py      Fri Dec 20 23:52:31 2002
***************
*** 117,127 ****
      instance = self.parser.instance
      if content:
        attr = {'_content_': content}
!     else: 
        attr = {}
      attr.update(attributes)
!     return instance.incubator.createObject(instance, instance.rootObject, 
!                         tag, parent=parent, attributes=attr, select=0)
  
  
    def SetContent(self, element, content):
--- 117,127 ----
      instance = self.parser.instance
      if content:
        attr = {'_content_': content}
!     else:
        attr = {}
      attr.update(attributes)
!     return instance.incubator.createObject(instance.rootObject,
!                         tag, parent, attributes=attr, select=0)
  
  
    def SetContent(self, element, content):
Index: gnue/designer/src/base/TemplateParser.py
diff -c gnue/designer/src/base/TemplateParser.py:1.25 
gnue/designer/src/base/TemplateParser.py:1.26
*** gnue/designer/src/base/TemplateParser.py:1.25       Fri Dec 20 18:56:05 2002
--- gnue/designer/src/base/TemplateParser.py    Fri Dec 20 23:52:31 2002
***************
*** 41,47 ****
      self.rootObject = rootObject
      self.currentObject = currentObject
  
!     self.elements = 
dyn_import('gnue.designer.%s.Incubator'%templateInformation['Product']).elements
  
  
    def run(self, **params):
--- 41,47 ----
      self.rootObject = rootObject
      self.currentObject = currentObject
  
!     self.elements = instance.incubator.elements
  
  
    def run(self, **params):
Index: gnue/designer/src/base/tools/DataSourceEditor.py
diff -c gnue/designer/src/base/tools/DataSourceEditor.py:1.29 
gnue/designer/src/base/tools/DataSourceEditor.py:1.30
*** gnue/designer/src/base/tools/DataSourceEditor.py:1.29       Fri Dec 20 
18:56:05 2002
--- gnue/designer/src/base/tools/DataSourceEditor.py    Fri Dec 20 23:52:32 2002
***************
*** 341,354 ****
        attributes['database'] = \
            hasattr(self.current,'database') and self.current.database or ''
  
!     self.instance.incubator.createObject(self.instance, self.rootObject, 
'datasource',
                             parent=self.rootObject, attributes=attributes)
  
  
    def OnDeleteDSSelected(self, event):
  
      if self.current is not None:
!       self.instance.onDeleteObject(self.current, __name__)
  
  
  
--- 341,354 ----
        attributes['database'] = \
            hasattr(self.current,'database') and self.current.database or ''
  
!     self.instance.incubator.createObject(self.rootObject, 'datasource',
                             parent=self.rootObject, attributes=attributes)
  
  
    def OnDeleteDSSelected(self, event):
  
      if self.current is not None:
!       self.dispatchEvent('ObjectDeleted',object=self.current, 
originator=__name__)
  
  
  
Index: gnue/designer/src/forms/Incubator.py
diff -c gnue/designer/src/forms/Incubator.py:1.9 
gnue/designer/src/forms/Incubator.py:1.10
*** gnue/designer/src/forms/Incubator.py:1.9    Fri Dec 20 18:56:05 2002
--- gnue/designer/src/forms/Incubator.py        Fri Dec 20 23:52:32 2002
***************
*** 29,151 ****
  
  from gnue.common import GDebug, GParserHelpers
  from gnue.forms import GFParser, GFForm
! from gnue.designer.base.Incubator import *
  
! def createObject(instance, form, tag, type=None, parent=None,
!          parentHint=None, attributes={}, select=1):
  
  
!   GDebug.printMesg(3,'Creating a "%s" object' % tag)
!   GDebug.printMesg(6,"Object's parent is %s" % parentHint)
!   
!   try:
!     name = attributes['name']
!   except KeyError:
!     name = instance.getNextGenericName(tag)
! 
!   try:
!     objclass = elements[tag]['BaseClass']
!     if elements[tag].has_key('Attributes'):
!       attrs = elements[tag]['Attributes']
!     else:
!       attrs = {}
!   except KeyError:
!     GDebug.printMesg(1, "Attempted to create a '%s', "
!                         "but I don't know what to do!" % tag)
!     return 1
! 
! 
!   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 ('datasource','import'):
!     parent = form
!   elif tag in ('page',):
!     parent = form._layout
! 
!   o = objclass(parent or parentHint)
! 
!   # Add any GContent
!   try:
!     GParserHelpers.GContent(o, attributes['_content_'])
!   except KeyError:
!     pass
! 
!   # Pull default values for any attributes not supplied
!   for attr in attrs.keys():
!     if not attributes.has_key(attr):
!       if attrs[attr].has_key('Default'):
!         attributes[attr] = attrs[attr]['Typecast'](attrs[attr]['Default'])
!       elif attr in ('x','y',):
!         attributes[attr] = 0
!       elif attr in ('height',):
!         if tag in ('box','scrollbar'):
!           attributes[attr] = 4
!         else:
!           attributes[attr] = 1
!       elif attr == 'width':
!         if tag in ('scrollbar',):
!           attributes[attr] = 1
!         else:
!           attributes[attr] = 10
!       elif attr in ('text','label'):
!         attributes[attr] = name
! 
!   for attr in attributes.keys():
!     if attrs.has_key(attr):
!       o.__dict__[attr] = attributes[attr]
!     elif attr.find(':')+1:
!       # Hackery for forms namespace support
!       o.__dict__[attr.replace(':','__')] = attributes[attr]
! 
! 
!   o.name = name
!   instance.nameMappings[o.name] = o
!   o._buildObject()
!   instance.dispatchEvent('ObjectCreated',object=o, originator=__name__)
!   if select:
!     instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
!   return o
! 
! 
! def reparentObject(instance, form, object, newParent):
!   if object._parent == newParent:
!     return
! 
!   # TODO
!   pass
! 
! 
! def deleteObject(instance, form, object, newCurrentObject=None, firstRun=1):
! 
!   if firstRun:
!     newCurrentObject = parent = object._parent
! 
!   for child in object._children:
!     if not child._type == '_content_':
!       deleteObject(instance, form, child, firstRun=0)
! 
!   instance.dispatchEvent('ObjectDeleted',object=object, originator=__name__)
! 
!   if firstRun:
!     o = parent
!     while not isinstance(o, GFForm.GFForm):
!       o._buildObject()
!       o = o._parent
! 
!     if newCurrentObject:
!       instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
! 
! 
! 
! #
! # Figure out tag dependencies
! #
! elements = GFParser.getXMLelements()
! elementMapping = {}
! calcDependencies(elements, elementMapping)
  
--- 29,42 ----
  
  from gnue.common import GDebug, GParserHelpers
  from gnue.forms import GFParser, GFForm
! from gnue.designer.base.Incubator import BaseIncubator
  
! class Incubator(BaseIncubator):
  
+   elements = GFParser.getXMLelements()
  
!   def _handleUnknownAttribute(self, tag, object, attr, value):
!     # Hackery for forms Layout Management (namespace) support
!     if attr.find(':')+1:
!       object.__dict__[attr.replace(':','__')] = value
  
Index: gnue/designer/src/forms/Instance.py
diff -c gnue/designer/src/forms/Instance.py:1.25 
gnue/designer/src/forms/Instance.py:1.26
*** gnue/designer/src/forms/Instance.py:1.25    Fri Dec 20 18:56:05 2002
--- gnue/designer/src/forms/Instance.py Fri Dec 20 23:52:32 2002
***************
*** 32,38 ****
  from gnue.designer.forms import properties as formProperties
  from gnue.designer.base.Instance import BaseInstance
  from gnue.designer.base import PopupMenu
! import Incubator
  import wizards
  from WizardRunner import WizardRunner
  
--- 32,38 ----
  from gnue.designer.forms import properties as formProperties
  from gnue.designer.base.Instance import BaseInstance
  from gnue.designer.base import PopupMenu
! from Incubator import Incubator
  import wizards
  from WizardRunner import WizardRunner
  
***************
*** 55,61 ****
  
    def __init__(self, app, *args, **params):
  
!     self.incubator = Incubator
      self.properties = formProperties
      self.wizardRunner = WizardRunner
  
--- 55,61 ----
  
    def __init__(self, app, *args, **params):
  
!     self.incubator = Incubator(self)
      self.properties = formProperties
      self.wizardRunner = WizardRunner
  
***************
*** 72,78 ****
  
      # Build a list of positionable widgets
      self._positionableList = []
!     elements = Incubator.elements
      for tag in elements.keys():
        try:
          if elements['Positionable']:
--- 72,78 ----
  
      # Build a list of positionable widgets
      self._positionableList = []
!     elements = self.incubator.elements
      for tag in elements.keys():
        try:
          if elements['Positionable']:
Index: gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py
diff -c gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.7 
gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.8
*** gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.7       Thu Jul 
 4 15:01:34 2002
--- gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py   Fri Dec 20 
23:52:32 2002
***************
*** 29,35 ****
  import sys, string
  from Utils import *
  from gnue.common import GDebug
- from gnue.designer.forms import Incubator
  
  import cPickle
  
--- 29,34 ----
***************
*** 61,66 ****
--- 60,67 ----
    # do something with it.
    def OnData(self, x, y, d):
  
+     instance = self.editor.instance
+ 
      # copy the data from the drag source to our data object
      if self.GetData():
        # convert it back to our format
***************
*** 110,120 ****
                    return d # TODO: This should actually return a failure
  
                  # Create a parent block
!                 parent = Incubator.createObject(
!                             self.editor._instance,
!                             self.editor._instance.rootObject,
                              'block',
!                             parent=self.editor.page,
                              attributes={'datasource':datasource})
              else:
                for child in self.editor.page._children:
--- 111,120 ----
                    return d # TODO: This should actually return a failure
  
                  # Create a parent block
!                 parent = instance.incubator.createObject(
!                             instance.rootObject,
                              'block',
!                             self.editor.page,
                              attributes={'datasource':datasource})
              else:
                for child in self.editor.page._children:
***************
*** 161,171 ****
                  y += 1
  
              # Create a label
!             Incubator.createObject(
!                     self.editor._instance,
!                     self.editor._instance.rootObject,
                      'label',
!                     parent=self.editor.page,
                      attributes={'x': lx,
                                  'y': ly,
                                  'width': len(label),
--- 161,170 ----
                  y += 1
  
              # Create a label
!             instance.incubator.createObject(
!                     instance.rootObject,
                      'label',
!                     self.editor.page,
                      attributes={'x': lx,
                                  'y': ly,
                                  'width': len(label),
***************
*** 194,204 ****
          # Create our new object
          #
          if not params['Type'] in ('selectedWidgets',):
!           object = Incubator.createObject(
!             self.editor._instance,
!             self.editor._instance.rootObject,
              params['Type'],
!             parent=parent,
              attributes=attributes)
  
            if params['Type'] in ('entry',):
--- 193,202 ----
          # Create our new object
          #
          if not params['Type'] in ('selectedWidgets',):
!           object = instance.incubator.createObject(
!             instance.rootObject,
              params['Type'],
!             parent,
              attributes=attributes)
  
            if params['Type'] in ('entry',):
***************
*** 218,228 ****
  
  
                if triggertext:
!                 Incubator.createObject(
!                     self.editor._instance,
!                     self.editor._instance.rootObject,
                      'trigger',
!                     parent = object,
                      attributes = {
                        '_content_': triggertext,
                        'type': 'PRE-INSERT',
--- 216,225 ----
  
  
                if triggertext:
!                 instance.incubator.createObject(
!                     instance.rootObject,
                      'trigger',
!                     object,
                      attributes = {
                        '_content_': triggertext,
                        'type': 'PRE-INSERT',
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.55 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.56
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.55   Fri Dec 20 
18:56:05 2002
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Fri Dec 20 
23:52:32 2002
***************
*** 32,38 ****
  from gnue.forms import GFObjects
  from gnue.forms.uidrivers.wx import UIdriver as UIwxpython
  from gnue.designer.base.PopupMenu import PageMenu
- from gnue.designer.forms import Incubator
  from gnue.designer.base.TemplateParser import TemplateParser
  from gnue.designer.base.ToolPanel import *
  from gnue.common.events import Event
--- 32,37 ----
***************
*** 56,62 ****
  
      # TODO: blah.... historical reasons
      self._instance = self.instance
!     
      # TODO: this needs to go away... requires toolbar to be on main frame
      self.frame = self.instance
  
--- 55,61 ----
  
      # TODO: blah.... historical reasons
      self._instance = self.instance
! 
      # TODO: this needs to go away... requires toolbar to be on main frame
      self.frame = self.instance
  
Index: gnue/designer/src/forms/TemplateSupport.py
diff -c gnue/designer/src/forms/TemplateSupport.py:1.4 
gnue/designer/src/forms/TemplateSupport.py:1.5
*** gnue/designer/src/forms/TemplateSupport.py:1.4      Fri Dec 20 18:56:05 2002
--- gnue/designer/src/forms/TemplateSupport.py  Fri Dec 20 23:52:32 2002
***************
*** 28,34 ****
  #
  
  from gnue.designer.base.TemplateBase import *
- import Incubator
  from gnue.forms.GFForm import GFForm
  
  
--- 28,33 ----
Index: gnue/designer/src/navigator/Incubator.py
diff -c gnue/designer/src/navigator/Incubator.py:1.1 
gnue/designer/src/navigator/Incubator.py:1.2
*** gnue/designer/src/navigator/Incubator.py:1.1        Fri Jun 28 00:03:38 2002
--- gnue/designer/src/navigator/Incubator.py    Fri Dec 20 23:52:32 2002
***************
*** 0 ****
--- 1,37 ----
+ #
+ # This file is part of GNU Enterprise.
+ #
+ # GNU Enterprise is free software; you can redistribute it
+ # and/or modify it under the terms of the GNU General Public
+ # License as published by the Free Software Foundation; either
+ # version 2, or (at your option) any later version.
+ #
+ # GNU Enterprise is distributed in the hope that it will be
+ # useful, but WITHOUT ANY WARRANTY; without even the implied
+ # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ # PURPOSE. See the GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public
+ # License along with program; see the file COPYING. If not,
+ # write to the Free Software Foundation, Inc., 59 Temple Place
+ # - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # Copyright 2001-2002 Free Software Foundation
+ #
+ # FILE:
+ # Incubator.py
+ #
+ # DESCRIPTION:
+ # Creates objects to be added to the object
+ #
+ # NOTES:
+ #
+ 
+ from gnue.common import GDebug
+ from gnue.navigator import GNParser
+ from gnue.designer.base.Incubator import BaseIncubator
+ 
+ class Incubator(BaseIncubator):
+ 
+   elements = GNParser.getXMLelements()
+ 
Index: gnue/designer/src/navigator/Instance.py
diff -c gnue/designer/src/navigator/Instance.py:1.9 
gnue/designer/src/navigator/Instance.py:1.10
*** gnue/designer/src/navigator/Instance.py:1.9 Fri Dec 20 18:56:05 2002
--- gnue/designer/src/navigator/Instance.py     Fri Dec 20 23:52:32 2002
***************
*** 29,34 ****
--- 29,35 ----
  
  from gnue.designer.navigator import properties as navProperties
  from gnue.designer.base.Instance import BaseInstance
+ from Incubator import Incubator
  
  # Tool support...
  from LayoutEditor import LayoutEditor
***************
*** 46,52 ****
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
! 
     self.properties = navProperties
  
     BaseInstance.__init__(self, app, *args, **params)
--- 47,53 ----
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
!    self.incubator = Incubator(self)
     self.properties = navProperties
  
     BaseInstance.__init__(self, app, *args, **params)
Index: gnue/designer/src/navigator/TemplateSupport.py
diff -c gnue/designer/src/navigator/TemplateSupport.py:1.2 
gnue/designer/src/navigator/TemplateSupport.py:1.3
*** gnue/designer/src/navigator/TemplateSupport.py:1.2  Fri Dec 20 18:56:05 2002
--- gnue/designer/src/navigator/TemplateSupport.py      Fri Dec 20 23:52:32 2002
***************
*** 28,34 ****
  #
  
  from gnue.designer.base.TemplateBase import *
- import Incubator
  
  # TODO
  def createRootObject(instance):
--- 28,33 ----
Index: gnue/designer/src/reports/Incubator.py
diff -c gnue/designer/src/reports/Incubator.py:1.5 
gnue/designer/src/reports/Incubator.py:1.6
*** gnue/designer/src/reports/Incubator.py:1.5  Fri Dec 20 18:56:05 2002
--- gnue/designer/src/reports/Incubator.py      Fri Dec 20 23:52:32 2002
***************
*** 29,147 ****
  
  from gnue.common import GDebug, GParserHelpers
  from gnue.reports import GRParser, GRReport, GRLayout
! from gnue.designer.base.Incubator import *
  
! def createObject(instance, report, tag, type=None, parent=None,
!          parentHint=None, attributes={}, select=1):
  
  
!   GDebug.printMesg(3,'Creating a "%s" object' % tag)
!   GDebug.printMesg(6,"Object's parent is %s" % parentHint)
! 
!   try:
!     name = attributes['name']
!   except KeyError:
!     if tag.find(':'):
!       name = tag[tag.find(':')+1:]
!     else:
!       name = instance.getNextGenericName(tag)
! 
!   try:
!     objclass = elements[tag]['BaseClass']
!     if elements[tag].has_key('Attributes'):
!       attrs = elements[tag]['Attributes']
!     else:
!       attrs = {}
!   except KeyError:
      if tag.find(':'):
!       objclass = GRLayout.GRPassThru
!       attrs = attributes
      else:
!       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 = report
!     else:
!       parent = parent or parentHint
  
!   o = objclass(parent or parentHint)
!   
!   # Add any GContent
!   try:
!     GParserHelpers.GContent(o, attributes['_content_'])
!   except KeyError:
!     pass
! 
!   # Pull default values for any attributes not supplied
!   for attr in attrs.keys():
!     if not attributes.has_key(attr):
!       if attrs[attr].has_key('Default'):
!         attributes[attr] = attrs[attr]['Typecast'](attrs[attr]['Default'])
! 
!   for attr in attributes.keys():
!     if attrs.has_key(attr):
!       o.__dict__[attr] = attributes[attr]
!     elif attr.find(':')+1:
!       # Hackery for reports namespace support
!       o.__dict__[attr.replace(':','__')] = attributes[attr]
! 
!   if isinstance(o, GRLayout.GRPassThru):
      o._xmltag = tag[tag.find(':')+1:]
      o._listedAttributes = attributes.keys()
!     # TODO: GNUe:Reports:Standard ?
!     o._xmlnamespace = report.findChildOfType('GRLayout')._xmlchildnamespace
!     #'GNUe:Reports:SimpleTabulation'
! 
!   o.name = name
!   instance.nameMappings[o.name] = o
!   o._buildObject()
!   instance.dispatchEvent('ObjectCreated',object=o, originator=__name__)
!   if select:
!     instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
!   return o
! 
! 
! def reparentObject(instance, report, object, newParent):
!   if object._parent == newParent:
!     return
! 
!   # TODO
!   pass
! 
! 
! def deleteObject(instance, report, object, newCurrentObject=None, firstRun=1):
! 
!   if firstRun:
!     newCurrentObject = parent = object._parent
! 
!   for child in object._children:
!     if not child._type == '_content_':
!       deleteObject(instance, form, child, firstRun=0)
! 
!   instance.dispatchEvent('ObjectDeleted',object=object, originator=__name__)
! 
!   if firstRun:
!     o = parent
!     while not isinstance(o, GRReport.GRReport):
!       o._buildObject()
!       o = o._parent
! 
!     if newCurrentObject:
!       instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
! 
! 
! 
! #
! # Figure out tag dependencies
! #
! elements = GRParser.getXMLelements()
! elementMapping = {}
! calcDependencies(elements, elementMapping)
! 
  
--- 29,71 ----
  
  from gnue.common import GDebug, GParserHelpers
  from gnue.reports import GRParser, GRReport, GRLayout
! from gnue.designer.base.Incubator import BaseIncubator
  
! class Incubator(BaseIncubator):
  
+   elements = GRParser.getXMLelements()
  
!   def createObject(self, rootObject, tag, parent, attributes={}, select=1):
!     # Handle GRPassThru
      if tag.find(':'):
!       o = self._handlePassThru(rootObject, tag, parent, attributes, select)
!       if o:
!         self.instance.dispatchEvent('ObjectCreated',object=o, 
originator=__name__)
!         if select:
!           self.instance.dispatchEvent('ObjectSelected',object=object, 
originator=__name__)
!       return o
      else:
!       return BaseIncubator(self, rootObject, tag, parent, attributes, select)
  
  
!   def _handlePassThru(self, rootObject, tag, parent,
!            attributes={}, select=1):
!     name = tag[tag.find(':')+1:]
!     objclass = GRLayout.GRPassThru
!     o = objclass(parent)
! 
!     # Add any GContent
!     try:
!       GParserHelpers.GContent(o, attributes['_content_'])
!     except KeyError:
!       pass
  
!     o.__dict__.update(attributes)
      o._xmltag = tag[tag.find(':')+1:]
      o._listedAttributes = attributes.keys()
!     o._xmlnamespace = 
rootObject.findChildOfType('GRLayout')._xmlchildnamespace
  
+     o.name = name
+     instance.nameMappings[o.name] = o
+     o._buildObject()
+     return o
Index: gnue/designer/src/reports/Instance.py
diff -c gnue/designer/src/reports/Instance.py:1.9 
gnue/designer/src/reports/Instance.py:1.10
*** gnue/designer/src/reports/Instance.py:1.9   Fri Dec 20 18:56:05 2002
--- gnue/designer/src/reports/Instance.py       Fri Dec 20 23:52:32 2002
***************
*** 29,35 ****
  
  from gnue.designer.reports import properties as reportsProperties
  from gnue.designer.base.Instance import BaseInstance
! import Incubator
  import wizards
  
  # Tool support...
--- 29,35 ----
  
  from gnue.designer.reports import properties as reportsProperties
  from gnue.designer.base.Instance import BaseInstance
! from Incubator import Incubator
  import wizards
  
  # Tool support...
***************
*** 48,54 ****
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
!     self.incubator = Incubator
      self.properties = reportsProperties
  
      #self._tableMappings = {}
--- 48,54 ----
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
!     self.incubator = Incubator(self)
      self.properties = reportsProperties
  
      #self._tableMappings = {}
Index: gnue/designer/src/reports/TemplateSupport.py
diff -c gnue/designer/src/reports/TemplateSupport.py:1.6 
gnue/designer/src/reports/TemplateSupport.py:1.7
*** gnue/designer/src/reports/TemplateSupport.py:1.6    Fri Dec 20 18:56:05 2002
--- gnue/designer/src/reports/TemplateSupport.py        Fri Dec 20 23:52:32 2002
***************
*** 28,34 ****
  #
  
  from gnue.designer.base.TemplateBase import *
- import Incubator
  from gnue.reports.GRReport import GRReport
  
  
--- 28,33 ----
Index: gnue/designer/src/schema/DiaEditor/VisualEditor.py
diff -c gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.7 
gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.8
*** gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.7      Fri Dec 20 
18:56:05 2002
--- gnue/designer/src/schema/DiaEditor/VisualEditor.py  Fri Dec 20 23:52:32 2002
***************
*** 30,36 ****
  from wxPython.wx import *
  from VisualTable import *
  from gnue.common.schema.Objects import *
- from gnue.designer.schema.Incubator import *
  from gnue.designer.base.ToolPanel import *
  
  class VisualEditor (ToolPanel):
--- 30,35 ----
***************
*** 360,411 ****
  
      if object._type!='GSSchema':
        menu.AppendSeparator()
!       
        menu.Append(popup_EDIT, "Edit")
        EVT_MENU(self,popup_EDIT,self.onEdit)
  
        menu.Append(popup_RENAME, "Rename")
        EVT_MENU(self,popup_RENAME,self.onRename)
!       
        menu.Append(popup_DUPPL, "Duplicate")
        EVT_MENU(self,popup_DUPPL,self.onDuplicate)
!       
        menu.Append(popup_DEL, "Delete")
        EVT_MENU(self,popup_DEL,self.onDelete)
  
!       
      clickPt = wxPoint(x + self.diagram.GetPosition().x,
                          y + self.diagram.GetPosition().y)
      self.diagram.PopupMenu(menu, clickPt)
      menu.Destroy()
  
-   # TODO: replace "createObject" by "self.instance.incubator" 
- 
    def onNewTable(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new table:')
!   
      if dialog.ShowModal() == wxID_OK:
        tables=self.rootObject.findChildOfType("GSTables")
        if tables==None:
!         tables = createObject(self.instance, self.rootObject, 'tables',
!                               None,None,self.rootObject)
!       createObject(self.instance, self.rootObject, 'table',
!                    None,None,tables,{"name":dialog.GetValue()})
!              
      dialog.Destroy()
  
    def onAddField(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new field:')
!   
      if dialog.ShowModal() == wxID_OK:
!       fields=self.object.findChildOfType("GSFields")          
        if fields==None:
          tbl=self.object.findChildOfType("GSTable")
!         fields=createObject(self.instance, self.rootObject,'fields',
!                             None,None,tbl)
!         
!       createObject(self.instance, self.rootObject, 'field',
!                    None,None,fields,{"name":dialog.GetValue(),
                                       "type":"varchar",
                                       "size":20})
  
--- 359,408 ----
  
      if object._type!='GSSchema':
        menu.AppendSeparator()
! 
        menu.Append(popup_EDIT, "Edit")
        EVT_MENU(self,popup_EDIT,self.onEdit)
  
        menu.Append(popup_RENAME, "Rename")
        EVT_MENU(self,popup_RENAME,self.onRename)
! 
        menu.Append(popup_DUPPL, "Duplicate")
        EVT_MENU(self,popup_DUPPL,self.onDuplicate)
! 
        menu.Append(popup_DEL, "Delete")
        EVT_MENU(self,popup_DEL,self.onDelete)
  
! 
      clickPt = wxPoint(x + self.diagram.GetPosition().x,
                          y + self.diagram.GetPosition().y)
      self.diagram.PopupMenu(menu, clickPt)
      menu.Destroy()
  
    def onNewTable(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new table:')
! 
      if dialog.ShowModal() == wxID_OK:
        tables=self.rootObject.findChildOfType("GSTables")
        if tables==None:
!         tables = self.instance.incubator.createObject(
!                 self.rootObject, 'tables', self.rootObject)
!       self.instance.incubator.createObject(self.rootObject, 'table',
!                    tables, {"name":dialog.GetValue()})
! 
      dialog.Destroy()
  
    def onAddField(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new field:')
! 
      if dialog.ShowModal() == wxID_OK:
!       fields=self.object.findChildOfType("GSFields")
        if fields==None:
          tbl=self.object.findChildOfType("GSTable")
!         fields=self.instance.incubator.createObject(
!              self.rootObject,'fields', tbl)
! 
!       self.instance.incubator.createObject(self.rootObject, 'field',
!                    fields,{"name":dialog.GetValue(),
                                       "type":"varchar",
                                       "size":20})
  
***************
*** 415,442 ****
      tbl=self.object.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self.instance, self.rootObject, 'indexes',
!                               None,None,tbl)
!     idx=createObject(self.instance, self.rootObject, 'index',
!                  None,None,indexes,
!                  {"name":"%s_%s" % (tbl.name,self.object.name)})        
!     createObject(self.instance, self.rootObject, 'index',
!                  None,None,idx,
!                  {"name":self.object.name})        
      self.refresh()
  
    def onAddUniqueIndex(self,event):
!     tbl=self.object.findParentOfType("GSTable")          
!     indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self.instance, self.rootObject, 'indexes',
!                               None,None,tbl)
!     idx=createObject(self.instance, self.rootObject, 'index',
!                  None,None,indexes,
                   {"name":"%s_%s" % (tbl.name,self.object.name),
!                   "unique":"Y"})        
!     createObject(self.instance, self.rootObject, 'index',
!                  None,None,idx,
                   {"name":self.object.name})        
      self.refresh()
  
--- 412,437 ----
      tbl=self.object.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = self.instance.incubator.createObject(
!           self.rootObject, 'indexes', tbl)
!     idx=self.instance.incubator.createObject(
!           self.rootObject, 'index', indexes,
!                  {"name":"%s_%s" % (tbl.name,self.object.name)})
!     self.instance.incubator.createObject(self.rootObject, 'index', idx,
!                  {"name":self.object.name})
      self.refresh()
  
    def onAddUniqueIndex(self,event):
!     tbl=self.object.findParentOfType("GSTable")
!     indexes=tbl.findChildOfType("GSIndexes")
      if indexes==None:
!       indexes = self.instance.incubator.createObject(
!            self.rootObject, 'indexes',tbl)
!     idx=self.instance.incubator.createObject(
!              self.rootObject, 'index', indexes,
                   {"name":"%s_%s" % (tbl.name,self.object.name),
!                   "unique":"Y"})
!     self.instance.incubator.createObject(self.rootObject, 'index', idx,
                   {"name":self.object.name})        
      self.refresh()
  
***************
*** 465,471 ****
      pass
    
    def onDelete(self,event):
!     deleteObject(self.instance, self.rootObject, self.object, firstRun=1)
  
  
    def onLeftClickEvent(self,event):    
--- 460,466 ----
      pass
    
    def onDelete(self,event):
!     self.instance.incubator.deleteObject(self.rootObject, self.object, 
firstRun=1)
  
  
    def onLeftClickEvent(self,event):    
Index: gnue/designer/src/schema/Incubator.py
diff -c gnue/designer/src/schema/Incubator.py:1.6 
gnue/designer/src/schema/Incubator.py:1.7
*** gnue/designer/src/schema/Incubator.py:1.6   Fri Dec 20 18:56:05 2002
--- gnue/designer/src/schema/Incubator.py       Fri Dec 20 23:52:32 2002
***************
*** 29,117 ****
  
  from gnue.common import GDebug
  from gnue.common.schema import GSParser, Objects
! from gnue.designer.base.Incubator import *
  
! def createObject(instance, schema, tag, type=None, parent=None,
!          parentHint=None, attributes={}):
  
  
!   GDebug.printMesg(3,'Creating a "%s" object' % tag)
!   GDebug.printMesg(6,"Object's parent is %s" % parentHint)
! 
!   try:
!     name = attributes['name']
!   except KeyError:
!     name = instance.getNextGenericName(tag)
! 
!   try:
!     objclass = elements[tag]['BaseClass']
!     if elements[tag].has_key('Attributes'):
!       attrs = elements[tag]['Attributes']
!     else:
!       attrs = {}
!   except KeyError:
!     GDebug.printMesg(1, "Attempted to create a '%s', "
!                         "but I don't know what to do!" % tag)
!     return
! 
! 
!   parent = None
!   if tag in ('tables',):
!     parent = schema
! 
!   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].has_key('Default'):
!         attributes[attr] = attrs[attr]['Typecast'](attrs[attr]['Default'])
! 
!   for attr in attributes.keys():
!     if attrs.has_key(attr):
!       o.__dict__[attr] = attributes[attr]
!   o.name = name
!   instance.nameMappings[o.name] = o
!   o._buildObject()
!   instance.dispatchEvent('ObjectCreated',object=o, originator=__name__)
!   instance.dispatchEvent('ObjectSelected',object=object, originator=__name__)
!   return o
! 
! 
! def reparentObject(instance, schema, object, newParent):
!   if object._parent == newParent:
!     return
! 
!   # TODO
!   pass
! 
! 
! def deleteObject(instance, schema, object, newCurrentObject=None, firstRun=1):
! 
!   if firstRun:
!     newCurrentObject = object._parent
!     parent = object._parent
! 
!   for child in object._children:
!     deleteObject(instance, schema, child, firstRun=0)
! 
!   instance.dispatchEvent(events.Event('ObjectDeleted',object=object, 
originator=__name__))
! 
!   if firstRun:
!     o = parent
!     while not isinstance(o, Objects.GSSchema):
!       o._buildObject()
!       o = o._parent
! 
!     if newCurrentObject:
!       instance.dispatchEvent(events.Event('ObjectSelected',object=object, 
originator=__name__))
! 
! 
! 
! #
! # Figure out tag dependencies
! #
! elements = GSParser.getXMLelements()
! elementMapping = {}
! calcDependencies(elements, elementMapping)
! 
--- 29,38 ----
  
  from gnue.common import GDebug
  from gnue.common.schema import GSParser, Objects
! from gnue.designer.base.Incubator import BaseIncubator
  
! class Incubator(BaseIncubator):
  
+   elements = GSParser.getXMLelements()
  
!   
\ No newline at end of file
Index: gnue/designer/src/schema/Instance.py
diff -c gnue/designer/src/schema/Instance.py:1.17 
gnue/designer/src/schema/Instance.py:1.18
*** gnue/designer/src/schema/Instance.py:1.17   Fri Dec 20 18:56:05 2002
--- gnue/designer/src/schema/Instance.py        Fri Dec 20 23:52:32 2002
***************
*** 30,36 ****
  from gnue.designer.schema import properties as schemaProperties
  from gnue.designer.base.Instance import BaseInstance
  from gnue.common.schema import GSParser, Objects
! import Incubator
  import wizards
  
  # Tool support...
--- 30,36 ----
  from gnue.designer.schema import properties as schemaProperties
  from gnue.designer.base.Instance import BaseInstance
  from gnue.common.schema import GSParser, Objects
! from Incubator import Incubator
  import wizards
  
  # Tool support...
***************
*** 47,53 ****
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
!     self.incubator = Incubator
      self.properties = schemaProperties
  
      self._tableMappings = {}
--- 47,53 ----
  class Instance(BaseInstance):
  
    def __init__(self, app, *args, **params):
!     self.incubator = Incubator(self)
      self.properties = schemaProperties
  
      self._tableMappings = {}
Index: gnue/designer/src/schema/TemplateSupport.py
diff -c gnue/designer/src/schema/TemplateSupport.py:1.3 
gnue/designer/src/schema/TemplateSupport.py:1.4
*** gnue/designer/src/schema/TemplateSupport.py:1.3     Fri Dec 20 18:56:05 2002
--- gnue/designer/src/schema/TemplateSupport.py Fri Dec 20 23:52:32 2002
***************
*** 29,35 ****
  
  from gnue.designer.base.TemplateBase import *
  from gnue.common.schema import Objects
- import Incubator
  
  # TODO
  def createRootObject(instance):
--- 29,34 ----



reply via email to

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