[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef INSTALL TODO client/gfclient samples...
From: |
James Thompson |
Subject: |
gnue/gnuef INSTALL TODO client/gfclient samples... |
Date: |
Tue, 12 Dec 2000 22:35:09 -0800 |
CVSROOT: /cvs
Module name: gnue
Changes by: James Thompson <address@hidden> 00/12/12 22:35:09
Modified files:
gnuef : INSTALL TODO
gnuef/client : gfclient
gnuef/samples/simple: form.gfd
gnuef/src : GFForm.py GFObjects.py GFOptions.py GFParser.py
UIbase.py UIwxpython.py
Log message:
ficed dropdowns not clearing on datasource clear
fixed hidden fields not working for entry widgets
implement sloppyFocus GFEntry option
added GFBox object for visual seperators (not implemented in any UI yet)
Visible indicator for multiple pages
GUI rolls to test login if DISPLAY var isn't set
converted the samples/simple/form.gfd to char x/y system
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/INSTALL.diff?r1=1.5&r2=1.6
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/TODO.diff?r1=1.29&r2=1.30
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/client/gfclient.diff?r1=1.6&r2=1.7
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/samples/simple/form.gfd.diff?r1=1.1&r2=1.2
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFForm.py.diff?r1=1.49&r2=1.50
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFObjects.py.diff?r1=1.44&r2=1.45
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFOptions.py.diff?r1=1.5&r2=1.6
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFParser.py.diff?r1=1.8&r2=1.9
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIbase.py.diff?r1=1.13&r2=1.14
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIwxpython.py.diff?r1=1.42&r2=1.43
Patches:
Index: gnue/gnuef/INSTALL
diff -u gnue/gnuef/INSTALL:1.5 gnue/gnuef/INSTALL:1.6
--- gnue/gnuef/INSTALL:1.5 Mon Dec 11 08:58:07 2000
+++ gnue/gnuef/INSTALL Tue Dec 12 22:35:08 2000
@@ -138,7 +138,7 @@
that with the default options do the following from the top gnuef directory
mkdir -p /usr/local/gnue/shared
-cp src/gnue-splash.bmp /usr/local/gnue/shared
+cp src/gnuef-splash.bmp /usr/local/gnue/shared
cp src/gnue.bmp /usr/local/gnue/shared
chmod -R o+rx /usr/local/gnue
Index: gnue/gnuef/TODO
diff -u gnue/gnuef/TODO:1.29 gnue/gnuef/TODO:1.30
--- gnue/gnuef/TODO:1.29 Mon Dec 11 08:58:07 2000
+++ gnue/gnuef/TODO Tue Dec 12 22:35:08 2000
@@ -10,21 +10,10 @@
**Like to haves for 0.1.0
** clean up named triggers[chriss]
-** Sloppy query - a query mode that lets you ignore things like -'s in a
- part number. To find 123-123123-12312 you'd enter 12312312312312. This
- is an enduser request i see it being done with text query inserting %
- between each char s%l%o%p%p%y%q%u%e%r%y [jamest]
-** Visible indicator for multiple pages
+** add GFBox support to UIwxpython and curses
** Add support for more win/gtk like focus system
pgup/pgdown effect page not block
-** visible seperator widgets
-
-** Minnor fixes for 0.1.0
-** UIwxpython dropdowns not clearing on datasource clear [jamest]
-** current detail/masta code bombs if masta doesn't have an entry widget
- defined for that field. [jamest]
-
Database error handling
Add layout manager support[perlpoet]
@@ -73,8 +62,6 @@
Tweaks:
certain attributes should only apply when in normal mode
(numeric allowing % during query is a working example)
-
- Add code to make a GUI startup failure roll into a text mode attempt
Add support of mouse focus to the charater
Index: gnue/gnuef/client/gfclient
diff -u gnue/gnuef/client/gfclient:1.6 gnue/gnuef/client/gfclient:1.7
--- gnue/gnuef/client/gfclient:1.6 Fri Dec 8 13:49:58 2000
+++ gnue/gnuef/client/gfclient Tue Dec 12 22:35:08 2000
@@ -62,9 +62,13 @@
sys.exit()
# Initialize user interface (defaults to gui)
+ # If the DISPLAY var isn't set then switch to text
if ui_type == 'gui' :
- from gnue.forms import UIwxpython
- ui=UIwxpython.GFUserInterface(fp)
+ if os.environ.has_key('DISPLAY'):
+ from gnue.forms import UIwxpython
+ ui=UIwxpython.GFUserInterface(fp)
+ else:
+ ui_type='text'
if ui_type == 'text' :
from gnue.forms import UIpyncurses
Index: gnue/gnuef/samples/simple/form.gfd
diff -u gnue/gnuef/samples/simple/form.gfd:1.1
gnue/gnuef/samples/simple/form.gfd:1.2
--- gnue/gnuef/samples/simple/form.gfd:1.1 Tue Nov 14 20:07:16 2000
+++ gnue/gnuef/samples/simple/form.gfd Tue Dec 12 22:35:08 2000
@@ -3,27 +3,27 @@
<options>
<version>0.0.2</version>
- <height>200</height>
- <width>200</width>
+ <height>6</height>
+ <width>20</width>
</options>
<page>
<block name="coding">
- <label text="Simple first page" x="5" y="10" />
- <label text="Only contains labels" x="5" y="20" />
- <label text="Page Up or Page Down" x="5" y="30" />
+ <label text="Simple first page" x="1" y="1" />
+ <label text="Only contains labels" x="1" y="2" />
+ <label text="Page Up or Page Down" x="1" y="3" />
</block>
</page>
<page>
<block name="testing">
- <label text="Text Box 1" x="5" y="10" />
- <entry name="text1" x="5" y="20" width="100" height="25">
+ <label text="Text Box 1" x="1" y="1" />
+ <entry name="text1" x="1" y="2" width="10">
<options>
<tip>This is the tip for the first text box</tip>
</options>
</entry>
- <label text="Text Box 2" x="5" y="40" />
- <entry name="text2" x="5" y="50" width="100" height="25">
+ <label text="Text Box 2" x="1" y="4" />
+ <entry name="text2" x="1" y="5" width="10">
<options>
<tip>This is the tip for the second text box</tip>
</options>
Index: gnue/gnuef/src/GFForm.py
diff -u gnue/gnuef/src/GFForm.py:1.49 gnue/gnuef/src/GFForm.py:1.50
--- gnue/gnuef/src/GFForm.py:1.49 Tue Dec 12 10:11:50 2000
+++ gnue/gnuef/src/GFForm.py Tue Dec 12 22:35:08 2000
@@ -57,7 +57,7 @@
'recordSWITCHED' : self.recordSwitched,
'notifyMASTERSWITCH': self.notifyDetailBlocks,
'updateUIENTRY' : self.updateUIEntry,
- 'uiINITIALIZED' : self.uiInitialized,
+# 'uiINITIALIZED' : self.uiInitialized,
'msgBOX' : self.msgBox
}
@@ -76,6 +76,7 @@
self.currentEntry = None
self.blockList = []
+ self.pageList = []
self.borderPercentage = 10
self.textPercentage = 7.5
@@ -103,6 +104,7 @@
# build the block list
self.walk(self.initBlocks)
+ self.walk(self.initPages)
self.walk(self.initEntries)
if GFOptions.DEBUG > 50:
@@ -143,6 +145,10 @@
self.blockList.append(object)
object.initialize()
+ def initPages(self,object):
+ if object.getObjectType() == 'GFPage':
+ self.pageList.append(object)
+
def initEntries(self, object):
if object.getObjectType() == 'GFEntry':
object.initialize()
@@ -193,28 +199,39 @@
#
# Routines to update parts of the UI's status bar
def updateInsertMode(self):
-
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,self.insertMode,None,None]))
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,self.insertMode,None,None,None,None]))
def updateRecordCounter(self):
-
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,self.currentBlock.currentRecord+1,self.currentBlock.recordCount+1]))
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,self.currentBlock.currentRecord+1,self.currentBlock.recordCount+1,None,None]))
+ def updatePageCounter(self):
+ maxPages = len(self.pageList)
+ for count in range(len(self.pageList)):
+ if self.pageList[count] == self.currentPage:
+ break
+
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,None,None,None,None,count+1,maxPages]))
+
def updateTip(self):
if hasattr(self.currentEntry,'tip'):
tip = self.currentEntry.tip
else:
tip = ''
- self.dispatchEvent(GFEvent('uiUPDATESTATUS',[tip,None,None,None,None]))
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[tip,None,None,None,None,None,None]))
def updateRecordStatus(self):
status =
self.currentBlock.dataSourceLink.resultSetStatus[self.currentBlock.currentRecord]
- self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,status,None,None,None]))
+
self.dispatchEvent(GFEvent('uiUPDATESTATUS',[None,status,None,None,None,None,None]))
+
+
def updateStatus(self):
self.updateTip()
self.updateInsertMode()
self.updateRecordCounter()
self.updateRecordStatus()
+ self.updatePageCounter()
def updateUIEntry(self,event):
@@ -576,15 +593,15 @@
# Tells the UI to prompt for username/password and
# blocks until it gets them
#
- def uiInitialized(self,event):
-
- self.loginInProgress = 1
- print "login required"
- self.dispatchEvent(GFEvent('requireLOGIN',self))
-
- while self.loginInProgress:
- print "We're up dude!"
- pass
+# def uiInitialized(self,event):
+#
+# self.loginInProgress = 1
+# print "login required"
+# self.dispatchEvent(GFEvent('requireLOGIN',self))
+#
+# while self.loginInProgress:
+# print "We're up dude!"
+# pass
def msgBox(self, event):
self.dispatchEvent( GFEvent('msgBoxUI', event.data))
Index: gnue/gnuef/src/GFObjects.py
diff -u gnue/gnuef/src/GFObjects.py:1.44 gnue/gnuef/src/GFObjects.py:1.45
--- gnue/gnuef/src/GFObjects.py:1.44 Sat Dec 9 13:59:16 2000
+++ gnue/gnuef/src/GFObjects.py Tue Dec 12 22:35:08 2000
@@ -109,6 +109,14 @@
self.type = "GFPage"
#
+# GFBox
+#
+class GFBox(GFObj):
+ def __init__(self, parent=None):
+ GFObj.__init__(self, parent)
+ self.type = "GFBox"
+
+#
#GFLabel
#
class GFLabel(GFValue):
@@ -278,6 +286,16 @@
self.mode = 'normal'
self.processRollback(None)
elif event.getEvent() == 'processQUERY':
+ # Implement sloppyFocus system
+ for entry in self.entryList:
+ if hasattr(entry,'sloppyQuery'):
+ newValue = '%'
+ value = entry.value
+ for letter in value:
+ if letter != "%":
+ newValue=newValue+letter+"%"
+ entry.setValue(newValue)
+
if self.mode == 'query':
self.mode = 'normal'
self.dispatchEvent(GFEvent('switchRECORD',[0,0]));
@@ -393,6 +411,7 @@
#
def allowedValues(self):
values = {}
+ values[""]=""
for count in range(self.datasource.getLastRecordNumber()+1):
try:
values[self.datasource.getField(count,self.fieldName)] = \
Index: gnue/gnuef/src/GFOptions.py
diff -u gnue/gnuef/src/GFOptions.py:1.5 gnue/gnuef/src/GFOptions.py:1.6
--- gnue/gnuef/src/GFOptions.py:1.5 Mon Dec 11 19:54:12 2000
+++ gnue/gnuef/src/GFOptions.py Tue Dec 12 22:35:08 2000
@@ -1,7 +1,7 @@
# Adjust for your install (only used for graphics right now)
prefix="/usr/local/gnue"
-splashScreenBMP=prefix+"/shared/gnue-splash.bmp"
+splashScreenBMP=prefix+"/shared/gnuef-splash.bmp"
smallBMP=prefix+"/shared/gnue.bmp"
# Might need altered but I doubt it
Index: gnue/gnuef/src/GFParser.py
diff -u gnue/gnuef/src/GFParser.py:1.8 gnue/gnuef/src/GFParser.py:1.9
--- gnue/gnuef/src/GFParser.py:1.8 Fri Nov 10 11:48:27 2000
+++ gnue/gnuef/src/GFParser.py Tue Dec 12 22:35:08 2000
@@ -161,6 +161,7 @@
'block' : GFBlock,
'label' : GFLabel,
'entry' : GFEntry,
+ 'box' : GFBox,
'datasource': GFDataSource,
'database': GFDatabase
}
Index: gnue/gnuef/src/UIbase.py
diff -u gnue/gnuef/src/UIbase.py:1.13 gnue/gnuef/src/UIbase.py:1.14
--- gnue/gnuef/src/UIbase.py:1.13 Fri Dec 8 13:49:58 2000
+++ gnue/gnuef/src/UIbase.py Tue Dec 12 22:35:08 2000
@@ -55,6 +55,7 @@
self.widgetConstructorFunction = { # A dictionary of functions used by
buildUI
'GFPage': self.pageHandler, # to build the widgets. Can override
in
'GFLabel': self.stdHandler, # UI specific module if necessary
+ 'GFBox': self.stdHandler, # UI specific module if necessary
'GFEntry': self.entryHandler,
'GFForm': self.formHandler
}
Index: gnue/gnuef/src/UIwxpython.py
diff -u gnue/gnuef/src/UIwxpython.py:1.42 gnue/gnuef/src/UIwxpython.py:1.43
--- gnue/gnuef/src/UIwxpython.py:1.42 Tue Dec 12 10:11:50 2000
+++ gnue/gnuef/src/UIwxpython.py Tue Dec 12 22:35:08 2000
@@ -61,7 +61,14 @@
"""wxStaticText(container, -1, str(object.text),
wxPoint(int(object.x)*int(self.widgetWidth),
(int(object.y)+spacer)*int(self.widgetHeight)),
- wxDefaultSize)"""
+ wxDefaultSize)""",
+ 'GFBox':
+ """wxStaticBox(container,-1,"",
+ wxPoint(int(object.x)*int(self.widgetWidth),
+
(int(object.y)+spacer)*int(self.widgetHeight)),
+
wxSize(int(self.form.width)*int(self.widgetWidth),
+
int(self.form.height)*int(self.widgetHeight)))"""
+
}
self.keyEvents = {WXK_PRIOR: GFEvent('requestPREVBLOCK'),
@@ -176,9 +183,10 @@
def switchFocus(self, event):
index = self.formToUI[event.data][1]
self.formToUI[event.data][0][index].SetFocus()
- sys.stderr.write("fields %d, %s
\n"%(self.formToUI[event.data][1],self.formToUI[event.data][0]))
+ #sys.stderr.write("fields %d, %s
\n"%(self.formToUI[event.data][1],self.formToUI[event.data][0]))
+
def updateStatus(self,event):
- tip, recordStatus, insertMode, currentRecord, maxRecord =event.data
+ tip, recordStatus, insertMode, currentRecord, maxRecord, currentPage,
maxPage =event.data
if tip != None:
self.statusBar.SetStatusText(str(tip),0)
@@ -194,8 +202,11 @@
if currentRecord != None and maxRecord != None:
self.statusBar.SetStatusText(string.strip("%s/%s" %
(currentRecord,maxRecord)),3)
-
+ if currentPage != None and maxPage != None:
+ self.statusBar.SetStatusText(string.strip("%s/%s" %
(currentPage,maxPage)),4)
+
+
def updateEntry(self,event):
index = self.formToUI[event.data][1]
@@ -312,7 +323,7 @@
#
elif event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED:
- print "received combobox event"
+ #print "received combobox event"
#
# Begin duplicate of the mouse handling code to see
# if it will allow me proper focus control w/
@@ -389,7 +400,7 @@
for spacer in range(count):
spacer = int(spacer)
newWidget = eval(self.widgetConstructor[object.getObjectType()])
-
+
widget.append(newWidget)
EVT_CHAR(newWidget, self.uiEventTrap)
EVT_MOUSE_EVENTS(newWidget, self.uiEventTrap)
@@ -431,8 +442,8 @@
self.statusBar = self.frame.CreateStatusBar()
- self.statusBar.SetFieldsCount(4)
- self.statusBar.SetStatusWidths([-1,100,50,100])
+ self.statusBar.SetFieldsCount(5)
+ self.statusBar.SetStatusWidths([-1,100,50,100,100])
self.frame.SetStatusText( "Let's get started" )
@@ -536,46 +547,47 @@
container = self.currentWidget[0]
widget = []
- if not hasattr(object,'visibleCount'):
- object.visibleCount = 1
+ if not hasattr(object,'hidden'):
+ if not hasattr(object,'visibleCount'):
+ object.visibleCount = 1
- count = int(object.visibleCount)
-
- if hasattr(object,'style'):
- style = object.style
- else:
- style = 'text'
-
- for spacer in range(count):
- spacer = int(spacer)
+ count = int(object.visibleCount)
- if style == 'dropdown':
- choices = []
- values = object.allowedValues()
- for key in values.keys():
- choices.append(values[key])
-
- newWidget = wxComboBox(container, -1, "",
- wxPoint(int(object.x)*int(self.widgetWidth),
-
(int(object.y)+spacer)*int(self.widgetHeight)),
- wxSize(int(object.width)*int(self.textWidth),
- int(object.height)*int(self.textHeight)),
- choices, wxCB_READONLY)
- newWidget.SetValue("")
- EVT_CHAR(newWidget, self.uiEventTrap)
- EVT_COMBOBOX(newWidget, newWidget.GetId(), self.uiEventTrap)
+ if hasattr(object,'style'):
+ style = object.style
else:
- newWidget = wxTextCtrl(container, -1, object.value,
- wxPoint(int(object.x)*int(self.widgetWidth),
-
(int(object.y)+spacer)*int(self.widgetHeight)),
- wxSize(int(object.width)*int(self.textWidth),
- int(object.height)*int(self.textHeight)))
+ style = 'text'
+ for spacer in range(count):
+ spacer = int(spacer)
- EVT_CHAR(newWidget, self.uiEventTrap)
- EVT_MOUSE_EVENTS(newWidget, self.uiEventTrap)
+ if style == 'dropdown':
+ choices = []
+ values = object.allowedValues()
+ for key in values.keys():
+ choices.append(values[key])
+
+ newWidget = wxComboBox(container, -1, "",
+ wxPoint(int(object.x)*int(self.widgetWidth),
+
(int(object.y)+spacer)*int(self.widgetHeight)),
+ wxSize(int(object.width)*int(self.textWidth),
+
int(object.height)*int(self.textHeight)),
+ choices, wxCB_READONLY)
+ newWidget.SetValue("")
+ EVT_CHAR(newWidget, self.uiEventTrap)
+ EVT_COMBOBOX(newWidget, newWidget.GetId(), self.uiEventTrap)
+ else:
+ newWidget = wxTextCtrl(container, -1, object.value,
+ wxPoint(int(object.x)*int(self.widgetWidth),
+
(int(object.y)+spacer)*int(self.widgetHeight)),
+ wxSize(int(object.width)*int(self.textWidth),
+
int(object.height)*int(self.textHeight)))
+
+
+ EVT_CHAR(newWidget, self.uiEventTrap)
+ EVT_MOUSE_EVENTS(newWidget, self.uiEventTrap)
- widget.append(newWidget)
+ widget.append(newWidget)
return widget
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnuef INSTALL TODO client/gfclient samples...,
James Thompson <=