commit-gnue
[Top][All Lists]
Advanced

[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
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]