diff urwid_satext/sat_widgets.py @ 84:9f683df69a4c

shortcut keys are now managed in separate module, with a class checking for conflicts
author Goffi <goffi@goffi.org>
date Thu, 04 Sep 2014 16:50:12 +0200
parents c456beff1779
children c95462c21966
line wrap: on
line diff
--- a/urwid_satext/sat_widgets.py	Wed Sep 03 17:42:07 2014 +0200
+++ b/urwid_satext/sat_widgets.py	Thu Sep 04 16:50:12 2014 +0200
@@ -23,6 +23,7 @@
 utf8decode = lambda s: encodings.codecs.utf_8_decode(s)[0]
 
 from urwid.util import is_mouse_press #XXX: is_mouse_press is not included in urwid in 1.0.0
+from .keys import action_key_map as a_key
 
 
 class AdvancedEdit(urwid.Edit):
@@ -50,21 +51,21 @@
 
     def keypress(self, size, key):
         #TODO: insert mode is not managed yet
-        if key == 'ctrl a':
+        if key == a_key['EDIT_HOME']:
             key = 'home'
-        elif key == 'ctrl e':
+        elif key == a_key['EDIT_END']:
             key = 'end'
-        elif key == 'ctrl k':
+        elif key == a_key['EDIT_DELETE_TO_END']:
             self._delete_highlighted()
             self.set_edit_text(self.edit_text[:self.edit_pos])
-        elif key == 'ctrl w':
+        elif key == a_key['EDIT_DELETE_LAST_WORD']:
             before = self.edit_text[:self.edit_pos]
             pos = before.rstrip().rfind(" ")+1
             self.set_edit_text(before[:pos] + self.edit_text[self.edit_pos:])
             self.set_edit_pos(pos)
-        elif key == 'enter':
+        elif key == a_key['EDIT_ENTER']:
             self._emit('click')
-        elif key == 'shift tab':
+        elif key == a_key['EDIT_COMPLETE']:
             try:
                 before = self.edit_text[:self.edit_pos]
                 if self.completion_data:
@@ -154,7 +155,7 @@
         super(ModalEdit, self).setCompletionMethod(lambda text,data: callback(text, data, self._mode))
 
     def keypress(self, size, key):
-        if key == 'esc':
+        if key == a_key['MODAL_ESCAPE']:
             self.mode = "NORMAL"
             return
         if self._mode == 'NORMAL' and key in self._modes:
@@ -262,7 +263,7 @@
         return True
 
     def keypress(self, size, key):
-        if key==' ' or key=='enter':
+        if key in (a_key['TEXT_SELECT'], a_key['TEXT_SELECT2']):
             self.setState(not self.__selected)
         else:
             return key
@@ -695,10 +696,10 @@
         return self.selected
 
     def keypress(self, size, key):
-        if key=='up':
+        if key==a_key['MENU_BOX_UP']:
             if self.listBox.get_focus()[1] == 0:
                 self.parent.keypress(size, key)
-        elif key=='left' or key=='right':
+        elif key in (a_key['MENU_BOX_LEFT'], a_key['MENU_BOX_RIGHT']):
             self.parent.keypress(size,'up')
             self.parent.keypress(size,key)
         return super(MenuBox,self).keypress(size,key)
@@ -756,9 +757,9 @@
         self.loop.widget = urwid.Overlay(urwid.AttrMap(menu_box,'menubar'),self.save_bottom,('fixed left', columns),max_len+2,('fixed top',1),None)
 
     def keypress(self, size, key):
-        if key == 'down':
+        if key == a_key['MENU_DOWN']:
             key = 'enter'
-        elif key == 'up':
+        elif key == a_key['MENU_UP']:
             if  self.save_bottom:
                 self.loop.widget = self.save_bottom
                 self.save_bottom = None
@@ -801,7 +802,7 @@
                 callback = menu_item[1]
                 break
         if callback:
-            self.keypress(None,'up')
+            self.keypress(None, a_key['MENU_UP'])
             callback((category, item))
 
     def onCategoryClick(self, button):
@@ -838,17 +839,17 @@
         self.columns.contents[1] = (current_menu, ('weight', 1, False))
 
     def keypress(self, size, key):
-        if key=='up':
+        if key==a_key['MENU_ROLLER_UP']:
             if self.columns.get_focus_column()==0 and self.selected > 0:
                 self.selected -= 1
                 self._showSelected()
                 return
-        elif key=='down':
+        elif key==a_key['MENU_ROLLER_DOWN']:
             if self.columns.get_focus_column()==0 and self.selected < len(self.name_list)-1:
                 self.selected += 1
                 self._showSelected()
                 return
-        elif key=='right':
+        elif key==a_key['MENU_ROLLER_RIGHT']:
             if self.columns.get_focus_column()==0 and \
                 (isinstance(self.columns.contents[1][0], urwid.Text) or \
                 self.menus[self.name_list[self.selected]].getMenuSize()==0):
@@ -975,12 +976,12 @@
             return False
 
     def keypress(self, size, key):
-        if key=='left':
+        if key==a_key['COLUMNS_ROLLER_LEFT']:
             if self.focus_column>0:
                 self.focus_column-=1
                 self._invalidate()
                 return
-        if key=='right':
+        if key==a_key['COLUMNS_ROLLER_RIGHT']:
             if self.focus_column<len(self.widget_list)-1:
                 self.focus_column+=1
                 self._invalidate()
@@ -1038,10 +1039,10 @@
         if is_mouse_press(event) and button == 1:
             _prev,_next,start_wid,end_wid,cols_left = self.__calculate_limits(size)
             if x==0 and _prev:
-                self.keypress(size,'left')
+                self.keypress(size, a_key['COLUMNS_ROLLER_LEFT'])
                 return True
             if x==maxcol-1 and _next:
-                self.keypress(size,'right')
+                self.keypress(size, a_key['COLUMNS_ROLLER_RIGHT'])
                 return True
 
             current_pos = 1 if _prev else 0
@@ -1063,7 +1064,7 @@
 
     def render(self, size, focus=False):
         if not self.widget_list:
-            return SolidCanvas(" ", size[0], 1)
+            return urwid.SolidCanvas(" ", size[0], 1)
 
         _prev,_next,start_wid,end_wid,cols_left = self.__calculate_limits(size)
 
@@ -1171,7 +1172,7 @@
         if not ret:
             return
 
-        if key == 'tab':
+        if key == a_key['FOCUS_SWITCH']:
             try:
                 self.focus_position -= 1
             except IndexError:
@@ -1192,9 +1193,6 @@
         urwid.WidgetWrap.__init__(self, self.__frame)
 
     def keypress(self, size, key):
-        if key=='tab':
-            self._w.keypress(size,key)
-            return
         return self._w.keypress(size,key)
 
     def _buttonClicked(self, button, invisible=False):