[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef/src UIbase.py UIwxpython.py
From: |
James Thompson |
Subject: |
gnue/gnuef/src UIbase.py UIwxpython.py |
Date: |
Wed, 21 Feb 2001 18:08:29 -0800 |
CVSROOT: /cvs
Module name: gnue
Changes by: James Thompson <address@hidden> 01/02/21 18:08:29
Modified files:
gnuef/src : UIbase.py UIwxpython.py
Log message:
Moved more stuff to UI independent UIbase.py
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIbase.py.diff?r1=1.20&r2=1.21
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIwxpython.py.diff?r1=1.72&r2=1.73
Patches:
Index: gnue/gnuef/src/UIbase.py
diff -u gnue/gnuef/src/UIbase.py:1.20 gnue/gnuef/src/UIbase.py:1.21
--- gnue/gnuef/src/UIbase.py:1.20 Wed Feb 21 14:54:43 2001
+++ gnue/gnuef/src/UIbase.py Wed Feb 21 18:08:29 2001
@@ -89,6 +89,18 @@
#
+ #Note: new api. onInit is called during the main event loop of
+ # the UI (i.e. wxPython.mainLoop in this case)
+ #
+ def buildForm(self, form):
+ self.currentObject = [form]
+ self.form = form
+ # Create the UI from the GFForm passed in
+ self.buildUI()
+
+
+
+ #
# buildUI
#
# Creates the user interface from the form definition
@@ -125,6 +137,8 @@
if self.currentObject[0].getObjectType() in self.containerWidgets:
self.currentWidget.pop(0)
+
+
#############################################################################
#
# Generic Incomming Event Handlers
@@ -175,6 +189,15 @@
self._exit()
#
+ # switchFocus
+ #
+ # Moves the focus to a specific UI widget
+ #
+ def switchFocus(self, event):
+ index = self.formToUI[event.data][1]
+ self.formToUIWidget[event.data].indexedFocus(index)
+
+ #
# aboutBox
#
# Displays a modal about box on the screen.
@@ -194,7 +217,17 @@
about.showModal()
about.destroy()
-
+
+ #
+ # msgBox
+ #
+ def msgBox(self,event):
+ message = event.data.message
+ caption = event.data.caption
+ dialog = UI.UIMessageBox(self.mainWindow, message, caption)
+ dialog.ShowModal()
+ dialog.Destroy()
+
#
# adjustMultiView
#
@@ -249,6 +282,61 @@
index = block.recordCount
self.formToUI[entry][1] = index
+ #
+ # updateEntry
+ #
+ def updateEntry(self,event):
+ index = self.formToUI[event.data][1]
+
+ block = event.data.block
+ currentRecord = block.currentRecord
+
+ if hasattr(event.data, 'style'):
+ style = event.data.style
+ else:
+ style = 'text'
+
+ # Fill the prior spots
+ for count in range(index):
+ value =
block.dataSourceLink.getField(currentRecord-(index-count),event.data.field)
+ if style == 'dropdown':
+ value = event.data.allowedValues()[value]
+
+ self.formToUIWidget[event.data].setValue(value,count)
+
+ # fill currently indexed spot
+ if style == 'dropdown':
+ value = event.data.allowedValues()[event.data.getValue()]
+ else:
+ value = event.data.getValue()
+
+ self.formToUIWidget[event.data].setValue(value, index)
+
self.formToUIWidget[event.data].setCursorPosition(event.data.cursorPosition,
index)
+
+ # Fill trailing spots
+ #
+ # You must skip the matching index but
+ # you do not want to just add 1 to count
+ # as the formulas would then be off
+ count = index
+ while count < int(event.data.visibleCount):
+ if count != index:
+ if currentRecord+(count-index) > block.recordCount:
+ value = ""
+ else:
+ value =
block.dataSourceLink.getField(currentRecord+(count-index),event.data.field)
+ if style == 'dropdown':
+ value = event.data.allowedValues()[value]
+ self.formToUIWidget[event.data].setValue(value, count)
+ count = count +1
+
+#############################################################################
+#
+# UIWidget class
+#
+# A generic class that handles most the internals of widget management in
+# gnue forms
+#
class UIWidget:
def __init__(self, object, container, textWidth, textHeight, widgetWidth,
widgetHeight, interface):
Index: gnue/gnuef/src/UIwxpython.py
diff -u gnue/gnuef/src/UIwxpython.py:1.72 gnue/gnuef/src/UIwxpython.py:1.73
--- gnue/gnuef/src/UIwxpython.py:1.72 Wed Feb 21 14:54:43 2001
+++ gnue/gnuef/src/UIwxpython.py Wed Feb 21 18:08:29 2001
@@ -14,12 +14,12 @@
from GFForm import *
from GFEvent import *
-import GFOptions
-import GFDebug
from UIbase import *
-import string
import sys
+import string
+import GFDebug
+import GFOptions
#
# GFUserInterface
@@ -65,8 +65,8 @@
self.MainLoop() # simply call the wxApp's MainLoop method
#
+ # getModule
#
- #
def getModule(self):
return GFUserInterface.__module__
@@ -77,7 +77,6 @@
# It is used the build the basic UI
#
def OnInit(self):
-
wxInitAllImageHandlers()
#
@@ -233,15 +232,6 @@
self.mainWindow.Show(true)
return true
- #
- #Note: new api. onInit is called during the main event loop of
- # the UI (i.e. wxPython.mainLoop in this case)
- #
- def buildForm(self, form):
- self.currentObject = [form]
- self.form = form
- # Create the UI from the GFForm passed in
- self.buildUI()
def activateForm(self, form):
self.mainWindow.SetSize(wxSize(int(self.form.width)*int(self.widgetWidth),
@@ -298,68 +288,8 @@
#
# Processes the incomming events from other objects
#
- def updateEntry(self,event):
- index = self.formToUI[event.data][1]
-
- block = event.data.block
- currentRecord = block.currentRecord
-
- if hasattr(event.data, 'style'):
- style = event.data.style
- else:
- style = 'text'
-
- # Fill the prior spots
- for count in range(index):
- value =
block.dataSourceLink.getField(currentRecord-(index-count),event.data.field)
- if style == 'dropdown':
- value = event.data.allowedValues()[value]
-
- self.formToUI[event.data][0][count].SetEvtHandlerEnabled(FALSE)
- self.formToUI[event.data][0][count].SetValue(value)
- self.formToUI[event.data][0][count].SetEvtHandlerEnabled(TRUE)
- # fill currently indexed spot
- if style == 'dropdown':
- value = event.data.allowedValues()[event.data.getValue()]
- else:
- value = event.data.getValue()
-
- self.formToUI[event.data][0][index].SetEvtHandlerEnabled(FALSE)
- self.formToUI[event.data][0][index].SetValue(value)
- self.formToUI[event.data][0][index].SetEvtHandlerEnabled(TRUE)
-
-
self.formToUI[event.data][0][index].SetInsertionPoint(event.data.cursorPosition)
-
- # Fill trailing spots
- #
- # You must skip the matching index but
- # you do not want to just add 1 to count
- # as the formulas would then be off
- count = index
- while count < int(event.data.visibleCount):
- if count != index:
- if currentRecord+(count-index) > block.recordCount:
- value = ""
- else:
- value =
block.dataSourceLink.getField(currentRecord+(count-index),event.data.field)
- if style == 'dropdown':
- value = event.data.allowedValues()[value]
- self.formToUI[event.data][0][count].SetEvtHandlerEnabled(FALSE)
- self.formToUI[event.data][0][count].SetValue(value)
- self.formToUI[event.data][0][count].SetEvtHandlerEnabled(TRUE)
- count = count +1
-
- #
- # switchFocus
- #
- # Moves the focus to a specific UI widget
#
- def switchFocus(self, event):
- index = self.formToUI[event.data][1]
- self.formToUI[event.data][0][index].SetFocus()
-
- #
# gotoPage
#
# makes the requested page visible on the screen
@@ -368,6 +298,7 @@
index = self.formToUI[event.data][1]
self.visiblePage.Show(FALSE)
self.formToUI[event.data][0][index].Show(TRUE)
+
self.visiblePage = self.formToUI[event.data][0][index]
self.visiblePage.Show(TRUE)
self.visiblePage.SetSize(wxSize(int(self.form.width)*int(self.widgetWidth),
@@ -382,24 +313,6 @@
def formAlert(self, event):
wxBell()
self.statusBar.SetStatusText(event.data,0)
-
- #
- # msgBox
- #
- # Displays a modal message box on the screen
- #
- def msgBox(self, event):
- if hasattr(self,'frame'):
- parent = wxPyTypeCast( self.mainWindow, 'wxWindow' )
- else:
- parent = NULL
-
- message = event.data.message
- caption = event.data.caption
- dialog = wxMessageDialog(parent, message, caption,
style=wxOK|wxICON_EXCLAMATION )
- dialog.ShowModal()
- dialog.Destroy()
-
#############################################################################
#
@@ -633,23 +546,37 @@
#
# Provides a UI widget set of std functions to reduce the number of functions
# require in each UIclass listed below
-
class UIHelper:
def showModal(self):
self.ShowModal()
- def show(self):
- self.Show(TRUE)
+ def show(self, flag=TRUE, index=None):
+ if index:
+ self.widgets[index].Show(flag)
+ else:
+ self.Show(flag)
def destroy(self):
self.Destroy()
+
+ def indexedFocus(self, index):
+ self.widgets[index].SetFocus()
+
+ def setValue(self, value, index=0):
+ self.widgets[index].SetEvtHandlerEnabled(FALSE)
+ self.widgets[index].SetValue(value)
+ self.widgets[index].SetEvtHandlerEnabled(TRUE)
+
+
+ def setCursorPosition(self, position, index=0):
+ self.widgets[index].SetInsertionPoint(position)
#
# UILabel
#
# Widget set specific function that creates a single instance of a label
#
-class UILabel(UIWidget):
+class UILabel(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
style = wxALIGN_LEFT|wxST_NO_AUTORESIZE
@@ -671,7 +598,7 @@
#
# Widget set specific function that creates a single instance of a border box
#
-class UIBox(UIWidget):
+class UIBox(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
newWidget = wxStaticBox(container,-1,str(object.label),
wxPoint(int(object.x)*int(widgetWidth)+(int(widgetWidth)/2),
@@ -687,7 +614,7 @@
# Widget set specific function that creates a single instance of a scroll bar
used
# to navigate multiple records
#
-class UIScrollBar(UIWidget):
+class UIScrollBar(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
newWidget =wxScrollBar(container,-1,
wxPoint(int(object.x)*int(widgetWidth),(int(object.y)+spacer)*int(widgetHeight)),
@@ -700,7 +627,7 @@
#
# Widget set specific function that creates a single instance of a button
#
-class UIButton(UIWidget):
+class UIButton(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
newWidget = wxButton(container,-1,str(object.label),
wxPoint(int(object.x)*int(widgetWidth),(int(object.y)+spacer)*int(widgetHeight)),
@@ -716,7 +643,7 @@
#
# Widget set specific function that creates a single instance of a page
#
-class UIPage(UIWidget):
+class UIPage(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
newWidget = wxPanel(container, -1,wxDefaultPosition,container.GetSize())
newWidget.Show(FALSE)
@@ -731,7 +658,7 @@
#
# Widget set specific function that creates a single instance of a data entry
widget
#
-class UIEntry(UIWidget):
+class UIEntry(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
if hasattr(object,'style'):
style = object.style
@@ -776,7 +703,7 @@
#
# Widget set specific function that creates a single instance of a Form widget
#
-class UIForm(UIWidget):
+class UIForm(UIWidget, UIHelper):
def createWidget(self, object, container, textWidth, textHeight,
widgetWidth, widgetHeight,interface,spacer):
newWidget = wxPanel(interface.mainWindow.panel,-1, wxDefaultPosition)
EVT_CLOSE(interface.mainWindow,interface.closeTrap)
@@ -801,3 +728,12 @@
" Description: %s\n"
% (programVersion, formName
,formVersion,author,description),
"About", wxOK | wxICON_INFORMATION)
+#
+# UImessageBox
+#
+# A dialog box providing basic message info
+#
+class UIMessageBox(wxMessageDialog, UIHelper):
+ def __init__(self, interface, message, caption):
+ wxMessageDialog.__init__(self, interface, message, caption,
style=wxOK|wxICON_EXCLAMATION)
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnuef/src UIbase.py UIwxpython.py,
James Thompson <=