Mercurial > urwid-satext
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):