# HG changeset patch # User Goffi # Date 1281362308 -28800 # Node ID 0b83dd2b15d1af887ef6f9c3d96e6c0e7cb553cc # Parent bdc83e8570938f3ec30237934b5be3f49c95268b Primitivus: misc improvments on TabsContainer/FocusFrame - FocusFrame: better management of keypress - TabsContainer: new addFooter method, to add a widget on the bottom of the container diff -r bdc83e857093 -r 0b83dd2b15d1 frontends/primitivus/custom_widgets.py --- a/frontends/primitivus/custom_widgets.py Mon Aug 09 19:09:13 2010 +0800 +++ b/frontends/primitivus/custom_widgets.py Mon Aug 09 21:58:28 2010 +0800 @@ -816,6 +816,10 @@ """Frame which manage 'tab' key""" def keypress(self, size, key): + ret = urwid.Frame.keypress(self, size, key) + if not ret: + return + if key == 'tab': focus_list = ('header','body','footer') focus_idx = focus_list.index(self.focus_part) @@ -826,7 +830,7 @@ if widget!=None and widget.selectable(): self.set_focus(focus_name) - return urwid.Frame.keypress(self, size, key) + return ret class TabsContainer(urwid.WidgetWrap): signals = ['click'] @@ -835,14 +839,14 @@ #self._current_tab = 0 self._buttons_cont = ColumnsRoller() self.tabs = [] - self.__frame = urwid.Frame(urwid.Filler(urwid.Text('')),urwid.Pile([self._buttons_cont,urwid.Divider(u"─")])) + self.__frame = FocusFrame(urwid.Filler(urwid.Text('')),urwid.Pile([self._buttons_cont,urwid.Divider(u"─")])) urwid.WidgetWrap.__init__(self, self.__frame) - """def selectable(self): - return True - def keypress(self, size, key): - return key""" + if key=='tab': + self._w.keypress(size,key) + return + return self._w.keypress(size,key) def __buttonClicked(self, button, invisible=False): """Called when a button on the tab is changed, @@ -880,6 +884,12 @@ self.__appendButton(name) return listbox + def addFooter(self, widget): + """Add a widget on the bottom of the tab (will be displayed on all pages) + @param widget: FlowWidget""" + self._w.footer = widget + + ## DECORATORS ## class LabelLine(urwid.LineBox): """Like LineBox, but with a Label centered in the top line"""