commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r6105 - in trunk/gnue-forms/src/uidrivers/curses: . widgets


From: reinhard
Subject: r6105 - in trunk/gnue-forms/src/uidrivers/curses: . widgets
Date: Thu, 29 Jul 2004 15:28:13 -0500 (CDT)

Author: reinhard
Date: 2004-07-29 15:28:12 -0500 (Thu, 29 Jul 2004)
New Revision: 6105

Modified:
   trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
Log:
Implemented status bar.


Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2004-07-29 11:43:36 UTC 
(rev 6104)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2004-07-29 20:28:12 UTC 
(rev 6105)
@@ -155,8 +155,8 @@
   def setTitle (self, event):
 
     # Exactly this should actually be done by the base ui driver
-    ui = self._gfObjToUIWidget [event._form]
-    ui.setTitle (event.title)
+    uiForm = self._gfObjToUIWidget [event._form]
+    uiForm.setTitle (event.title)
 
   # ---------------------------------------------------------------------------
   # Display warning message
@@ -164,8 +164,12 @@
 
   def formAlert (self, event):
 
+    # Exactly this should actually be done by the base ui driver
+    uiForm = self._gfObjToUIWidget [event._form]
+    uiForm.statusMessage (event.data)
+
+    # Curses specific
     curses.beep ()
-    curses.flash ()
 
   # ---------------------------------------------------------------------------
   # Indicate start of nonresponsive phase
@@ -173,7 +177,7 @@
 
   def beginWait (self, event):
 
-    pass
+    self.__currentForm.statusMessage (u_("processing..."))
 
   # ---------------------------------------------------------------------------
   # Indicate end of nonresponsive phase
@@ -181,7 +185,7 @@
 
   def endWait (self, event):
 
-    pass
+    self.__currentForm.statusMessage (None)
 
   # ---------------------------------------------------------------------------
   # Show a message

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2004-07-29 
11:43:36 UTC (rev 6104)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2004-07-29 
20:28:12 UTC (rev 6105)
@@ -33,14 +33,31 @@
 class UIForm (UIWidget):
 
   # ---------------------------------------------------------------------------
-  # Initialize form
+  # Initialization
   # ---------------------------------------------------------------------------
 
-  def createWidget (self, event, spacer):
+  def __init__ (self, event):
 
+    UIWidget.__init__ (self, event)
+
     self.__pages = []
     self.__currentPage = None
 
+    # Status bar values
+    self.__tip = ''
+    self.__status = ''
+    self.__insert = ''
+    self.__curRec = 0
+    self.__maxRec = 0
+    self.__curPage = 0
+    self.__maxPage = 0
+
+  # ---------------------------------------------------------------------------
+  # Initialize form
+  # ---------------------------------------------------------------------------
+
+  def createWidget (self, event, spacer):
+
     (x, y) = event.interface.screenSize ()
     self.__window = curses.newpad (y, x)
     self.__window.bkgd (' ', curses.color_pair (4))
@@ -66,11 +83,38 @@
   # Set status bar
   # ---------------------------------------------------------------------------
 
-  def _setStatusBar (self, tip, statusValue, insertValue, currentRecord,
-                     maxRecord, currentPage, maxPage):
-    pass
+  def _setStatusBar (self, tip, status, insert, curRec, maxRec, curPage,
+                     maxPage):
 
+    # Gets called with incomplete parameters, so we always have to remember the
+    # old values for missing parameters
+    if tip     is not None: self.__tip     = tip
+    if status  is not None: self.__status  = status
+    if insert  is not None: self.__insert  = insert
+    if curRec  is not None: self.__curRec  = curRec
+    if maxRec  is not None: self.__maxRec  = maxRec
+    if curPage is not None: self.__curPage = curPage
+    if maxPage is not None: self.__maxPage = maxPage
+
+    self.__updateStatusBar ()
+
   # ---------------------------------------------------------------------------
+  # Output a message on the status bar
+  # ---------------------------------------------------------------------------
+
+  def statusMessage (self, message):
+
+    if message:
+      (y, x) = self.__window.getmaxyx ()
+      self.__window.move (y - 2, 0)
+      self.__window.clrtobot ()
+      self.__window.addstr (y - 2, 1, message,
+                            curses.color_pair (5) + curses.A_BOLD)
+      self.__window.refresh (y - 2, 0, y - 2, 0, y, x)
+    else:
+      self.__updateStatusBar ()
+
+  # ---------------------------------------------------------------------------
   # Go to a specific page
   # ---------------------------------------------------------------------------
 
@@ -114,6 +158,8 @@
     ok  = _("Ok")
 
     (y, x) = self.__window.getmaxyx ()
+    self.__window.move (y - 2, 0)
+    self.__window.clrtobot ()
 
     self.__window.addstr (y - 2, 1, message, attr [kind])
 
@@ -182,6 +228,25 @@
     (y, x) = self.__window.getmaxyx ()
     self.__window.move (y - 2, 0)
     self.__window.clrtobot ()
+
+    attr = curses.color_pair (5) + curses.A_BOLD
+
+    tip = ('%-' + str (x - 25) + 's') % self.__tip
+
+    recstr = '%d/%d' % (self.__curRec, self.__maxRec)
+    pagestr = '%d/%d' % (self.__curPage, self.__maxPage)
+
+    self.__window.addstr (y - 2, 0,      '%s'   % tip,           attr)
+    self.__window.addstr (y - 2, x - 24, '%-4s' % self.__status, attr)
+    self.__window.addstr (y - 2, x - 19, '%-3s' % self.__insert, attr)
+    self.__window.addstr (y - 2, x - 15, '%-9s' % recstr,        attr)
+    self.__window.addstr (y - 2, x -  5, '%-5s' % pagestr,       attr)
+
+    self.__window.addch (y - 2, x - 25, curses.ACS_VLINE, attr)
+    self.__window.addch (y - 2, x - 20, curses.ACS_VLINE, attr)
+    self.__window.addch (y - 2, x - 16, curses.ACS_VLINE, attr)
+    self.__window.addch (y - 2, x -  6, curses.ACS_VLINE, attr)
+
     self.__window.refresh (y - 2, 0, y - 2, 0, y, x)
 
 # =============================================================================





reply via email to

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