[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/designer/src EventEditor.py Instance.py Pr...
From: |
Jason Cater |
Subject: |
gnue/designer/src EventEditor.py Instance.py Pr... |
Date: |
Sun, 15 Dec 2002 17:22:41 -0500 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: Jason Cater <address@hidden> 02/12/15 17:22:41
Modified files:
designer/src : EventEditor.py Instance.py PropertyEditor.py
ToolPanel.py
designer/src/forms: Instance.py
designer/src/schema: Instance.py TreeView.py
Added files:
designer/src : GridCellEditors.py
Log message:
* Start of a schema grid-based table editor
* Misc refactoring
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/GridCellEditors.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/EventEditor.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/Instance.py.diff?tr1=1.73&tr2=1.74&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/PropertyEditor.py.diff?tr1=1.34&tr2=1.35&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/ToolPanel.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Instance.py.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/Instance.py.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/TreeView.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: gnue/designer/src/EventEditor.py
diff -c gnue/designer/src/EventEditor.py:1.6
gnue/designer/src/EventEditor.py:1.7
*** gnue/designer/src/EventEditor.py:1.6 Fri Dec 6 19:55:25 2002
--- gnue/designer/src/EventEditor.py Sun Dec 15 17:22:41 2002
***************
*** 34,40 ****
from gnue.common.GTrigger import GTrigger
from gnue.common.GParserHelpers import GContent
from ToolPanel import *
! from PropertyEditor import CharCellEditor
class EventEditor (ToolPanel):
--- 34,40 ----
from gnue.common.GTrigger import GTrigger
from gnue.common.GParserHelpers import GContent
from ToolPanel import *
! from GridCellEditors import CharCellEditor
class EventEditor (ToolPanel):
Index: gnue/designer/src/Instance.py
diff -c gnue/designer/src/Instance.py:1.73 gnue/designer/src/Instance.py:1.74
*** gnue/designer/src/Instance.py:1.73 Sat Nov 30 18:00:35 2002
--- gnue/designer/src/Instance.py Sun Dec 15 17:22:41 2002
***************
*** 316,322 ****
RuntimeSettings.getint(self.runtime_section,
'DockSplitter-Left',200))
leftWin = self.leftSplitter
else:
! leftWin = paneMap['bottomleft'] or paneMap['topleft']
if self.rightSplitter:
self.rightSplitter.SplitHorizontally(panemap['topright'].GetWindow(),
--- 316,322 ----
RuntimeSettings.getint(self.runtime_section,
'DockSplitter-Left',200))
leftWin = self.leftSplitter
else:
! leftWin = panemap['bottomleft'] or panemap['topleft']
if self.rightSplitter:
self.rightSplitter.SplitHorizontally(panemap['topright'].GetWindow(),
***************
*** 324,330 ****
RuntimeSettings.getint(self.runtime_section,
'DockSplitter-Right',300))
rightWin = self.rightSplitter
else:
! rightWin = paneMap['bottomright'] or paneMap['topright']
if self.horizSplitter:
self.horizSplitter.SetSize(self.GetClientSize())
--- 324,330 ----
RuntimeSettings.getint(self.runtime_section,
'DockSplitter-Right',300))
rightWin = self.rightSplitter
else:
! rightWin = panemap['bottomright'] or panemap['topright']
if self.horizSplitter:
self.horizSplitter.SetSize(self.GetClientSize())
Index: gnue/designer/src/PropertyEditor.py
diff -c gnue/designer/src/PropertyEditor.py:1.34
gnue/designer/src/PropertyEditor.py:1.35
*** gnue/designer/src/PropertyEditor.py:1.34 Thu Dec 12 09:42:10 2002
--- gnue/designer/src/PropertyEditor.py Sun Dec 15 17:22:41 2002
***************
*** 32,37 ****
--- 32,38 ----
from wxPython.grid import *
from gnue.common import GDebug, GTypecast
from ToolPanel import *
+ from GridCellEditors import *
class PropertyEditor (ToolPanel):
***************
*** 270,541 ****
evt.Skip()
except ValueError:
wxBell()
-
-
- #
- #
- #
- class CharCellEditor (wxPyGridCellEditor):
- def __init__(self, grid, attributes):
- wxPyGridCellEditor.__init__(self)
- self.grid = grid
- self.attributes = attributes
- self.__created = 0
-
-
- def Create(self, parent, id, evtHandler):
- self.__created = 1
- GDebug.printMesg(10,'Creating CharCellEditor')
- self._tc = wxTextCtrl(parent, id, "")
- self._tc.SetInsertionPoint(0)
- self.SetControl(self._tc)
- if evtHandler:
- self._tc.PushEventHandler(evtHandler)
-
- def SetSize(self, rect):
- self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2)
-
- def Show(self, show, attr):
- self.base_Show(show, attr)
-
- def PaintBackground(self, rect, attr):
- pass
-
- def BeginEdit(self, row, col, grid):
- self.startValue = grid.GetTable().GetValue(row, col)
- self._tc.SetValue(self.startValue)
- self._tc.SetInsertionPointEnd()
- self._tc.SetFocus()
-
- # For this example, select the text
- self._tc.SetSelection(0, self._tc.GetLastPosition())
-
-
- def EndEdit(self, row, col, grid):
- changed = false
-
- val = self._tc.GetValue()
- if val != self.startValue:
- changed = true
- grid.GetTable().SetValue(row, col, val) # update the table
-
- self.startValue = ''
- self._tc.SetValue('')
- return changed
-
-
- def Reset(self):
- self._tc.SetValue(self.startValue)
- self._tc.SetInsertionPointEnd()
-
-
- def IsAcceptedKey(self, evt):
- return (not (evt.ControlDown() or evt.AltDown()) and
- evt.GetKeyCode() != WXK_SHIFT)
-
-
- def StartingKey(self, evt):
- GDebug.printMesg(10, "Starting Key; created=%s" % self.__created)
- key = evt.GetKeyCode()
- ch = None
- if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3,
WXK_NUMPAD4,
- WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8,
WXK_NUMPAD9]:
- ch = ch = chr(ord('0') + key - WXK_NUMPAD0)
-
- elif key < 256 and key >= 0 and chr(key):
- ch = chr(key)
- if not evt.ShiftDown():
- ch = string.lower(ch)
-
- if ch is not None:
- # For this example, replace the text. Normally we would append it.
- #self._tc.AppendText(ch)
- # self._tc.SetValue(ch)
- # self._tc.SetInsertionPointEnd()
- pass
- else:
- evt.Skip()
-
-
- def StartingClick(self):
- pass
-
- def Destroy(self):
- self.base_Destroy()
-
- def Clone(self):
- return CharCellEditor(self.attributes)
-
-
- class IntCellEditor (CharCellEditor):
- def __init__(self, grid, attributes):
- CharCellEditor.__init__(self, grid, attributes)
-
- def Create(self, parent, id, evtHandler):
- 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):
- key = evt.GetKeyCode()
- ch = None
- if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3,
WXK_NUMPAD4,
- WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8,
WXK_NUMPAD9]:
- ch = ch = chr(ord('0') + key - WXK_NUMPAD0)
-
- elif key < 256 and key >= 0 and chr(key):
- ch = chr(key)
- if not evt.ShiftDown():
- ch = string.lower(ch)
-
- if '0' <= ch <= '9':
- # For this example, replace the text. Normally we would append it.
- #self._tc.AppendText(ch)
- pass
- # self._tc.SetValue(ch)
- # self._tc.SetInsertionPointEnd()
- else:
- evt.Skip()
-
-
- 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
-
- self.valueList.insert(0, '')
-
- 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:
- self._tc.PushEventHandler(evtHandler)
-
- def BeginEdit(self, row, col, grid):
- self.startValue = grid.GetTable().GetValue(row, col)
- self._tc.SetSelection(self.valueMap[self.startValue])
- self._tc.SetFocus()
-
- def EndEdit(self, row, col, grid):
- changed = false
-
- val = self.valueList[self._tc.GetSelection()]
- if val != self.startValue:
- changed = true
- grid.GetTable().SetValue(row, col, "%s" % val) # update the table
-
- self.startValue = ''
- self._tc.SetSelection(0)
- return changed
-
-
- def Reset(self):
- self._tc.SetSelection(self.valueMap[self.startValue])
- #self._tc.SetInsertionPointEnd()
-
-
- def StartingKey(self, evt):
- key = evt.GetKeyCode()
- ch = None
- if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3,
WXK_NUMPAD4,
- WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8,
WXK_NUMPAD9]:
- ch = ch = chr(ord('0') + key - WXK_NUMPAD0)
-
- elif key < 256 and key >= 0 and chr(key):
- ch = chr(key)
- if not evt.ShiftDown():
- ch = string.lower(ch)
-
- if ch is not None:
- # For this example, replace the text. Normally we would append it.
- #self._tc.AppendText(ch)
- pass
- # self._tc.SetValue(ch)
- # self._tc.SetInsertionPointEnd()
- else:
- evt.Skip()
-
-
- class BoolCellEditor (CharCellEditor):
- def __init__(self, grid, attributes):
- CharCellEditor.__init__(self, grid, attributes)
-
- self.selectionList = ['FALSE','TRUE']
-
- def Create(self, parent, id, evtHandler):
- self._tc = wxComboBox(parent, id, "", style=wxCB_READONLY,
- choices=self.selectionList)
- self.SetControl(self._tc)
- if evtHandler:
- self._tc.PushEventHandler(evtHandler)
-
- def BeginEdit(self, row, col, grid):
- self.startValue = grid.GetTable().GetValue(row, col)
-
- self._tc.SetValue(self.startValue)
- self._tc.SetFocus()
-
- def EndEdit(self, row, col, grid):
- changed = false
-
- if self._tc.GetSelection():
- val = 'TRUE'
- else:
- val = 'FALSE'
- if val != self.startValue:
- changed = true
- grid.GetTable().SetValue(row, col, "%s" % val) # update the table
-
- self.startValue = ''
- self._tc.SetSelection(0)
- return changed
-
-
- def Reset(self):
- self._tc.SetValue(self.startValue)
- #self._tc.SetInsertionPointEnd()
-
-
- def StartingKey(self, evt):
- key = evt.GetKeyCode()
- ch = None
- if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3,
WXK_NUMPAD4,
- WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8,
WXK_NUMPAD9]:
- ch = ch = chr(ord('0') + key - WXK_NUMPAD0)
-
- elif key < 256 and key >= 0 and chr(key):
- ch = chr(key)
- if not evt.ShiftDown():
- ch = string.lower(ch)
-
- if ch is not None:
- # For this example, replace the text. Normally we would append it.
- #self._tc.AppendText(ch)
- pass
- # self._tc.SetValue(ch)
- # self._tc.SetInsertionPointEnd()
- else:
- evt.Skip()
--- 271,274 ----
Index: gnue/designer/src/ToolPanel.py
diff -c gnue/designer/src/ToolPanel.py:1.4 gnue/designer/src/ToolPanel.py:1.5
*** gnue/designer/src/ToolPanel.py:1.4 Sat Nov 30 18:00:35 2002
--- gnue/designer/src/ToolPanel.py Sun Dec 15 17:22:41 2002
***************
*** 45,51 ****
def __init__(self, instance, rootObject, parentWindow):
wxPanel.__init__(self,parentWindow,-1)
! events.EventAware.__init__(self, instance.eventController)
self.frame = parentWindow
self.instance = instance
--- 45,51 ----
def __init__(self, instance, rootObject, parentWindow):
wxPanel.__init__(self,parentWindow,-1)
! events.EventAware.__init__(self, instance)
self.frame = parentWindow
self.instance = instance
Index: gnue/designer/src/forms/Instance.py
diff -c gnue/designer/src/forms/Instance.py:1.23
gnue/designer/src/forms/Instance.py:1.24
*** gnue/designer/src/forms/Instance.py:1.23 Tue Dec 10 01:48:04 2002
--- gnue/designer/src/forms/Instance.py Sun Dec 15 17:22:41 2002
***************
*** 226,234 ****
# Used by TemplateParser to build a wizard.current dict
def buildWizardCurrentDict(self):
! return {'form': self.rootObject,
! 'logic': self.rootObject._logic,
! 'layout': self.rootObject._layout,
'page': self.visualEditor.page,
'block': self.visualEditor.block,
'object': self._currentObject}
--- 226,235 ----
# Used by TemplateParser to build a wizard.current dict
def buildWizardCurrentDict(self):
! baseForm = self._currentObject.findParentOfType('GFForm')
! return {'form': baseForm,
! 'logic': baseForm._logic,
! 'layout': baseForm._layout,
'page': self.visualEditor.page,
'block': self.visualEditor.block,
'object': self._currentObject}
Index: gnue/designer/src/schema/Instance.py
diff -c gnue/designer/src/schema/Instance.py:1.12
gnue/designer/src/schema/Instance.py:1.13
*** gnue/designer/src/schema/Instance.py:1.12 Fri Nov 22 20:48:02 2002
--- gnue/designer/src/schema/Instance.py Sun Dec 15 17:22:41 2002
***************
*** 36,45 ****
# Tool support...
from LayoutEditor import LayoutEditor
from TreeView import TreeView
from gnue.designer.PropertyEditor import PropertyEditor
from gnue.designer.DataSourceEditor import DataSourceEditor
from gnue.designer.SchemaViewer import SchemaViewer
! from gnue.designer.schema.VisualEditor import VisualEditor
--- 36,46 ----
# Tool support...
from LayoutEditor import LayoutEditor
from TreeView import TreeView
+ from TableEditor import TableEditor
from gnue.designer.PropertyEditor import PropertyEditor
from gnue.designer.DataSourceEditor import DataSourceEditor
from gnue.designer.SchemaViewer import SchemaViewer
! ##from gnue.designer.schema.VisualEditor import VisualEditor
***************
*** 54,60 ****
def loadBuffer(self, buffer):
! schema = GSParser.loadSchema (buffer, self, initialize=0)
schema.name = 'schema'
return schema
--- 55,61 ----
def loadBuffer(self, buffer):
! schema = GSParser.loadFile (buffer, self, initialize=0)
schema.name = 'schema'
return schema
***************
*** 69,99 ****
def inventoryObject(self, object):
if isinstance(object, Objects.GSTables):
self.tables = object
!
! if isinstance(object, Objects.GSTable):
self._tableMappings[object.name] = object
!
!
! def createVisualEditor(self):
! return LayoutEditor(self, self)
!
def createTools(self):
self.addTool(_('treeEditor'), _('Object Navigator'), TreeView)
self.addTool(_('propertyEditor'), _('Property Inspector'), PropertyEditor)
self.addTool(_('schemaViewer'), _('Schema Navigator'), SchemaViewer)
! self.addTool(_('visualEditor'), _('Visual Editor'), VisualEditor)
def createWizards(self):
self.loadWizards(wizards)
-
def preSave(self):
pass
! # Hack having to do with UIwxpython import
! def uiEventTrap(self, event):
! pass
--- 70,109 ----
def inventoryObject(self, object):
if isinstance(object, Objects.GSTables):
self.tables = object
! elif object._type == 'GSTable':
self._tableMappings[object.name] = object
! object._fieldList = []
! object._fieldMap = {}
! elif object._type == 'GSField':
! table = object.findParentOfType('GSTable')
! table._fieldList.append(object)
! table._fieldMap[object.name.lower()] = object
def createTools(self):
self.addTool(_('treeEditor'), _('Object Navigator'), TreeView)
self.addTool(_('propertyEditor'), _('Property Inspector'), PropertyEditor)
self.addTool(_('schemaViewer'), _('Schema Navigator'), SchemaViewer)
! self.addTool(_('tableEditor'), _('Table/Field Editor'), TableEditor)
! # self.addTool(_('visualEditor'), _('Visual Editor'), VisualEditor)
def createWizards(self):
self.loadWizards(wizards)
def preSave(self):
pass
! # Used by TemplateParser to build a wizard.current dict
! def buildWizardCurrentDict(self):
! return {'schema': self.rootObject,
! ## 'tables': self.rootObject._tables,
! 'table': self.tableEditor.table,
! ## 'field': self.visualEditor.page,
! 'object': self._currentObject}
!
!
! ## # Hack having to do with UIwxpython import
! ## def uiEventTrap(self, event):
! ## pass
Index: gnue/designer/src/schema/TreeView.py
diff -c gnue/designer/src/schema/TreeView.py:1.3
gnue/designer/src/schema/TreeView.py:1.4
*** gnue/designer/src/schema/TreeView.py:1.3 Tue Aug 6 11:06:29 2002
--- gnue/designer/src/schema/TreeView.py Sun Dec 15 17:22:41 2002
***************
*** 38,44 ****
self.rootDescr = 'Schema'
BaseTreeView.__init__(self, instance, root, parent)
! self.SetPyData(self.rootObject._treeItem, self.rootObject)
self.rootObject.walk(self.inventoryObject)
--- 38,44 ----
self.rootDescr = 'Schema'
BaseTreeView.__init__(self, instance, root, parent)
! self.tree.SetPyData(self.rootObject._treeItem, self.rootObject)
self.rootObject.walk(self.inventoryObject)
***************
*** 47,61 ****
icon = 'properties'
try:
parentTreeItem = object._parent._treeItem
! except AttributeError:
parentTreeItem = None
# TODO:
print "The parent object of this object has not been registered to "+\
"the TreeView inventory. It is not possible to add this "+\
"object to the inventory at the moment. This needs to be "+\
"fixed. (Obj: ",object,")."
!
! return
if object._type == 'GSTables':
icon = 'datasource'
elif object._type == 'GSTable':
--- 47,61 ----
icon = 'properties'
try:
parentTreeItem = object._parent._treeItem
! except AttributeError:
parentTreeItem = None
# TODO:
print "The parent object of this object has not been registered to "+\
"the TreeView inventory. It is not possible to add this "+\
"object to the inventory at the moment. This needs to be "+\
"fixed. (Obj: ",object,")."
!
! return
if object._type == 'GSTables':
icon = 'datasource'
elif object._type == 'GSTable':
***************
*** 65,71 ****
object._treeItem = self.AppendItem(parentTreeItem,
"%s" % object.getDescription())
! self.SetPyData(object._treeItem, object)
! #self.SetItemImage(object._treeItem, treeIconMap[icon])
--- 65,71 ----
object._treeItem = self.AppendItem(parentTreeItem,
"%s" % object.getDescription())
! self.tree.SetPyData(object._treeItem, object)
! #self.tree.SetItemImage(object._treeItem, treeIconMap[icon])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/designer/src EventEditor.py Instance.py Pr...,
Jason Cater <=