commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer/src base/MultiObjectGridEditor.py...


From: Jason Cater
Subject: gnue/designer/src base/MultiObjectGridEditor.py...
Date: Tue, 27 May 2003 19:21:40 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    03/05/27 19:21:40

Modified files:
        designer/src/base: MultiObjectGridEditor.py ToolBar.py 
                           ToolBase.py 
        designer/src/base/uihelpers: GridCellEditors.py 
        designer/src/forms: Instance.py 
        designer/src/forms/LayoutEditor: LayoutEditor.py 
Added files:
        designer/src/base: ObjectList.py 

Log message:
        * Several bug fixes
        * Start of a block editor
        * More work on a generic grid-based attribute error

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/ObjectList.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/MultiObjectGridEditor.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/ToolBar.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/ToolBase.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/uihelpers/GridCellEditors.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Instance.py.diff?tr1=1.39&tr2=1.40&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.78&tr2=1.79&r1=text&r2=text

Patches:
Index: gnue/designer/src/base/MultiObjectGridEditor.py
diff -c gnue/designer/src/base/MultiObjectGridEditor.py:1.3 
gnue/designer/src/base/MultiObjectGridEditor.py:1.4
*** gnue/designer/src/base/MultiObjectGridEditor.py:1.3 Sun May 25 11:55:49 2003
--- gnue/designer/src/base/MultiObjectGridEditor.py     Tue May 27 19:21:39 2003
***************
*** 28,311 ****
  # NOTES:
  #
  
  import sys, os, cPickle, traceback, StringIO, string
  from wxPython.wx import *
! from gnue.common.apps import GDebug, GConfig, RuntimeSettings
! from gnue.common.datasources import GDataSource
! from gnue.common import events
! from gnue.designer.base.ToolBase import ToolBase
! 
! class MultiObjectGridEditor:
! 
!   def __init__(self):
  
-     self.list = wxListCtrl(self.splitter, -1, pos=wxPoint(0,0),
-              style=wxLC_REPORT| # wxLC_EDIT_LABELS|
-                    wxLC_HRULES|wxLC_VRULES|wxLC_SINGLE_SEL)
  
!     self.list.InsertColumn(0,_('Name'))
!     self.list.InsertColumn(1,_('Source'))
!     self.list.InsertColumn(2,_('Connection'))
  
!     self.notebook = wxNotebook(self.splitter, -1, style=wxNB_BOTTOM)
  
!     self.propertyPanel = PropertyViewer(self, self.notebook)
!     self.referencesPanel = ReferencesViewer(self, self.notebook)
!     self.schemaPanel = SchemaViewer(self, self.notebook)
  
!     self.notebook.AddPage(self.propertyPanel, _('Properties'))
!     self.notebook.AddPage(self.referencesPanel, _('References'))
!     self.notebook.AddPage(self.schemaPanel, _('Schema'))
  
!     self.splitter.SplitHorizontally(self.list, self.notebook,200)
  
-     EVT_SIZE(self, self.OnSize)
  
!     self.datasourceMap = {}
!     self.datasources = []
  
      self.current = None
  
!     self.instance.rootObject.walk (self.initialInventory)
!     self.instance.rootObject.walk (self.inventoryObject)
!     self.fillList()
! 
!     # EventAware provided by ToolBase
!     self.registerEventListeners({
!                        'ObjectSelected'      : self.onSetCurrentObject,
!                        'ObjectCreated'       : self.onCreateObject,
!                        'ObjectModified'      : self.onModifyObject,
!                        'ObjectDeleted'       : self.onDeleteObject,
!                       })
! 
!     EVT_LIST_ITEM_SELECTED(self, self.list.GetId(), self.OnDSSelected)
!     self._setCurrent(self.current)
! 
!     self.finalized = 0
!     self.splitter.SetSize(self.GetSize())
! 
! 
!   def fillList(self):
! 
!     self.list.DeleteAllItems()
! 
!     for datasource in self.datasources:
!       if not datasource.__master:
!         self._fillList(datasource, 0)
! 
  
-   def _fillList(self, object, indent):
  
!     index = self.list.GetItemCount()
!     self.list.InsertStringItem(index, " * " * indent + object.name)
!     self.list.SetStringItem(index, 1,
!        hasattr(object,'table') and object.table or '')
!     self.list.SetStringItem(index, 2,
!        hasattr(object,'database') and object.database or '')
!     self.list.SetItemData(index, id(object))
! 
!     object.__listIndex = index
! 
!     for detail in object._datasourceReferences:
!       self._fillList(detail, indent + 1)
! 
! 
! 
! 
!   def initialInventory(self, object):
!     if isinstance(object, GDataSource.GDataSource):
!       self.datasourceMap[string.lower(object.name)] = object
!       self.datasourceMap[id(object)] = object
!       self.datasources.append(object)
!       object._fieldFkReferences = {}
!       object._blockReferences = []
!       object._datasourceReferences = []
!       if self.current is None:
!         self.current = object
  
  
!   def inventoryObject(self, object):
!     if isinstance(object, GDataSource.GDataSource):
!       if hasattr(object,'master') and object.master:
!         try:
!           object.__master = self.datasourceMap[string.lower(object.master)]
!         except KeyError:
!           # TODO: Something better than this
!           print "DataSource %s references non-existent master %s" % \
!               (object.name, object.master)
!       else:
!         object.__master = None
  
      #
!     # Create a cross-reference list of objects referring to datasources
!     # These are used by the ReferencesViewer
      #
  
!     if object._type == 'GFEntry' and \
!       hasattr(object,'foreign_key') and \
!       len(object.foreign_key):
  
!       ds, field = string.split(
!              string.lower(object.foreign_key),'.')
  
        try:
!         self.datasourceMap[ds]._fieldFkReferences[field].append(object)
        except KeyError:
!         self.datasourceMap[ds]._fieldFkReferences[field] = [object]
! 
!     elif object._type == 'GFBlock' and \
!        hasattr(object,'datasource') and \
!        len(object.datasource):
! 
!       ds = self.datasourceMap[string.lower(object.datasource)]
! 
!       if not object in ds._blockReferences:
!         ds._blockReferences.append(object)
! 
! 
!     elif isinstance(object,GDataSource.GDataSource) and \
!        hasattr(object,'master') and \
!        object.master:
! 
!       ds = self.datasourceMap[string.lower(object.master)]
! 
!       if not object in ds._datasourceReferences:
!         ds._datasourceReferences.append(object)
! 
! 
! 
!   def onSetCurrentObject (self, event):
!     object = event.object
!     handler = event.originator
!     self._currentObject = object
!     if object == None:
!       return
! 
!     if handler != __name__:
!       self._setCurrent(object)
! 
!   def _setCurrent(self, object):
!     if isinstance(object, GDataSource.GDataSource):
! 
!       self.current = object
!       self.list.SetItemState ( object.__listIndex,
!                                wxLIST_STATE_SELECTED,
!                                wxLIST_STATE_SELECTED)
! 
!       self.list.EnsureVisible(object.__listIndex)
! 
!     self.propertyPanel.setCurrent(object)
!     self.referencesPanel.setCurrent(object)
!     self.schemaPanel.setCurrent(object)
! 
! 
!   def onCreateObject (self, event):
!     object = event.object
!     handler = event.originator
!     self._currentSelection = {}
!     if object == None:
!       return
! 
!     if handler != __name__:
!       self.initialInventory(object)
!       self.inventoryObject(object)
! 
!     if isinstance(object, GDataSource.GDataSource):
!       self.fillList()
  
  
!   def onModifyObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
  
-     if handler != __name__:
  
-       if isinstance(object, GDataSource.GDataSource):
-         # TODO: Maintain self.datasourceMap
-         self.fillList()
  
!       # Dirty way to rebuild all our lists
!       if object == self.current:
!         self._setCurrent(object)
  
  
-   def onDeleteObject (self, event):
-     object = event.object
-     handler = event.originator
-     if object == None:
-       return
  
!     if isinstance(object, GDataSource.GDataSource):
  
!       index = object.__listIndex
  
!       i = j = 0
!       for datasource in self.datasources:
!         if datasource == object: j = i
!         if datasource.__listIndex > index:
!           datasource.__listIndex -= 1
!           i += 1
! 
! 
!       self.datasources.pop(j)
!       self.list.DeleteItem(index)
! 
!       del self.datasourceMap[string.lower(object.name)]
!       del self.datasourceMap[id(object)]
! 
! 
!   def OnSize(self, event):
!     if not self.finalized:
!       self.finalize()
!     self.splitter.SetSize(self.GetSize())
! 
! 
!   # Runtime Setting Support
! 
!   def finalize(self):
! 
!     self.finalized = 1
! 
!     self.SetPosition((
!        RuntimeSettings.getint(self.runtime_section, 'x', -1),
!        RuntimeSettings.getint(self.runtime_section, 'y', -1)))
! 
!     self.splitter.SetSashPosition(
!        RuntimeSettings.getint(
!            self.runtime_section, 'sash', 100) or 100)
! 
!     self.notebook.SetSelection(
!        RuntimeSettings.getint(
!            self.runtime_section, 'visibletab', 0))
! 
!     for i in range(3):  # Should be the number of columns in the list
!       self.list.SetColumnWidth(i,
!         RuntimeSettings.getint(
!            self.runtime_section, "col%s" % i, -2))
! 
!     for i in range(REF_COLUMNS):
!       self.referencesPanel.list.SetColumnWidth(i,
!         RuntimeSettings.getint(
!            self.runtime_section, "refCol%s" % i, -2))
  
!     for i in range(SCH_COLUMNS):
!       self.schemaPanel.list.SetColumnWidth(i,
!         RuntimeSettings.getint(
!            self.runtime_section, "schemaCol%s" % i, -2))
  
-     self.list.Refresh()
-     self.Refresh()
  
  
    def saveRuntimeSettings(self):
-     sash = self.GetPositionTuple()
  
!     settings = {
!               'sash': self.splitter.GetSashPosition(),
!               'visibletab': self.notebook.GetSelection()
!              }
  
      # Save the top-level list column sizes
      for i in range(3):  # Should be the number of columns in the list
--- 28,160 ----
  # NOTES:
  #
  
+ __all__ = ['MultiObjectGridEditor']
+ 
  import sys, os, cPickle, traceback, StringIO, string
+ import weakref, types
  from wxPython.wx import *
! from wxPython.grid import *
! from gnue.common.apps import GDebug, RuntimeSettings
  
  
! class MultiObjectGridEditor(wxGrid):
  
!   ##
!   ##  Stuff that needs to be implemented by the subclasses
!   ##
  
!   base_gobject = None  # GObject
  
!   # Any initialization stuff
!   def init(self):
!     pass
  
!   # Should return a tuple of columns
!   def getColumnDefinitions(self):
!     return ()
  
  
!   ##
!   ## Internal Stuff
!   ##
!   def __init__(self, parent, instance):
!     wxGrid.__init__(self, parent, -1)
  
+     self.instance = instance
+     self.objects = []
+     self.rows = []
      self.current = None
  
!     # Set up our grid
  
  
!     # Register the Designer event handlers
!     instance.registerEventListeners({
!                        'ObjectSelected'      : self._objectSelected,
!                        'ObjectCreated'       : self._objectCreated,
!                        'ObjectModified'      : self._objectModified,
!                        'ObjectDeleted'       : self._objectDeleted,
!                       })
  
+     #
+     # Register the wx event handlers
+     #
+     EVT_GRID_CELL_CHANGE(self, self.__OnCellChange)
+     EVT_GRID_SELECT_CELL(self, self.__OnSelectCell)
+     EVT_GRID_LABEL_LEFT_CLICK(self, self.__OnLabelLeftClick)
  
!     self.init()
!     self.columns = columns = self.getColumnDefinitions()
  
      #
!     # Create the grid
      #
  
!     self.CreateGrid(1,len(columns))
! #    self.SetEditable(1)
! ##    self.SetSelectionMode(wxGrid.wxGridSelectRows)
!     self.BeginBatch()
  
!     self.SetRowLabelSize(0)
  
+     index = 0
+     for column in columns:
+       attr = wxGridCellAttr()
        try:
!         readonly = column['ReadOnly']
!         attr.SetReadOnly(column['ReadOnly'])
        except KeyError:
!         pass
  
+       self.SetColLabelValue(index, column['Label'])
+       self.SetColAttr(index, attr)
  
!       index += 1
  
  
  
!     # Initial inventory
!     instance.rootObject.walk (self.inventoryObject)
  
+     self.__rebuildGrid()
+     self.EndBatch()
  
  
!   def __rebuildGrid(self):
!     self.rows = self.objects[:]
!     num = len(self.rows)
!     self.BeginBatch()
  
!     # Create or delete any excess rows
!     existing = self.GetNumberRows()
!     if num < existing:
!       self.DeleteRows(0, existing - num)
!     elif num > existing:
!       self.AppendRows(0, num - existing)
  
!     ri = 0
!     for row in self.rows:
!       ci = 0
!       for column in self.columns:
!         v = column['Attribute']
!         if type(v) == types.MethodType:
!           value = v(row)
!         else:
!           try:
!             value = str(row.__dict__[v])
!           except KeyError:
!             value = ""
!         self.SetCellValue(ri, ci, value)
!         ci += 1
!       ri += 1
  
!     self.EndBatch()
  
  
  
    def saveRuntimeSettings(self):
  
!     settings = {}
  
      # Save the top-level list column sizes
      for i in range(3):  # Should be the number of columns in the list
***************
*** 323,677 ****
               settings )
  
  
!   # A Datasource was selected in the menu
!   def OnDSSelected(self, event):
!     self.current = self.datasourceMap[event.GetData()]
!     
self.instance.dispatchEvent(events.Event('ObjectSelected',object=self.current, 
originator=__name__))
! 
! 
!   def OnAddDSSelected(self, event):
! 
!     attributes = {}
!     if self.current is not None:
!       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__)
! 
! 
! 
! #
! #
! #
! class ToolBar (wxToolBar):
! 
!   def __init__(self, editor, parent):
!     wxToolBar.__init__(self, parent, -1, style=wxTB_DOCKABLE)
!     self.editor = editor
!     parent.SetToolBar(self)
! 
!     self.addButtonId = wxNewId()
!     self.deleteButtonId = wxNewId()
! 
!     self.AddSimpleTool(self.addButtonId,
!         wxImage(iamges_dir+gConfig('tb_insert'),
!                 wxBITMAP_TYPE_PNG).ConvertToBitmap(),
!         _("Create Data Source"),
!         _("Create a new data source"))
! 
!     self.AddSimpleTool(self.deleteButtonId,
!         wxImage(iamges_dir+gConfig('tb_delete'),
!                 wxBITMAP_TYPE_PNG).ConvertToBitmap(),
!         _("Delete Data Source"),
!         _("Delete the currently selected data source"))
! 
!     EVT_TOOL(self, self.addButtonId, editor.OnAddDSSelected)
!     EVT_TOOL(self, self.deleteButtonId, editor.OnDeleteDSSelected)
! 
  
!     self.dblinks = []
  
  
! #############################################################################
! #
! # Properties Tab
! #
  
! class PropertyViewer(wxPanel):
!   def __init__(self, editor, parentWindow):
!     wxPanel.__init__(self, parentWindow, -1)
!     self.editor = editor
  
!     EVT_SIZE(self, self.OnSize)
  
  
!   def setCurrent(self, object):
!     if isinstance(object, GDataSource.GDataSource):
!       self.current = object
  
  
!   def OnSize(self, event):
      event.Skip()
- 
- 
- 
- #############################################################################
- #
- # References Tab
- #
- 
- REF_NAME = 0
- REF_REFR = 1
- REF_TYPE = 2
- REF_COLUMNS = REF_TYPE + 1
- 
- class ReferencesViewer(wxPanel):
-   def __init__(self, editor, parentWindow):
-     wxPanel.__init__(self, parentWindow, -1)
-     self.editor = editor
- 
-     self.list = wxListCtrl(self, -1, pos=wxPoint(0,0),
-              style=wxLC_REPORT|wxLC_HRULES|wxLC_VRULES)
- 
-     self.list.InsertColumn(REF_NAME,  _('Reference'))
-     self.list.InsertColumn(REF_REFR,  _('Referrer'))
-     self.list.InsertColumn(REF_TYPE,  _('Type'), wxLIST_FORMAT_RIGHT)
- 
-     EVT_SIZE(self, self.OnSize)
- 
-   def setCurrent(self, object):
-     if isinstance(object, GDataSource.GDataSource):
-       self.current = object
-       self.fillList()
- 
-   def OnSize(self, event):
-     self.list.SetSize(self.GetSize())
- 
-   def fillList(self):
- 
- 
-     if not hasattr(self.current,'table'):
-       return
- 
-     mastertable = self.current.table
- 
-     self.lines = {}
- 
-     def addLine(self, name, referrer, type):
-       name = string.lower(name)
- 
-       if not self.lines.has_key(name):
-         self.lines[name] = []
- 
-       self.lines[name].append((name, referrer, type))
- 
- 
-     for item in self.current._datasourceReferences:
- 
-       mfields = string.split(item.masterlink,'.')
-       dfields = string.split(item.detaillink,'.')
- 
-       for i in range(len(mfields)):
-         addLine( self, "%s.%s" % (mastertable, mfields[i]),
-                  "%s.%s" % (item.name, dfields[i]),
-                  _("Detail Datasource") )
- 
- 
-     for field in self.current._fieldFkReferences.keys():
-       for item in self.current._fieldFkReferences[field]:
-         addLine( self, "%s.%s" % (mastertable, field),
-                  "%s.%s" % (item._parent.name, item.name),
-                  _("Dropdown Entry") )
- 
- 
-     for block in self.current._blockReferences:
-       addLine (self, mastertable, block.name, "Block")
- 
-       for item in block._children:
- 
-         if item._type == 'GFEntry' and \
-            hasattr(item,'field') and \
-            len(item.field):
- 
-           addLine( self, "%s.%s" % (mastertable, item.field),
-                    "%s.%s" % (block.name, item.name),
-                    _("Entry"))
- 
-     index = 0
-     self.list.DeleteAllItems()
-     keys = self.lines.keys()
-     keys.sort()
- 
-     index = 0
-     for key in keys:
- 
-       newline = 0
-       self.list.InsertStringItem(index, key)
- 
-       for line in self.lines[key]:
-         if newline:
-           self.list.InsertStringItem(index, "")
-         else:
-           newline = 1
- 
- 
-         name, referrer, type = line
-         self.list.SetStringItem(index, REF_REFR, referrer)
-         self.list.SetStringItem(index, REF_TYPE, type)
-         index += 1
- 
- 
- 
- 
- 
- 
- #############################################################################
- #
- # Schema Viewer Tab
- #
- 
- SCH_FIELD = 0
- SCH_TYPE = 1
- SCH_SIZE = 2
- SCH_NATIVE = 3
- SCH_REQ = 4
- SCH_COLUMNS = SCH_REQ + 1
- 
- class SchemaViewer(wxPanel):
-   def __init__(self, editor, parentWindow):
-     wxPanel.__init__(self, parentWindow, -1)
-     self.editor = editor
- 
-     self.list = wxListCtrl(self, -1, pos=wxPoint(0,0),
-              style=wxLC_REPORT|wxLC_HRULES|wxLC_VRULES)
- 
-     self.list.InsertColumn(SCH_FIELD, _('Field'))
-     self.list.InsertColumn(SCH_TYPE,  _('Base Type'))
-     self.list.InsertColumn(SCH_SIZE,  _('Size'), wxLIST_FORMAT_RIGHT)
-     self.list.InsertColumn(SCH_NATIVE,_('Native Type'))
-     self.list.InsertColumn(SCH_REQ,   _('Required'))
- 
-     self.schemaMap = []
- 
-     EVT_SIZE(self, self.OnSize)
-     EVT_LIST_BEGIN_DRAG(self, self.list.GetId(), self.OnBeginDrag)
- 
- 
-   def fillList(self):
- 
-    try:
-     conn = self.editor.current.database
- 
-     if not self.editor.connections.isConnectionActive(conn) and \
-        not int(gConfig("AutoConnect",section="designer")):
- 
-       # TODO: Some other form of feedback
-       if not hasattr(self.editor,'_schemaMessageDisplayed'):
-         print _("You are not logged in to %s... not retrieving schema") % 
(conn)
-         self.editor._schemaMessageDisplayed = 1
- 
-       return
- 
-     # TODO: Much error catching... any DB errors should be
-     # TODO: trapped so the designing session can continue,
-     # TODO: albeit without schema support.
- 
-     dataObject = self.editor.connections.getDataObject(conn, "object")
- 
-     self.editor.connections.requestConnection(dataObject, conn)
- 
-     schema = dataObject.getSchemaByName(self.editor.current.table)
- 
-     index = 0
-     self.list.DeleteAllItems()
-     if schema:
-       for field in schema.getChildSchema(schema):
-         self.list.InsertStringItem(index, field.name)
-         self.list.SetStringItem(index, SCH_TYPE,
-            string.upper(field.datatype[0]) + field.datatype[1:])
-         self.list.SetStringItem(index, SCH_NATIVE,
-            hasattr(field, 'nativetype') and field.nativetype or '(unknown)')
-         self.list.SetStringItem(index, SCH_REQ,
-            field.required and "Yes" or "No")
-         if hasattr(field,'length'):
-           if hasattr(field,'precision') and field.precision > 0:
-             self.list.SetStringItem(index, SCH_SIZE, "%s;%s" % (
-                   field.length, field.precision))
-           else:
-             self.list.SetStringItem(index, SCH_SIZE, "%s" % field.length)
-         else:
-           self.list.SetStringItem(index, SCH_SIZE,'-')
-         self.list.SetItemData(index, index)
-         self.schemaMap.append(field)
-         index += 1
- 
-    except:
- 
-      buffer = StringIO.StringIO()
-      traceback.print_exc(file=buffer)
- 
-      GDebug.printMesg(5,"Exception when retrieving schema (last 5 lines):")
-      GDebug.printMesg(5,"%s"%buffer.getvalue())
-      buffer.close()
- 
-   def setCurrent(self, object):
-     if isinstance(object, GDataSource.GDataSource):
-       self.current = object
-       self.fillList()
- 
-   def OnSize(self, event):
-     self.list.SetSize(self.GetSize())
- 
- 
-   def OnBeginDrag(self, event):
- 
-     data = []
- 
-     item = -1
-     # Cycle through each selected item
-     while 1:
-       item = self.list.GetNextItem(item,
-                                    wxLIST_NEXT_ALL,
-                                    wxLIST_STATE_SELECTED);
-       if item == -1:
-         break
- 
-       object = self.schemaMap[item]
- 
-       attributes = {
-           "datasource": self.current.name,
-           "name": self.editor.instance.getUniqueName(
-                     "fld%s" % (
-                      string.join(string.split(string.capwords( \
-                        string.replace(object.name,'_',' '))),''))),
-           "field": object.name,
-           "datatype": object.datatype,
-           "required" : object.required,
-         }
- 
-       if hasattr(object,'length') and object.length:
-         attributes['max_length'] = object.length
-         attributes['width'] = object.length < 30 and object.length or 30
- 
- 
-       if hasattr(object, 'label') and len(object.label):
-         label = object.label
-       elif len(object.name) == 1:
-         label = string.upper(object.name)
-       else:
-         label = string.join(string.split(string.capwords( \
-                      string.replace(object.name,'_',' '))),' ')
- 
-       data.append({ "Type" : "entry",
-                     "Attributes": attributes,
-                     "Label": label})
- 
- 
-     do = wxCustomDataObject(wxCustomDataFormat("GNUeDesVisualElement"))
-     do.SetData(cPickle.dumps(data,1))
- 
-     dropSource = wxDropSource(self)
-     dropSource.SetData(do)
-     result = dropSource.DoDragDrop(false)
- 
- 
- # Get around a few wx 2.2.x shortcomings:
- try:
-   wxLC_HRULES
-   wxLC_VRULES
- except NameError:
-   wxLC_HRULES=0
-   wxLC_VRULES=0
- 
- 
- # Shortcut
- images_dir = 
os.path.join(GConfig.getInstalledBase('designer_images','common_images'),'designer')
- 
  
--- 172,218 ----
               settings )
  
  
!   def inventoryObject(self, object):
!     if isinstance(object, self.base_gobject):
!       self.objects.append(object)
  
!   def _objectSelected(self, event):
!     if event.object in self.objects:
!       index = self.objects.index(event.object)
  
  
!   def _objectModified(self, event):
!     if event.object in self.objects:
!       pass
  
!   def _objectCreated(self, event):
!     self.inventoryObject(event.object)
  
!   def _objectDeleted(self, event):
!     pass
  
  
!   #
!   # Called by the subclass to notify us that
!   # a valid set has changed
!   #
!   def updateValidSet(self, column):
!     values = self.columns[column]['ValidSet']
!     if values.type == types.MethodType:
!       values = values()
!     print "TODO: UPDATING VALID SET"
  
  
!   ##
!   ## Wx event handlers
!   ##
!   def __OnCellChange(self, event):
!     print "TODO: Cell changed"
!     event.Skip()
!   def __OnSelectCell(self, event):
!     print "TODO: Cell selected"
!     event.Skip()
!   def __OnLabelLeftClick(self, event):
!     print "TODO: Label left click"
      event.Skip()
  
Index: gnue/designer/src/base/ToolBar.py
diff -c gnue/designer/src/base/ToolBar.py:1.2 
gnue/designer/src/base/ToolBar.py:1.3
*** gnue/designer/src/base/ToolBar.py:1.2       Fri May 23 20:02:31 2003
--- gnue/designer/src/base/ToolBar.py   Tue May 27 19:21:39 2003
***************
*** 75,81 ****
          help = self.instance._menubar.getEventHelp(handle)
  
          if not help:
!           print "Warning: No event tied to %s" % handle
            help = ""
  
          id = wxNewId()
--- 75,81 ----
          help = self.instance._menubar.getEventHelp(handle)
  
          if not help:
! ##          print "Warning: No event tied to %s" % handle
            help = ""
  
          id = wxNewId()
Index: gnue/designer/src/base/ToolBase.py
diff -c gnue/designer/src/base/ToolBase.py:1.2 
gnue/designer/src/base/ToolBase.py:1.3
*** gnue/designer/src/base/ToolBase.py:1.2      Sun May 25 12:13:12 2003
--- gnue/designer/src/base/ToolBase.py  Tue May 27 19:21:39 2003
***************
*** 27,32 ****
--- 27,34 ----
  # NOTES:
  #
  
+ __all__ = ['ToolBase']
+ 
  from wxPython.wx import *
  from gnue.common.apps import RuntimeSettings
  from gnue.common import events
Index: gnue/designer/src/base/uihelpers/GridCellEditors.py
diff -c gnue/designer/src/base/uihelpers/GridCellEditors.py:1.3 
gnue/designer/src/base/uihelpers/GridCellEditors.py:1.4
*** gnue/designer/src/base/uihelpers/GridCellEditors.py:1.3     Mon Feb 17 
02:32:51 2003
--- gnue/designer/src/base/uihelpers/GridCellEditors.py Tue May 27 19:21:39 2003
***************
*** 27,32 ****
--- 27,34 ----
  # NOTES:
  #
  
+ __all__ = [ 'CharCellEditor', 'RestrictedCellEditor',
+             'BoolCellEditor', 'IntCellEditor']
  
  import sys, os, string
  from wxPython.wx import *
***************
*** 130,136 ****
  
  
  class IntCellEditor (CharCellEditor):
!   def __init__(self, grid, attributes): 
      CharCellEditor.__init__(self, grid, attributes)
  
    def Create(self, parent, id, evtHandler):
--- 132,138 ----
  
  
  class IntCellEditor (CharCellEditor):
!   def __init__(self, grid, attributes):
      CharCellEditor.__init__(self, grid, attributes)
  
    def Create(self, parent, id, evtHandler):
***************
*** 166,186 ****
  
  
  class RestrictedCellEditor (CharCellEditor):
!   def __init__(self, grid, attributes): 
      CharCellEditor.__init__(self, grid, attributes)
      self.valueList = attributes['ValueSet'].keys()
!       
      self.valueList.sort()
      self.selectionList = []
      self.valueMap = {}
  
!     i = 0 
!     if not (attributes.has_key('Required') and attributes['Required'] ): 
        self.valueMap[''] = 0
        self.selectionList.append(' <Not Set> ')
        i = 1
  
!     for v in self.valueList: 
        self.valueMap[v] = i
        self.selectionList.append("%s" % (attributes['ValueSet'][v] or v))
        i = i + 1
--- 168,188 ----
  
  
  class RestrictedCellEditor (CharCellEditor):
!   def __init__(self, grid, attributes):
      CharCellEditor.__init__(self, grid, attributes)
      self.valueList = attributes['ValueSet'].keys()
! 
      self.valueList.sort()
      self.selectionList = []
      self.valueMap = {}
  
!     i = 0
!     if not (attributes.has_key('Required') and attributes['Required'] ):
        self.valueMap[''] = 0
        self.selectionList.append(' <Not Set> ')
        i = 1
  
!     for v in self.valueList:
        self.valueMap[v] = i
        self.selectionList.append("%s" % (attributes['ValueSet'][v] or v))
        i = i + 1
***************
*** 189,195 ****
  
    def Create(self, parent, id, evtHandler):
      GDebug.printMesg(10,'Creating CharCellEditor')
!     self._tc = wxComboBox(parent, id, "", style=wxCB_READONLY, 
                            choices=self.selectionList)
      self.SetControl(self._tc)
      if evtHandler:
--- 191,197 ----
  
    def Create(self, parent, id, evtHandler):
      GDebug.printMesg(10,'Creating CharCellEditor')
!     self._tc = wxComboBox(parent, id, "", style=wxCB_READONLY,
                            choices=self.selectionList)
      self.SetControl(self._tc)
      if evtHandler:
***************
*** 243,249 ****
  class BoolCellEditor (CharCellEditor):
    def __init__(self, grid, attributes):
      CharCellEditor.__init__(self, grid, attributes)
!       
      self.selectionList = ['FALSE','TRUE']
  
    def Create(self, parent, id, evtHandler):
--- 245,251 ----
  class BoolCellEditor (CharCellEditor):
    def __init__(self, grid, attributes):
      CharCellEditor.__init__(self, grid, attributes)
! 
      self.selectionList = ['FALSE','TRUE']
  
    def Create(self, parent, id, evtHandler):
Index: gnue/designer/src/forms/Instance.py
diff -c gnue/designer/src/forms/Instance.py:1.39 
gnue/designer/src/forms/Instance.py:1.40
*** gnue/designer/src/forms/Instance.py:1.39    Wed Apr 16 14:05:40 2003
--- gnue/designer/src/forms/Instance.py Tue May 27 19:21:39 2003
***************
*** 27,32 ****
--- 27,34 ----
  # NOTES:
  #
  
+ __all__ = ['Instance']
+ 
  from wxPython.wx import *
  
  from gnue.designer.forms import properties as formProperties
***************
*** 41,46 ****
--- 43,49 ----
  from TreeView import TreeView
  from PropertyEditor import PropertyEditor
  from EventEditor import EventEditor
+ from BlockEditor import BlockEditor
  from gnue.designer.base.tools.TriggerEditor import TriggerEditor
  from gnue.designer.base.tools.DataSourceEditor import DataSourceEditor
  from gnue.designer.base.tools.SchemaViewer import SchemaViewer
***************
*** 183,189 ****
      self.addTool('schemaViewer',   _('Schema Navigator'), SchemaViewer)
      self.addToolSeparator()
      self.addTool('datasourceEditor',_('Data Source Editor'), DataSourceEditor)
!     #self.addTool('blockEditor',   _('Block Editor'), BlockEditor, 'F5')
      #self.addTool('fieldEditor',   _('Field Editor'), FieldEditor, 'F6')
      self.addToolSeparator()
      self.addTool('eventEditor',    _('Trigger Inspector'), EventEditor, 'F7')
--- 186,192 ----
      self.addTool('schemaViewer',   _('Schema Navigator'), SchemaViewer)
      self.addToolSeparator()
      self.addTool('datasourceEditor',_('Data Source Editor'), DataSourceEditor)
!     self.addTool('blockEditor',   _('Block Editor'), BlockEditor, 'F5')
      #self.addTool('fieldEditor',   _('Field Editor'), FieldEditor, 'F6')
      self.addToolSeparator()
      self.addTool('eventEditor',    _('Trigger Inspector'), EventEditor, 'F7')
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.78 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.79
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.78   Sun May 25 
12:13:12 2003
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Tue May 27 
19:21:39 2003
***************
*** 25,30 ****
--- 25,31 ----
  #
  # NOTES:
  
+ __all__ = ['LayoutEditor']
  
  import sys, os
  from wxPython.wx import *
***************
*** 239,244 ****
--- 240,247 ----
  
  
    def _setCurrentPage(self, object):
+     if not object:
+       return
      page = isinstance(object, GFObjects.GFPage) and object or \
             object.findParentOfType('GFPage')
  




reply via email to

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