[Top][All Lists]
[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 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/designer/src PropertyEditor.py forms/Insta...,
Jason Cater <=