commit-gnue
[Top][All Lists]
Advanced

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

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


From: reinhard
Subject: r6270 - in trunk/gnue-forms/src/uidrivers/curses: . widgets
Date: Thu, 9 Sep 2004 10:56:02 -0500 (CDT)

Author: reinhard
Date: 2004-09-09 10:56:01 -0500 (Thu, 09 Sep 2004)
New Revision: 6270

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


Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2004-09-09 14:11:08 UTC 
(rev 6269)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2004-09-09 15:56:01 UTC 
(rev 6270)
@@ -47,54 +47,58 @@
     self.textHeight = 1
 
     self.__screen = curses.initscr ()
-    curses.raw ()
-    curses.start_color ()
+    try:
+      curses.raw ()
+      curses.start_color ()
 
-    # Define colors
-    curses.init_pair (1, curses.COLOR_WHITE, curses.COLOR_BLUE)
-    curses.init_pair (2, curses.COLOR_BLACK, curses.COLOR_WHITE)
-    curses.init_pair (3, curses.COLOR_BLACK, curses.COLOR_CYAN)
-    curses.init_pair (4, curses.COLOR_BLACK, curses.COLOR_WHITE)
-    curses.init_pair (5, curses.COLOR_BLACK, curses.COLOR_CYAN)
-    curses.init_pair (6, curses.COLOR_WHITE, curses.COLOR_RED)
-    curses.init_pair (7, curses.COLOR_WHITE, curses.COLOR_BLUE)
-    curses.init_pair (8, curses.COLOR_WHITE, curses.COLOR_YELLOW)
-    curses.init_pair (9, curses.COLOR_WHITE, curses.COLOR_RED)
+      # Define colors
+      curses.init_pair (1, curses.COLOR_WHITE, curses.COLOR_BLUE)
+      curses.init_pair (2, curses.COLOR_BLACK, curses.COLOR_WHITE)
+      curses.init_pair (3, curses.COLOR_BLACK, curses.COLOR_CYAN)
+      curses.init_pair (4, curses.COLOR_BLACK, curses.COLOR_WHITE)
+      curses.init_pair (5, curses.COLOR_BLACK, curses.COLOR_CYAN)
+      curses.init_pair (6, curses.COLOR_WHITE, curses.COLOR_RED)
+      curses.init_pair (7, curses.COLOR_WHITE, curses.COLOR_BLUE)
+      curses.init_pair (8, curses.COLOR_WHITE, curses.COLOR_YELLOW)
+      curses.init_pair (9, curses.COLOR_WHITE, curses.COLOR_RED)
 
-    self.attr = {}
-    self.attr ['title']       = curses.color_pair (1)
-    self.attr ['page']        = curses.color_pair (2)
-    self.attr ['currentpage'] = curses.color_pair (3)
-    self.attr ['background']  = curses.color_pair (4)
-    self.attr ['entry']       = curses.color_pair (5)
-    self.attr ['focusentry']  = curses.color_pair (6) + curses.A_BOLD
-    self.attr ['disabled']    = curses.color_pair (5)
-    self.attr ['status']      = curses.color_pair (7)
-    self.attr ['fkeys']       = curses.color_pair (4)
-    self.attr ['infomsg']     = curses.color_pair (8) + curses.A_BOLD
-    self.attr ['warnmsg']     = curses.color_pair (9) + curses.A_BOLD
-    self.attr ['errormsg']    = curses.color_pair (9) + curses.A_BOLD \
+      self.attr = {}
+      self.attr ['title']       = curses.color_pair (1)
+      self.attr ['page']        = curses.color_pair (2)
+      self.attr ['currentpage'] = curses.color_pair (3)
+      self.attr ['background']  = curses.color_pair (4)
+      self.attr ['entry']       = curses.color_pair (5)
+      self.attr ['focusentry']  = curses.color_pair (6) + curses.A_BOLD
+      self.attr ['disabled']    = curses.color_pair (5)
+      self.attr ['status']      = curses.color_pair (7)
+      self.attr ['fkeys']       = curses.color_pair (4)
+      self.attr ['infomsg']     = curses.color_pair (8) + curses.A_BOLD
+      self.attr ['warnmsg']     = curses.color_pair (9) + curses.A_BOLD
+      self.attr ['errormsg']    = curses.color_pair (9) + curses.A_BOLD \
                                                       + curses.A_BLINK
-    self.__exiting = False
+      self.__exiting = False
 
-    KeyMapper.setUIKeyMap (self._keymap)
+      KeyMapper.setUIKeyMap (self._keymap)
 
-    # Find out all functions mapped to function keys
-                                        # Both hold [eventname, enabled] pairs:
-    self.__events_fkey = {}             #  by curses keycode
-    self.__events_name = {}             #  by event name
-    for fkey in range (curses.KEY_F1, curses.KEY_F20):
-      if self.__shiftkeys.has_key (fkey):
-        (key, shift, ctrl, meta) = self.__shiftkeys [fkey]
-      else:
-        (key, shift, ctrl, meta) = (fkey, False, False, False)
-      name = KeyMapper.getEvent (key, shift, ctrl, meta)
-      if name:
-        event = [name, False]
-        self.__events_fkey [fkey] = event
-        self.__events_name [name] = event
-        self.registerEventListeners ({'can'    + name: self.__canEvent,
-                                      'cannot' + name: self.__cannotEvent})
+      # Find out all functions mapped to function keys
+                                          # Both hold [eventname, enabled] 
pairs
+      self.__events_fkey = {}             #  by curses keycode
+      self.__events_name = {}             #  by event name
+      for fkey in range (curses.KEY_F1, curses.KEY_F20):
+        if self.__shiftkeys.has_key (fkey):
+          (key, shift, ctrl, meta) = self.__shiftkeys [fkey]
+        else:
+          (key, shift, ctrl, meta) = (fkey, False, False, False)
+        name = KeyMapper.getEvent (key, shift, ctrl, meta)
+        if name:
+          event = [name, False]
+          self.__events_fkey [fkey] = event
+          self.__events_name [name] = event
+          self.registerEventListeners ({'can'    + name: self.__canEvent,
+                                        'cannot' + name: self.__cannotEvent})
+    except:
+      curses.endwin ()
+      raise
 
   # ---------------------------------------------------------------------------
   # Activate the given form
@@ -166,16 +170,19 @@
   def mainLoop (self):
 
     while not self.__exiting:
-      key = self.__currentForm.wait ()
+      try:
+        key = self.__currentForm.wait ()
 
-      if key >= 0 and key <= 255:
-        self._uiFocusWidget._keypress (unicode (chr (key), i18n.encoding))
-      else:
-        if self.__shiftkeys.has_key (key):      # translate shifted f-key
-          (key, shift, ctrl, meta) = self.__shiftkeys [key]
+        if key >= 0 and key <= 255:
+          self._uiFocusWidget._keypress (unicode (chr (key), i18n.encoding))
         else:
-          (shift, ctrl, meta) = (False, False, False)
-        self._uiFocusWidget._fkeypress (key, shift, ctrl, meta)
+          if self.__shiftkeys.has_key (key):      # translate shifted f-key
+            (key, shift, ctrl, meta) = self.__shiftkeys [key]
+          else:
+            (shift, ctrl, meta) = (False, False, False)
+          self._uiFocusWidget._fkeypress (key, shift, ctrl, meta)
+      except:
+        self.showException ()
 
   # ---------------------------------------------------------------------------
   # Set title of a form
@@ -225,6 +232,14 @@
     return self.__currentForm.showMessage (message, kind, cancel)
 
   # ---------------------------------------------------------------------------
+  # Show exception information
+  # ---------------------------------------------------------------------------
+
+  def _showException (self, group, name, message, detail):
+
+    self.showMessage (message, kind = 'Error')
+
+  # ---------------------------------------------------------------------------
   # Clean up everything
   # ---------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2004-09-09 
14:11:08 UTC (rev 6269)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/form.py       2004-09-09 
15:56:01 UTC (rev 6270)
@@ -165,7 +165,7 @@
     self.__window.move (y - 2, 0)
     self.__window.clrtobot ()
 
-    self.__window.addstr (y - 2, 1, message)
+    self.__window.addstr (y - 2, 1, o(message))
 
     if kind == 'Question':
       self.__window.addstr (y - 1, 1, '(' + yes [:1] + ')' + yes [1:] + '/' + \





reply via email to

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