commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer/src PropertyEditor.py forms/Insta...


From: Jason Cater
Subject: gnue/designer/src PropertyEditor.py forms/Insta...
Date: Tue, 10 Dec 2002 01:48:05 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/12/10 01:48:04

Modified files:
        designer/src   : PropertyEditor.py 
        designer/src/forms: Instance.py 
        designer/src/forms/LayoutEditor: LayoutEditor.py 
Added files:
        designer/src/forms: PropertyEditor.py 

Log message:
        * Added multi-tab property editor support to base instances
        * Added positioning Character Cell property tab
        * Added GFEntry->GFField property tab
        * Drastically increased the frequency of SEGFAULTS [WARNING: You have 
been warned!]

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/PropertyEditor.py.diff?tr1=1.31&tr2=1.32&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/PropertyEditor.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Instance.py.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.50&tr2=1.51&r1=text&r2=text

Patches:
Index: gnue/designer/src/PropertyEditor.py
diff -c gnue/designer/src/PropertyEditor.py:1.31 
gnue/designer/src/PropertyEditor.py:1.32
*** gnue/designer/src/PropertyEditor.py:1.31    Mon Nov 25 23:23:33 2002
--- gnue/designer/src/PropertyEditor.py Tue Dec 10 01:48:04 2002
***************
*** 37,59 ****
  
    runtime_section = 'PropertyEditor'
    default_dock = DOCK_TOPLEFT
-   uses_feedback_header = 1
  
    def init(self):
      self.panel = wxPanel(self,-1,style=wxSIMPLE_BORDER, pos=wxPoint(6,6))
  
-     self.object = None
-     self.objectList = []
-     self.objectMap = {}
- 
-     # Set up our grid
-     self.grid = wxGrid(self.panel, -1, pos=wxPoint(0,0))
-     self.grid.CreateGrid(1,1)
-     self.grid.SetColLabelSize(0)
  
!     EVT_GRID_CELL_CHANGE(self.grid, self.OnCellChange)
!     EVT_GRID_CELL_LEFT_DCLICK(self.grid, self.OnLeftDClick)
!     EVT_SIZE(self, self.onSize)
  
      # EventAware provided by ToolPanel
      self.registerEventListeners({
--- 37,49 ----
  
    runtime_section = 'PropertyEditor'
    default_dock = DOCK_TOPLEFT
  
    def init(self):
      self.panel = wxPanel(self,-1,style=wxSIMPLE_BORDER, pos=wxPoint(6,6))
+     self.notebook = wxNotebook(self.panel, -1, style=wxNB_BOTTOM)
  
  
!     self.object = None
  
      # EventAware provided by ToolPanel
      self.registerEventListeners({
***************
*** 63,96 ****
                         'ObjectDeleted'       : self.onDeleteObject,
                        })
  
    def onSetCurrentObject (self, event):
      object = event.object
      handler = event.originator
      if object == None:
        return
!     if handler != self:
        self._setCurrent(object)
  
    def _setCurrent(self, object):
-       try:
-         text  = "%s Properties (%s)" % 
(object._type[2:].capitalize(),object.name)
-       except:
-         text = object.getDescription()
-       self.setHeaderText(text)
- 
        self.object = object
!       elements = self.instance.incubator.elements
!       try:
!         self.attributes = 
elements[string.lower(object._type[2:])]['Attributes']
!       except KeyError:
!         self.attributes = {}
! 
!       self.elements = elements[string.lower(object._type[2:])]
  
        # Speed up the process by not refreshing the grid yet
        self.grid.BeginBatch()
  
- 
        # Delete any old rows from a previous object
        nr = self.grid.GetNumberRows()
        if nr:
--- 53,165 ----
                         'ObjectDeleted'       : self.onDeleteObject,
                        })
  
+     self.supplemental = []
+     EVT_SIZE(self, self.onSize)
+     self.main = self.createMainPage()
+     self.notebook.AddPage(self.main,'Properties')
+ 
+ 
+   def createMainPage(self):
+     return InspectorPanel(self, self.notebook)
+ 
    def onSetCurrentObject (self, event):
      object = event.object
      handler = event.originator
      if object == None:
        return
!     if object != self.object:
!       self.setCurrent(object)
! 
!   def setCurrent(self, object):
!       self.object = object
!       self.reset()
!       self.main.setCurrent(object)
!       self.notebook.SetPageText(0, self.main.getPageText())
!       i = 1
!       for page in self.supplemental:
!         page.setCurrent(object)
!         self.notebook.SetPageText(i, page.getPageText())
!         i += 1
! 
!   def addPage(self, inspector, label):
!     self.supplemental.append(inspector)
!     self.notebook.AddPage(inspector, label)
! 
!   def reset(self):
!     for i in range(len(self.supplemental)):
!       self.notebook.DeletePage(1)
!     self.supplemental = []
! 
!   def onCreateObject (self, event):
!     object = event.object
!     handler = event.originator
! 
! 
!   def onModifyObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
!     if handler != self and self.object == object:
!       self.setCurrent(object)
! 
! 
!   def onDeleteObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
!     if handler != __name__:
!       pass
! 
! 
!   def onSize(self, event):
!     w,h = self.GetClientSizeTuple()
!     self.panel.SetSize((w-12,h-12))
!     self.notebook.SetSize(self.panel.GetClientSizeTuple())
! 
! 
! #
! #
! #
! class InspectorPanel(wxPanel):
! 
!   NAMESPACE = ""
! 
!   def __init__(self, editor, parent):
! 
!     wxPanel.__init__(self, parent, -1)
!     self.object = None
!     self.editor = editor
! 
!     # Set up our grid
!     self.grid = wxGrid(self, -1, pos=wxPoint(0,0))
!     self.grid.CreateGrid(1,1)
!     self.grid.SetColLabelSize(0)
! 
!     EVT_GRID_CELL_CHANGE(self.grid, self.OnCellChange)
!     EVT_GRID_CELL_LEFT_DCLICK(self.grid, self.OnLeftDClick)
!     EVT_SIZE(self, self.onSize)
! 
! 
!   def getAttributes(self, object):
!     elements = self.editor.instance.incubator.elements
!     try:
!       return elements[(object._type[2:]).lower()]['Attributes']
!     except KeyError:
!       return {}
! 
! 
!   def setCurrent(self, object):
        self._setCurrent(object)
  
    def _setCurrent(self, object):
        self.object = object
!       self.attributes = self.getAttributes(object)
  
        # Speed up the process by not refreshing the grid yet
        self.grid.BeginBatch()
  
        # Delete any old rows from a previous object
        nr = self.grid.GetNumberRows()
        if nr:
***************
*** 100,115 ****
        self.rowList = self.attributes.keys()
        self.rowList.sort()
  
- 
        # Only show properties for nondeprecated values (unless set)
        i = 0
        while i < len(self.rowList):
          key = self.rowList[i]
          if self.attributes[key].has_key ('Deprecated') and \
             self.attributes[key]['Deprecated'] and \
!            (not hasattr(object, key) or \
                (self.attributes[key].has_key('Default') and \
!                object.__dict__[key] == self.attributes[key]['Default'] ) ):
            self.rowList.pop(i)
          else:
            i = i + 1
--- 169,184 ----
        self.rowList = self.attributes.keys()
        self.rowList.sort()
  
        # Only show properties for nondeprecated values (unless set)
        i = 0
        while i < len(self.rowList):
          key = self.rowList[i]
+         xkey = key.replace(':','__')
          if self.attributes[key].has_key ('Deprecated') and \
             self.attributes[key]['Deprecated'] and \
!            (not hasattr(object, xkey) or \
                (self.attributes[key].has_key('Default') and \
!                object.__dict__[xkey] == self.attributes[key]['Default'] ) ):
            self.rowList.pop(i)
          else:
            i = i + 1
***************
*** 119,134 ****
        self.grid.InsertRows(0,len(self.rowList))
  
        i = 0
- 
        for key in self.rowList:
  
          # This little tidbit does mixed case w/'_' as separators
!         words = string.split(key,'_')
          for j in range(len(words)):
!           try:
!             words[j] = string.upper(words[j][0]) + string.lower(words[j][1:])
!           except IndexError:
!             words[j] = string.upper(words[j])
          self.grid.SetRowLabelValue(i,string.join(words,' '))
  
  
--- 188,201 ----
        self.grid.InsertRows(0,len(self.rowList))
  
        i = 0
        for key in self.rowList:
  
+         xkey = key.replace(':','__')
+         
          # This little tidbit does mixed case w/'_' as separators
!         words = string.split(key.split(':',1)[-1],'_')
          for j in range(len(words)):
!           words[j] = words[j].capitalize()
          self.grid.SetRowLabelValue(i,string.join(words,' '))
  
  
***************
*** 146,164 ****
  
  
          # Set the initial value of the cells to the current property values
!         if hasattr(object, key):
            if self.attributes[key]['Typecast'] == GTypecast.boolean:
!             if object.__dict__[key]:
                self.grid.SetCellValue(i,0,"TRUE")
              else:
                self.grid.SetCellValue(i,0,"FALSE")
                pass
            else:
!             self.grid.SetCellValue(i,0, "%s" % object.__dict__[key])
              pass
          i = i + 1
  
- 
        # Redraw the grid
        self.grid.EndBatch()
        try:
--- 213,230 ----
  
  
          # Set the initial value of the cells to the current property values
!         if hasattr(object, xkey):
            if self.attributes[key]['Typecast'] == GTypecast.boolean:
!             if object.__dict__[xkey]:
                self.grid.SetCellValue(i,0,"TRUE")
              else:
                self.grid.SetCellValue(i,0,"FALSE")
                pass
            else:
!             self.grid.SetCellValue(i,0, "%s" % object.__dict__[xkey])
              pass
          i = i + 1
  
        # Redraw the grid
        self.grid.EndBatch()
        try:
***************
*** 166,201 ****
        except AttributeError:
          pass
  
! 
!   def onCreateObject (self, event):
!     object = event.object
!     handler = event.originator
! 
! 
!   def onModifyObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
!     if handler != self and self.object == object:
! #      for modification in modifications:
! #        attribute, value = modification
!       self._setCurrent(object)
! 
! 
!   def onDeleteObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
!     if handler != __name__:
!       pass
! 
  
    def onSize(self, event):
!     x,y = self.GetClientSizeTuple()
!     self.panel.SetSize((x-12,y-12))
!     self.grid.SetSize(self.panel.GetClientSizeTuple())
      w,h = self.grid.GetClientSizeTuple()
      self.grid.SetColSize(0, w - self.grid.GetRowLabelSize())
      try:
--- 232,242 ----
        except AttributeError:
          pass
  
!   def getPageText(self):
!     return self.object._type[2:]
  
    def onSize(self, event):
!     self.grid.SetSize(self.GetClientSize())
      w,h = self.grid.GetClientSizeTuple()
      self.grid.SetColSize(0, w - self.grid.GetRowLabelSize())
      try:
***************
*** 204,227 ****
        pass
  
  
- 
    # Force a grid cell into Edit mode when Double-Clicked
!   def OnLeftDClick(self,evt): 
!     if self.grid.CanEnableCellControl(): 
        self.grid.EnableCellEditControl()
  
    def OnCellChange(self, evt):
      attr = self.rowList[evt.GetRow()]
      value = self.grid.GetCellValue(evt.GetRow(), evt.GetCol())
  
      try:
        try:
!         oldVal = {attr: self.object.__dict__[attr]}
        except KeyError:
          oldVal = {attr: None}
!       self.object.__dict__[attr] = self.attributes[attr]['Typecast'](value)
!       newVal = {attr: self.object.__dict__[attr]}
!       self.dispatchEvent('ObjectModified',
                           object=self.object,
                           originator=self,
                           old=oldVal,
--- 245,270 ----
        pass
  
  
    # Force a grid cell into Edit mode when Double-Clicked
!   def OnLeftDClick(self,evt):
!     if self.grid.CanEnableCellControl():
        self.grid.EnableCellEditControl()
  
    def OnCellChange(self, evt):
      attr = self.rowList[evt.GetRow()]
      value = self.grid.GetCellValue(evt.GetRow(), evt.GetCol())
  
+     xkey = attr.replace(':','__')
      try:
        try:
!         oldVal = {attr: self.object.__dict__[xkey]}
        except KeyError:
          oldVal = {attr: None}
!       self.object.__dict__[xkey] = self.attributes[attr]['Typecast'](value)
!       newVal = {attr: self.object.__dict__[xkey]}
!       print oldVal
!       print newVal
!       self.editor.dispatchEvent('ObjectModified',
                           object=self.object,
                           originator=self,
                           old=oldVal,
***************
*** 234,240 ****
  #
  #
  class CharCellEditor (wxPyGridCellEditor):
!   def __init__(self, grid, attributes): 
      wxPyGridCellEditor.__init__(self)
      self.grid = grid
      self.attributes = attributes
--- 277,283 ----
  #
  #
  class CharCellEditor (wxPyGridCellEditor):
!   def __init__(self, grid, attributes):
      wxPyGridCellEditor.__init__(self)
      self.grid = grid
      self.attributes = attributes
***************
*** 321,327 ****
    def Destroy(self):
      self.base_Destroy()
  
!   def Clone(self): 
      return CharCellEditor(self.attributes)
  
  
--- 364,370 ----
    def Destroy(self):
      self.base_Destroy()
  
!   def Clone(self):
      return CharCellEditor(self.attributes)
  
  
***************
*** 333,342 ****
      CharCellEditor.Create(self, parent, id, evtHandler)
      EVT_CHAR(self._tc, self.OnKeyPressed)
  
!   def OnKeyPressed(self, evt): 
      if (ord('0') <= evt.KeyCode() <= ord('9') or \
          evt.KeyCode() in (ord('-'), ord('+')) or \
!         evt.KeyCode() < 32 or evt.KeyCode() > 126): 
        evt.Skip()
  
    def StartingKey(self, evt):
--- 376,385 ----
      CharCellEditor.Create(self, parent, id, evtHandler)
      EVT_CHAR(self._tc, self.OnKeyPressed)
  
!   def OnKeyPressed(self, evt):
      if (ord('0') <= evt.KeyCode() <= ord('9') or \
          evt.KeyCode() in (ord('-'), ord('+')) or \
!         evt.KeyCode() < 32 or evt.KeyCode() > 126):
        evt.Skip()
  
    def StartingKey(self, evt):
Index: gnue/designer/src/forms/Instance.py
diff -c gnue/designer/src/forms/Instance.py:1.22 
gnue/designer/src/forms/Instance.py:1.23
*** gnue/designer/src/forms/Instance.py:1.22    Tue Dec  3 23:32:53 2002
--- gnue/designer/src/forms/Instance.py Tue Dec 10 01:48:04 2002
***************
*** 39,45 ****
  # Tool support...
  from LayoutEditor import LayoutEditor
  from TreeView import TreeView
! from gnue.designer.PropertyEditor import PropertyEditor
  from gnue.designer.EventEditor import EventEditor
  from gnue.designer.TriggerEditor import TriggerEditor
  from gnue.designer.DataSourceEditor import DataSourceEditor
--- 39,45 ----
  # Tool support...
  from LayoutEditor import LayoutEditor
  from TreeView import TreeView
! from PropertyEditor import PropertyEditor
  from gnue.designer.EventEditor import EventEditor
  from gnue.designer.TriggerEditor import TriggerEditor
  from gnue.designer.DataSourceEditor import DataSourceEditor
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.50 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.51
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.50   Mon Dec  9 
11:49:58 2002
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Tue Dec 10 
01:48:04 2002
***************
*** 68,74 ****
      #self.propBar = PropertyBar(self)
      self.toolbar = LayoutEditorTools(self, self.frame)
      self.blockCombo = self.toolbar.blockCombo
!     EVT_COMBOBOX(self, self.blockCombo.GetId(), self.OnBlockSelected)
  
      EVT_NOTEBOOK_PAGE_CHANGED(self,self.notebook.GetId(), self.OnPageSelected)
      EVT_SIZE(self, self.OnSize)
--- 68,74 ----
      #self.propBar = PropertyBar(self)
      self.toolbar = LayoutEditorTools(self, self.frame)
      self.blockCombo = self.toolbar.blockCombo
!     EVT_COMBOBOX(self.toolbar, self.blockCombo.GetId(), self.OnBlockSelected)
  
      EVT_NOTEBOOK_PAGE_CHANGED(self,self.notebook.GetId(), self.OnPageSelected)
      EVT_SIZE(self, self.OnSize)
***************
*** 283,289 ****
        for field in event.new.keys():
          value = event.new[field]
          if field=='text':
-           #TODO: this will butcher align=center setups
            if (not hasattr(object,'alignment')) or ( object.alignment == 
'left'):
              if not hasattr(object,'Char__width') or object.Char__width != 
len(value):
                object.Char__width=len(value)
--- 283,288 ----
***************
*** 455,466 ****
      if p != self.page:
        self.dispatchEvent('ObjectSelected', object=p, 
originator="Forms::LayoutEditor")
      self._setCurrentPage(p)
- 
- 
-   def OnBlockSelected(self, event):
-     b = self.blockList[event.GetSelection()]
- #    if p != self.page:
-     self.instance.onSetCurrentObject(b, None)
  
  
    def OnLeftDown(self, event):
--- 454,459 ----



reply via email to

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