[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef/designer/src GFDesigner.py Debugger....
From: |
Jason Cater |
Subject: |
gnue/gnuef/designer/src GFDesigner.py Debugger.... |
Date: |
Tue, 12 Jun 2001 10:18:26 -0700 |
CVSROOT: /home/cvs
Module name: gnue
Changes by: Jason Cater <address@hidden> 01/06/12 10:18:26
Modified files:
gnuef/designer/src: GFDesigner.py
Added files:
gnuef/designer/src: Debugger.py Instance.py LayoutHandler.py
MenuBar.py
Removed files:
gnuef/designer/src: GFDDebug.py
Log message:
Split code into multiple files. Changed moving and resizing so that all
multi-record widgets move/resize as well
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/Debugger.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/Instance.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/LayoutHandler.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/MenuBar.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/designer/src/GFDesigner.py.diff?cvsroot=OldCVS&tr1=1.8&tr2=1.9&r1=text&r2=text
Patches:
Index: gnue/gnuef/designer/src/GFDesigner.py
diff -u gnue/gnuef/designer/src/GFDesigner.py:1.8
gnue/gnuef/designer/src/GFDesigner.py:1.9
--- gnue/gnuef/designer/src/GFDesigner.py:1.8 Mon Jun 11 15:03:34 2001
+++ gnue/gnuef/designer/src/GFDesigner.py Tue Jun 12 10:18:26 2001
@@ -30,16 +30,8 @@
from gnue.common import GDebug, GConfig
from gnue.common.GClientApp import GClientApp
from gnue.forms import GFForm, GFInstance, GFParser, GFObjects, GFTrigger,
GFLibrary, UIwxpython
-from GFDDebug import DebugSession
+from Instance import *
-ID_NEW = 101
-ID_OPEN = 102
-ID_SAVE = 103
-ID_SAVE_AS = 104
-ID_CLOSE = 105
-ID_EXIT = 106
-ID_ABOUT = 107
-ID_RUN = 108
TITLE = "GNUe Forms Designer"
VERSION = "pre0.0.1"
@@ -109,572 +101,6 @@
dlg.ShowModal()
dlg.Destroy()
-
-#
-#
-#
-class MainMenuBar(wxMenuBar):
- def __init__(self, frame):
- wxMenuBar.__init__(self)
-
- self._frame = frame
-
- self._file = wxMenu()
- self._file.Append(ID_NEW, "&New", "Create a new form")
- self._file.Append(ID_OPEN, "&Open...", "Open an existing form")
- self._file.Append(ID_SAVE, "&Save", "Save the current form")
- self._file.Append(ID_SAVE_AS, "Save &As...", "Save the current form under
a new name")
- self._file.AppendSeparator()
- self._file.Append(ID_CLOSE, "&Close", "Close the current form")
- self._file.AppendSeparator()
- self._file.Append(ID_EXIT, "E&xit", "Exit GNUe Forms Designer")
- EVT_MENU (frame, ID_NEW, frame._app.OnNew)
- EVT_MENU (frame, ID_OPEN, frame._app.OnOpen)
- EVT_MENU (frame, ID_SAVE, frame.OnSave)
- EVT_MENU (frame, ID_SAVE_AS, frame.OnSaveAs)
- EVT_MENU (frame, ID_CLOSE, frame.OnClose)
- EVT_MENU (frame, ID_EXIT, frame._app.OnExit)
-
- self._help = wxMenu()
- self._help.Append(ID_ABOUT, "&About...", "More information about GNUe
Forms Designer")
- EVT_MENU (frame, ID_ABOUT, frame._app.OnAbout)
-
- self._edit = wxMenu()
- self._window = wxMenu()
-
- self._debug = wxMenu()
- self._debug.Append(ID_RUN, '&Run', "Run the current form")
- EVT_MENU (frame, ID_RUN, frame.OnDebugRun)
-
- self.Append(self._file, '&File')
- self.Append(self._edit, '&Edit')
- self.Append(self._debug, '&Debug')
- self.Append(self._window, '&Window')
- self.Append(self._help, '&Help')
-
-class GFDInstance(GFInstance.GFInstance, wxFrame):
- def __init__(self, app, location=None):
- GFInstance.GFInstance.__init__(self, app, -1, app.connections, None,
disableSplash=1)
- wxFrame.__init__(self, NULL, -1, "")
-
- self._app = app
- self._lastGenericNameSeq = {}
- self.nameMappings = {}
- app.addInstance(self)
-
- self._pages = []
-
- self.widgets = UIwxpython.WIDGETS
-
- if location == None:
- self._path = ""
- self._form = GFForm.GFForm()
- options = GFObjects.GFOptions(self._form)
- GFObjects.GFOption(options, "title","Untitled Form")
- GFObjects.GFOption(options, "height","12")
- GFObjects.GFOption(options, "width","40")
- GFObjects.GFPage(self._form)
- self.SetTitle (TITLE + " - Untitled Form")
- else:
- self._path = location
- fileHandle = open(location,'r')
- self._form = GFParser.loadForm (fileHandle, self, initialize=0)
- fileHandle.close()
- self.SetTitle (TITLE + " - " + self._path)
-
- self.CreateStatusBar()
- self.SetStatusText('Moo!')
- self.SetMenuBar(MainMenuBar(self))
- self.Show(true)
-
- # Split Plane
- vsplitter = wxSplitterWindow (self, -1, style=wxSP_3D|wxNO_3D)
- vsplitter.SetMinimumPaneSize (100)
-
- hsplitter = wxSplitterWindow (vsplitter, -1, style=wxSP_3D|wxNO_3D)
- hsplitter.SetMinimumPaneSize (100)
-
-
- # Create tree
- tID = wxNewId()
- self.tree = wxTreeCtrl (hsplitter, tID, style=wxTR_HAS_BUTTONS |
- wxTR_EDIT_LABELS |
- wxTR_HAS_VARIABLE_ROW_HEIGHT)
-
- EVT_TREE_BEGIN_LABEL_EDIT(self.tree, tID, self.OnTreeLabelEdit)
- EVT_TREE_END_LABEL_EDIT(self.tree, tID, self.OnTreeLabelEditEnd)
- EVT_TREE_ITEM_ACTIVATED(self.tree, tID, self.OnTreeItemActivated)
-
- self.editor = wxTextCtrl(hsplitter, -1, style = wxTE_MULTILINE)
-
- self.previewPane = wxScrolledWindow(vsplitter, -1, style=wxHSCROLL |
wxVSCROLL)
- self.previewPane.SetBackgroundColour(wxWHITE)
-
-
-
- self._form._treeItem = self.tree.AddRoot("Form")
- self._form._treeItemFormProperties = \
- self.tree.AppendItem(self._form._treeItem, "Properties")
- self._form._treeItemImportedLibraries = \
- self.tree.AppendItem(self._form._treeItem, "Imported Libraries")
- self._form._treeItemDataSources = \
- self.tree.AppendItem(self._form._treeItem, "Data Sources")
- self._form._treeItemNamedTriggers = \
- self.tree.AppendItem(self._form._treeItem, "Shared Triggers")
- self._form._treeItemPageLayout = \
- self.tree.AppendItem(self._form._treeItem, "Page Layout")
-
- self._form.walk(self.inventoryLoadedItems)
-
- self._pageList = []
-
- self._currentPage = self._pages[0]
- hsplitter.SplitHorizontally (self.tree, self.editor)
- vsplitter.SplitVertically(hsplitter, self.previewPane)
- vsplitter.SetSashPosition (180, true)
- self.vsplitter = vsplitter
- self.pageNameLabel = wxStaticText(self.previewPane, -1, "Page: ",
pos=wxPoint(10,20))
- self.drawPage(self._currentPage)
- hsplitter.SetSashPosition (360, true)
- self.tree.Expand(self._form._treeItem)
- self.Refresh()
-
-
- def drawPage(self, page):
-
- self.panel = GridPane(self, self.previewPane, wxPoint(10,60))
- self.panelColor = self.panel.GetBackgroundColour()
- self.panelGridColor = wxColour(self.panelColor.Red()+16,
- self.panelColor.Green()+16,
- self.panelColor.Blue()+16)
-
- self.pageNameLabel.SetLabel("Page: %s" % page.name)
-
- UIwxpython.initFont(self.panel)
-
- maxWidth, maxHeight, maxDescent, maxLeading = [0,0,0,0]
-
- # need to add string.punctionation if we dump python 1.5.2
- checkchars = string.letters+string.digits+"-\|"
- for letter in checkchars:
- width,height,descent,leading = self.panel.GetFullTextExtent(letter)
- maxWidth = maxWidth > width and maxWidth or width
- maxHeight = maxHeight > height and maxHeight or height
- maxDescent = maxDescent > descent and maxDescent or descent
- maxLeading = maxLeading > leading and maxLeading or leading
-
- self.charWidth = maxWidth+maxLeading
- self.charHeight = maxHeight+maxDescent
-
- self.borderPercentage = (int(GConfig.get('borderPercentage')) / 100.0)
- self.textPercentage = (int(GConfig.get('textPercentage')) / 100.0)
-
- width = int(self._form.getOption('width'))
- height = int(self._form.getOption('height'))
-
- self.widgetWidth = (self.charWidth * self.borderPercentage)
- self.widgetHeight = (self.charHeight * self.borderPercentage) + 3
- self.textWidth = self.charWidth * self.textPercentage
- self.textHeight = self.charHeight * self.textPercentage
-
- self.gridWidth = self.widgetWidth
- self.gridHeight = self.widgetHeight
-
- self.menu_sb_space=0 # the extra spaces needed by the menu, toolbar and
statusbar
-
- self.panel.SetSize(wxSize(int(width)*int(self.widgetWidth),
- int(height)*int(self.widgetHeight)))
-
- page.walk(self.__drawItem)
-
-# EVT_LEFT_UP(self.panel, self.OnLeftUp)
-# EVT_LEFT_DOWN(self.panel, self.OnLeftDown)
-# EVT_RIGHT_UP(self.panel, self.OnRightUp)
-# EVT_MOTION(self.panel, self.OnMotion)
-
-
- def __drawItem(self, object):
- if self.widgets.has_key(object.getObjectType()):
-# object._widgetContainer = WidgetContainer(self, self.panel)
- object._widget = self.widgets[object.getObjectType()]\
- (object,self.panel, self.textWidth, self.textHeight, \
- self.widgetWidth, self.widgetHeight, self,initialize=0)
- object._widgetHandler = WidgetHandler(self, object, object._widget)
-# object._widgetContainer.set(object._widget)
- object._widget._object = object
-
-
- def uiEventTrap(self, event):
- pass
-
- def inventoryLoadedItems (self, object):
-
- if object != self._form:
-
- if hasattr(object, 'name') and \
- (object.name == None or (
- object.name[:3] == "__<" and \
- object.name[-3:] == ">__")):
- object.name = self.getNextGenericName(object.getObjectType()[2:])
-
- if isinstance(object, GFObjects.GFOptions) and \
- object._parent == self._form:
- object._treeItem = self._form._treeItemFormProperties
- else:
- parentTreeItem = object._parent._treeItem
- if isinstance(object, GFTrigger.GFTrigger) and \
- object.type == 'NAMED':
- parentTreeItem = self._form._treeItemNamedTriggers
- elif isinstance(object, GFTrigger.GFTrigger):
- parentTreeItem = object._parent._treeItemTrigger
- elif isinstance(object, GFObjects.GFDataSource):
- parentTreeItem = self._form._treeItemDataSources
- elif isinstance(object, GFObjects.GFPage) and \
- object._parent == self._form:
- self._pages.append(object)
- parentTreeItem = self._form._treeItemPageLayout
- object._treeItem = self.tree.AppendItem(parentTreeItem,
- "%s" % object.getDescription())
-
- if isinstance (object, GFTrigger.GFTriggerAware):
- object._treeItemTrigger = \
- self.tree.AppendItem(object._treeItem, "Events")
-
-
- def getNextGenericName (self, type):
- while 1:
- if self._lastGenericNameSeq.has_key(string.lower(type)):
- self._lastGenericNameSeq[string.lower(type)] = \
- self._lastGenericNameSeq[string.lower(type)] + 1
- else:
- self._lastGenericNameSeq[string.lower(type)] = 1
- name = "%s%s_%s" % (string.upper(type[0]), \
- string.lower(type[1:]), self._lastGenericNameSeq[string.lower(type)])
- if not self.nameMappings.has_key(name):
- break
-
- return name
-
- def saveForm(self):
- location = self._path
- fileHandle = None
- fileHandle2 = None
- try:
- fileHandle = open(location,'r')
- fileHandle2 = open(location + "~",'w')
- fileHandle2.writelines(fileHandle.readlines())
-# except:
-# pass
- finally:
- if fileHandle != None:
- fileHandle.close()
- if fileHandle2 != None:
- fileHandle.close()
-
- options = []
- imports = []
- datasources = []
- triggers = []
- pages = []
- other = []
-
- for child in self._form._children:
- if isinstance(child, GFObjects.GFOptions):
- options.append(child)
- elif isinstance(child, GFLibrary.GFImport):
- imports.append(child)
- elif isinstance(child, GFObjects.GFDataSource) or \
- (isinstance(child, GFLibrary.GFImportItem) and
- child._type == 'GFimport-datasource'):
- datasources.append(child)
- elif isinstance(child, GFTrigger.GFTrigger) or \
- (isinstance(child, GFLibrary.GFImportItem) and
- child._type == 'GFimport-trigger'):
- triggers.append(child)
- elif isinstance(child, GFObjects.GFPage) or \
- (isinstance(child, GFLibrary.GFImportItem) and
- child._type == 'GFimport-page'):
- pages.append(child)
- else:
- other.append(child)
-
-
- # Reorder the children so items of same class are grouped
- self._form._children = []
- for child in options:
- self._form._children.append(child)
- for child in imports:
- self._form._children.append(child)
- for child in datasources:
- self._form._children.append(child)
- for child in triggers:
- self._form._children.append(child)
- for child in pages:
- self._form._children.append(child)
- for child in other:
- self._form._children.append(child)
-
- fileHandle = open(location,'w')
- fileHandle.write('<?xml version="1.0"?>\n\n')
- fileHandle.write('<!-- %s (%s)\n Form saved on: %s -->\n\n' \
- % (TITLE, VERSION, \
- time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))))
- fileHandle.write(self._form.dumpXML(treeDump=1))
- fileHandle.close()
-
-
- def OnTreeLabelEdit(self, event):
- pass
-
- def OnTreeLabelEditEnd(self, event):
- pass
-
- def OnTreeItemActivated(self, event):
- pass
-
- def OnSave(self, event):
- if not len(self._path):
- self.OnSaveAs(event)
- else:
- self.saveForm()
-
- def OnSaveAs(self, event):
- pass
-
- def OnClose(self, event):
- self._app.removeInstance(self)
- self.Close()
-
- def OnDebugRun (self, event):
- DebugSession(self)
-
- def OnLeftDown(self, event):
- print "Left down"
-# self.curLine = []
- self.x, self.y = event.GetPositionTuple()
- self.panel.CaptureMouse()
-
-
- def OnLeftUp(self, event):
- print "Left up"
-# self.lines.append( (self.colour, self.thickness, self.curLine) )
-# self.curLine = []
- self.panel.ReleaseMouse()
-
-
- def OnRightUp(self, event):
- pt = event.GetPosition()
- print "Right click"
-# self.PopupMenu(self.menu, pt)
-
-
- def OnMotion(self, event):
- if event.Dragging() and event.LeftIsDown():
- print "Dragging"
-# dc = wxClientDC(self.instance.panel)
-# dc.BeginDrawing()
-# dc.SetPen(self.pen)
- pos = event.GetPositionTuple()
- coords = (self.x, self.y) + pos
-
-# self.curLine.append(coords)
-# dc.DrawLine(self.x, self.y, pos[0], pos[1])
-# self.x, self.y = pos
-# dc.EndDrawing()
-
-
-#
-#
-#
-class WidgetHandler:
- def __init__(self, instance, object, widget):
- print widget
- self.instance = instance
- self.object = object
- self.widget = widget.widgets[0]
- self.mainWidget = widget
- self.hasFocus = 0
- self.menu = None
-
- self.setAllChildren(EVT_KEY_UP, self.widget, self.keyTrap)
-# self.setAllChildren(EVT_PAINT, self.widget, self.paintTrap)
-# self.setAllChildren(EVT_SET_FOCUS, self.widget, self.focusGainedTrap)
-# self.setAllChildren(EVT_KILL_FOCUS, self.widget, self.focusLostTrap)
-# self.setAllChildren(EVT_LEFT_UP, self.widget, self.instance.OnLeftUp)
-# self.setAllChildren(EVT_LEFT_DOWN, self.widget, self.instance.OnLeftDown)
-# self.setAllChildren(EVT_RIGHT_UP, self.widget, self.OnRightUp)
-# self.setAllChildren(EVT_MOTION, self.widget, self.instance.OnMotion)
- self.widget.Refresh()
-
- def setAllChildren(self, event, widget, trap):
-# print "Setting event on %s (%s)" % (widget,self.mainWidget.widgets)
- event(widget, trap)
- for child in widget.GetChildren():
- self.setAllChildren(event, child, trap)
-
- def focusGainedTrap(self, event):
- self.hasFocus = 1
- self.widget.Refresh()
-
- def focusLostTrap(self, event):
- print "Got Focus"
- self.hasFocus = 0
- self.widget.Refresh()
-
- def paintTrap(self, event):
- print "PaintTrap"
- dc = wxPaintDC(self.instance.panel)
- x,y = self.widget.GetPositionTuple()
- h,w = self.widget.GetSizeTuple()
- dc.SetPen(wxPen(wxBLUE))
- dc.DrawRectangle(x-1,y-1,h+2,w+2)
- event.Skip()
-
-
- def OnLeftDown(self, event):
-# self.curLine = []
-# self.x, self.y = event.GetPositionTuple()
- print "Left down"
- self.widget.CaptureMouse()
-
-
- def OnLeftUp(self, event):
-# self.lines.append( (self.colour, self.thickness, self.curLine) )
-# self.curLine = []
- print "Left up"
- self.widget.ReleaseMouse()
-
-
- def OnRightUp(self, event):
- pt = event.GetPosition()
- print "Right click"
-# self.PopupMenu(self.menu, pt)
-
-
- def OnMotion(self, event):
- if event.Dragging() and event.LeftIsDown():
- print "Dragging"
-# dc = wxClientDC(self.instance.panel)
-# dc.BeginDrawing()
-# dc.SetPen(self.pen)
- pos = event.GetPositionTuple()
-# coords = (self.x, self.y) + pos
-
-# self.curLine.append(coords)
- dc.DrawLine(self.x, self.y, pos[0], pos[1])
- self.x, self.y = pos
-# dc.EndDrawing()
-
-
- def keyTrap(self, event):
- if event.KeyCode() in (WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN):
- if event.AltDown() or event.MetaDown():
- if event.KeyCode() == WXK_LEFT and \
- hasattr(self.object, 'width'):
- self.object.width = self.object.width - 1
- w,h = self.widget.GetSizeTuple()
- self.widget.SetSize(wxSize(w-self.instance.gridWidth,h))
- if event.KeyCode() == WXK_RIGHT and \
- hasattr(self.object, 'width'):
- self.object.width = self.object.width + 1
- w,h = self.widget.GetSizeTuple()
- self.widget.SetSize(wxSize(w+self.instance.gridWidth,h))
- if event.KeyCode() == WXK_UP and \
- hasattr(self.object, 'height') and \
- self.object.height > 1:
- self.object.height = self.object.height - 1
- w,h = self.widget.GetSizeTuple()
- self.widget.SetSize(wxSize(w,h-self.instance.gridHeight))
- if event.KeyCode() == WXK_DOWN and \
- hasattr(self.object, 'height'):
- self.object.height = self.object.height + 1
- w,h = self.widget.GetSizeTuple()
- self.widget.SetSize(wxSize(w,h+self.instance.gridHeight))
- else:
- if event.KeyCode() == WXK_LEFT and \
- self.object.x > 0:
- self.object.x = self.object.x - 1
- x,y = self.widget.GetPositionTuple()
- self.widget.SetPosition(wxPoint(x-self.instance.gridWidth,y))
- if event.KeyCode() == WXK_RIGHT:
- self.object.x = self.object.x + 1
- x,y = self.widget.GetPositionTuple()
- self.widget.SetPosition(wxPoint(x+self.instance.gridWidth,y))
- if event.KeyCode() == WXK_UP and \
- self.object.x > 0:
- self.object.y = self.object.y - 1
- x,y = self.widget.GetPositionTuple()
- self.widget.SetPosition(wxPoint(x,y-self.instance.gridHeight))
- if event.KeyCode() == WXK_DOWN:
- self.object.y = self.object.y + 1
- x,y = self.widget.GetPositionTuple()
- self.widget.SetPosition(wxPoint(x,y+self.instance.gridHeight))
-
-
-#
-#
-#
-class WidgetContainer(wxPanel):
- def __init__(self, instance, parent):
- wxPanel.__init__(self,parent, -1)
- self.__instance = instance
- self.__hasFocus = 1
-
- def set(self, object):
- self.__object = object
- w,h = self.__object.widgets[0].GetSizeTuple()
- x,y = self.__object.widgets[0].GetPositionTuple()
- self.SetSize(wxSize(w+8, h+8))
- self.SetPosition(wxPoint(x-3, y-3))
-
- EVT_SIZE(object.widgets[0], self.resize)
-# EVT_PAINT(self, self.OnPaint)
-
- def gainFocus(self, event):
- self.__hasFocus = 1
-
- def loseFocus(self, event):
- self.__hasFocus = 0
-
- def resize(self, event):
- w,h = self.__object.widget[0].GetSizeTuple()
- self.SetSize(wxSize(w+8, h+8))
-
- def OnPaint(self, event):
- dc = wxPaintDC(self)
- w, h = self.GetSizeTuple()
- dc.SetPen(wxPen(wxBLUE))
- dc.DrawRect(0,0,1,1)
- dc.DrawRect(w-2,0,w-1,1)
- dc.DrawRect(0,h-2,1,h-1)
- dc.DrawRect(w-2,h-2,w-1,h-1)
- dc.SetBrush(wxBrush(self.__instance.panelColor))
- dc.DrawRect(2,2,w-3,h-3)
- event.Skip()
-
-
-#
-#
-#
-class GridPane(wxSashWindow):
- def __init__(self, instance, parent, pos):
- wxSashWindow.__init__(self, parent, -1, pos=pos)
- self.__showGrids = 1
- self.__instance = instance
- EVT_PAINT(self, self.OnPaint)
-
- def OnPaint(self, event):
- if self.__showGrids:
- dc = wxPaintDC(self)
- w, h = self.GetSizeTuple()
- dc.SetPen(wxPen(self.__instance.panelGridColor))
- for x in range(self.__instance.widgetWidth,w-2,
self.__instance.widgetWidth):
- dc.DrawLine(x,0,x,h-1)
-
- for y in
range(self.__instance.widgetHeight,h-2,self.__instance.widgetHeight):
- dc.DrawLine(0,y,w-1,y)
- event.Skip()
-
#
#
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnuef/designer/src GFDesigner.py Debugger....,
Jason Cater <=