[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef samples/zipcode/zip_code.gfd src/GFF...
From: |
James Thompson |
Subject: |
gnue/gnuef samples/zipcode/zip_code.gfd src/GFF... |
Date: |
Thu, 26 Oct 2000 14:59:55 -0700 |
CVSROOT: /cvs
Module name: gnue
Changes by: James Thompson <address@hidden> 00/10/26 14:59:54
Modified files:
gnuef/samples/zipcode: zip_code.gfd
gnuef/src : GFForm.py GFObjects.py UIbase.py UIwxpython.py
Log message:
Status bar now has usefull info
Form alert events
misc clean up
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/samples/zipcode/zip_code.gfd.diff?r1=1.12&r2=1.13
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFForm.py.diff?r1=1.29&r2=1.30
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFObjects.py.diff?r1=1.26&r2=1.27
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIbase.py.diff?r1=1.11&r2=1.12
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIwxpython.py.diff?r1=1.22&r2=1.23
Patches:
Index: gnue/gnuef/samples/zipcode/zip_code.gfd
diff -u gnue/gnuef/samples/zipcode/zip_code.gfd:1.12
gnue/gnuef/samples/zipcode/zip_code.gfd:1.13
--- gnue/gnuef/samples/zipcode/zip_code.gfd:1.12 Thu Oct 26 12:30:48 2000
+++ gnue/gnuef/samples/zipcode/zip_code.gfd Thu Oct 26 14:59:54 2000
@@ -16,14 +16,26 @@
<page>
<block name="zip" datasource="zips">
<label text="City" x="5" y="10"/>
- <entry name="city" field="city" x="5" y="20" width="150" height="20"
visibleCount="10">
+ <entry name="city" field="city" x="5" y="20" width="150" height="20"
visibleCount="10" uppercase="" readonly="">
+ <options>
+ <tip>Don't eat yellow snow</tip>
+ </options>
</entry>
<label text="State" x="65" y="10"/>
- <entry name="state" field="state" x="65" y="20" width="150" height="20"
visibleCount="10" uppercase="" foreign_key="validator.state"
foreign_key_description="description" style="dropdown"/>
+ <entry name="state" field="state" x="65" y="20" width="150" height="20"
visibleCount="10" uppercase="" foreign_key="validator.state"
foreign_key_description="description" style="dropdown">
+ <options>
+ <tip>Don't accept rides from strainger</tip>
+ </options>
+ </entry>
<label text="Zip" x="125" y="10"/>
- <entry name="zip" field="zip" x="125" y="20" width="150" height="20"
visibleCount="10" numeric="" max_length="5"/>
+ <entry name="zip" field="zip" x="125" y="20" width="150" height="20"
visibleCount="10" numeric="" max_length="5">
+ <options>
+ <tip>Don't ask, just back away</tip>
+ </options>
+ </entry>
+
</block>
</page>
Index: gnue/gnuef/src/GFForm.py
diff -u gnue/gnuef/src/GFForm.py:1.29 gnue/gnuef/src/GFForm.py:1.30
--- gnue/gnuef/src/GFForm.py:1.29 Thu Oct 26 12:30:48 2000
+++ gnue/gnuef/src/GFForm.py Thu Oct 26 14:59:54 2000
@@ -111,6 +111,8 @@
self.triggerns[block.name] = block
except AttributeError: pass
self.walk(self.initTriggers)
+
+ self.updateStatus()
#
# begin routines made for walking
@@ -164,6 +166,15 @@
# end of routines made for walking
#
+ def updateStatus(self):
+ if hasattr(self.currentEntry,'tip'):
+ tip = self.currentEntry.tip
+ else:
+ tip = None
+
+ status =
self.currentBlock.dataSourceLink.resultSetStatus[self.currentBlock.currentRecord]
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[tip,status,self.insertMode,self.currentBlock.currentRecord+1,self.currentBlock.recordCount+1]))
+
def findValue(self, blockname, fieldname):
for block in self.blockList:
if block.name == blockname:
@@ -177,6 +188,7 @@
def toggleInsertMode(self,event):
self.insertMode = not self.insertMode
+ self.updateStatus()
#
# Incomming Event handlers
@@ -190,33 +202,47 @@
self.dispatchEvent(GFEvent('uiNEXTRECORD',self.currentEntry))
self.dispatchEvent(GFEvent('nextRECORD',self.currentBlock))
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
-
+ self.updateStatus()
def prevRecord(self, event):
self.dispatchEvent(GFEvent('uiPREVRECORD',self.currentEntry))
self.dispatchEvent(GFEvent('prevRECORD',self.currentBlock))
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
def newRecord(self, event):
- if not self.__dict__.has_key('readonly'):
+ if not hasattr(self,'readonly'):
self.dispatchEvent(GFEvent('newRECORD',self.currentBlock))
+ self.updateStatus()
+ else:
+ self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
def deleteRecord(self, event):
- if not self.__dict__.has_key('readonly'):
+ if not hasattr(self,'readonly'):
self.dispatchEvent(GFEvent('deleteRECORD',self.currentBlock))
+ self.updateStatus()
+ else:
+ self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
+
def requestQuery(self, event):
self.dispatchEvent(GFEvent('initQUERY',self.currentBlock))
-
+ self.updateStatus()
+
def executeQuery(self, event):
self.dispatchEvent(GFEvent('processQUERY',self.currentBlock))
+ self.updateStatus()
def executeCommit(self, event):
- if not self.__dict__.has_key('readonly'):
+ if not hasattr(self,'readonly'):
self.dispatchEvent(GFEvent('processCOMMIT',self.currentBlock))
+ else:
+ self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
+
def recordSwitched(self, event):
self.dispatchEvent(GFEvent('updateENTRY',event.data))
+ self.updateStatus()
def notifyDetailBlocks(self, event):
# if self.mode == 'normal':
@@ -234,7 +260,7 @@
if not self.currentEntry.verifyValue(): return
for object in self.currentEntry.parent.children:
# Put the first field as the next to rollover
- if object.getObjectType()=='GFEntry'and not
object.__dict__.has_key('hidden'):
+ if object.getObjectType()=='GFEntry'and not hasattr(object,'hidden'):
if nextEntry == None: nextEntry = object
if object == self.currentEntry:
@@ -253,6 +279,7 @@
nextEntry.processTrigger('Post-FocusIn')
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
#
# previousEntry
@@ -283,6 +310,7 @@
nextEntry.processTrigger('Post-FocusIn')
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
#
# changeFocus
@@ -300,6 +328,7 @@
event.data.processTrigger('Post-FocusIn')
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
#
# nextBlock
@@ -337,6 +366,7 @@
self.dispatchEvent(GFEvent('gotoPAGE',self.currentPage));
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
#
# previousBlock
@@ -371,6 +401,7 @@
self.dispatchEvent(GFEvent('gotoPAGE',self.currentPage));
self.dispatchEvent(GFEvent('gotoENTRY',self.currentEntry));
+ self.updateStatus()
#
# cursorMove
@@ -415,16 +446,16 @@
def keyPress(self, event):
if GFOptions.DEBUG:
print "Keypress event", event.data
- if not self.currentEntry.__dict__.has_key('readonly'):
+ if not hasattr(self.currentEntry,'readonly'):
currentvalue = self.currentEntry.getValue()
- if self.currentEntry.__dict__.has_key('lowercase'):
+ if hasattr(self.currentEntry,'lowercase'):
event.data = string.lower(event.data)
- if self.currentEntry.__dict__.has_key('uppercase'):
+ if hasattr(self.currentEntry,'uppercase'):
event.data = string.upper(event.data)
- if self.currentEntry.__dict__.has_key('max_length'):
+ if hasattr(self.currentEntry,'max_length'):
if len(currentvalue) >= int(self.currentEntry.max_length):
return
- if self.currentEntry.__dict__.has_key('numeric'):
+ if hasattr(self.currentEntry,'numeric'):
if not (event.data in string.digits or event.data in '.'):
return
@@ -438,7 +469,10 @@
self.currentEntry.setValue(currentvalue)
self.currentEntry.cursorPosition = self.currentEntry.cursorPosition + 1
self.dispatchEvent(GFEvent('updateENTRY',self.currentEntry));
+ else:
+ self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
+
#
# removeCharacter
#
Index: gnue/gnuef/src/GFObjects.py
diff -u gnue/gnuef/src/GFObjects.py:1.26 gnue/gnuef/src/GFObjects.py:1.27
--- gnue/gnuef/src/GFObjects.py:1.26 Thu Oct 26 12:30:48 2000
+++ gnue/gnuef/src/GFObjects.py Thu Oct 26 14:59:54 2000
@@ -220,7 +220,7 @@
#
def updateDetail(self,event):
- if self.__dict__.has_key('masterBlock'):
+ if hasattr(self,'masterBlock'):
if self.masterBlock == event.data.name:
fieldValue = self.form.findValue(self.masterBlock, self.masterField)
self.dataSourceLink.clear()
@@ -248,6 +248,7 @@
self.currentRecord = 0
self.dispatchEvent(GFEvent('switchRECORD',[oldRecord,self.currentRecord]));
self.dispatchEvent(GFEvent('requestPREVRECORD',None))
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,self.currentRecord,self.recordCount]))
@@ -270,6 +271,7 @@
if self.currentRecord > self.recordCount : self.currentRecord = 0
self.dispatchEvent(GFEvent('switchRECORD',[oldRecord,self.currentRecord]));
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,self.currentRecord,self.recordCount]))
#
# recordSwitched
@@ -326,6 +328,7 @@
self.recordCount =
self.form.datasourceDictionary[self.datasource].getLastRecordNumber()
self.dispatchEvent(GFEvent('switchRECORD',[-1,0]));
self.currentRecord = 0
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,self.currentRecord,self.recordCount]))
#
@@ -390,7 +393,7 @@
#
def verifyValue(self):
value = 1
- if self.__dict__.has_key('foreign_key'):
+ if hasattr(self,'foreign_key'):
value = 0
datasourceName,fieldName = string.split(self.foreign_key,'.')
datasource = self.block.form.datasourceDictionary[datasourceName]
@@ -406,12 +409,12 @@
#
def allowedValues(self):
values = {}
- if self.__dict__.has_key('foreign_key'):
+ if hasattr(self,'foreign_key'):
datasourceName,fieldName = string.split(self.foreign_key,'.')
datasource = self.block.form.datasourceDictionary[datasourceName]
for count in range(datasource.getLastRecordNumber()+1):
- if self.__dict__.has_key('foreign_key_description'):
+ if hasattr(self,'foreign_key_description'):
description = datasource.getField(count,self.foreign_key_description)
else:
description = None
@@ -457,7 +460,7 @@
# self.resultSet = []
self.emptyRecord = {}
- if self.__dict__.has_key('database'):
+ if hasattr(self,'database'):
if GFOptions.DEBUG:
print " linking to database %s" % (self.database)
@@ -470,9 +473,8 @@
self.clear()
- if self.__dict__.has_key('prequery'):
+ if hasattr(self,'prequery'):
self.query()
- print self.resultSet
def clear(self):
self.resultSet = []
@@ -495,7 +497,7 @@
if GFOptions.DEBUG:
print "Query with this in resultSet"
print self.resultSet[0]
- if self.__dict__.has_key('database'):
+ if hasattr(self,'database'):
if self.sql == None:
mask = {}
for key in self.fieldList:
@@ -521,7 +523,7 @@
def commit(self):
- if self.__dict__.has_key('database'):
+ if hasattr(self,'database'):
for count in range(len(self.resultSet)):
if GFOptions.DEBUG:
print "record %s is %s " % (count, self.resultSetStatus[count])
Index: gnue/gnuef/src/UIbase.py
diff -u gnue/gnuef/src/UIbase.py:1.11 gnue/gnuef/src/UIbase.py:1.12
--- gnue/gnuef/src/UIbase.py:1.11 Thu Oct 26 12:30:48 2000
+++ gnue/gnuef/src/UIbase.py Thu Oct 26 14:59:54 2000
@@ -101,9 +101,6 @@
if self.currentObject[0].getObjectType() in self.containerWidgets:
self.currentWidget.insert(0,widget[0])
-# if self.currentObject[0].__dict__.has_key('foreign_key'):
-# print "Allowed Values: ",self.currentObject[0].allowedValues()
-
except KeyError:
pass
Index: gnue/gnuef/src/UIwxpython.py
diff -u gnue/gnuef/src/UIwxpython.py:1.22 gnue/gnuef/src/UIwxpython.py:1.23
--- gnue/gnuef/src/UIwxpython.py:1.22 Thu Oct 26 12:30:48 2000
+++ gnue/gnuef/src/UIwxpython.py Thu Oct 26 14:59:54 2000
@@ -61,8 +61,10 @@
self.incommingEvent = {'gotoENTRY' : self.switchFocus,
'updateENTRY' : self.updateEntry,
'gotoPAGE' : self.gotoPage,
+ 'formALERT' : self.formAlert,
'uiNEXTRECORD' : self.adjustMultiView,
- 'uiPREVRECORD' : self.adjustMultiView
+ 'uiPREVRECORD' : self.adjustMultiView,
+ 'uiUPDATESTATUS': self.updateStatus
}
# Create the UI from the GFForm passed in
@@ -146,13 +148,32 @@
#print self.formToUI[event.data]
self.formToUI[event.data][0][index].SetFocus()
+ def updateStatus(self,event):
+ tip, recordStatus, insertMode, currentRecord, maxRecord =event.data
+
+ if tip != None:
+ self.statusBar.SetStatusText(tip,0)
+
+ if recordStatus != None:
+ self.statusBar.SetStatusText(recordStatus,1)
+
+ if insertMode != None:
+ if int(insertMode) == 1:
+ self.statusBar.SetStatusText('INS',2)
+ else:
+ self.statusBar.SetStatusText('OVR',2)
+
+ if currentRecord != None and maxRecord != None:
+ self.statusBar.SetStatusText(string.strip("%s/%s" %
(currentRecord,maxRecord)),3)
+
+
def updateEntry(self,event):
index = self.formToUI[event.data][1]
block = event.data.block # .form.currentBlock
currentRecord = block.currentRecord
- if event.data.__dict__.has_key('style'):
+ if hasattr(event.data, 'style'):
style = event.data.style
else:
style = 'text'
@@ -328,7 +349,7 @@
container = self.currentWidget[0]
widget = []
- if not object.__dict__.has_key('hidden'):
+ if not hasattr(object,'hidden'):
#jamest this is probably wrong way to do but be patient. :)
@@ -342,7 +363,7 @@
# except:
# pass
- if not object.__dict__.has_key('visibleCount'):
+ if not hasattr(object,'visibleCount'):
# count = int(object.visibleCount)
#else:
object.visibleCount = 1
@@ -375,8 +396,11 @@
self.frame = wxFrame(NULL, -1, "",
wxDefaultPosition, wxSize(int(self.form.width),
int(self.form.height)))
- self.frame.CreateStatusBar();
- self.frame.SetStatusText( "Welcome to GNUe Forms! Would someone please
tell us we can stop coding?" );
+ self.statusBar = self.frame.CreateStatusBar()
+ self.statusBar.SetFieldsCount(4)
+ self.statusBar.SetStatusWidths([-1,100,50,100])
+
+ self.frame.SetStatusText( "Welcome to GNUe Forms! Would someone please
tell us we can stop coding?" )
menu = wxMenu()
menu.Append( 100, "&About..." )
@@ -415,6 +439,10 @@
dlg.ShowModal()
dlg.Destroy()
+ def formAlert(self, event):
+ wxBell()
+ self.statusBar.SetStatusText(event.data,0)
+
def TimeToQuit(self, event):
@@ -426,13 +454,13 @@
container = self.currentWidget[0]
widget = []
- if not object.__dict__.has_key('visibleCount'):
+ if not hasattr(object,'visibleCount'):
object.visibleCount = 1
count = int(object.visibleCount)
- if object.__dict__.has_key('style'):
+ if hasattr(object,'style'):
style = object.style
else:
style = 'text'