コード例 #1
0
ファイル: tabs.py プロジェクト: rndusr/stig
    def __init__(self, *contents, tabbar=None):
        """
        Create new Tabs widget

        contents: Iterable of dictionaries or iterables that match the arguments
                  of the `insert` method
        tabbar: TabBar instance that is used to display tab titles or any object
                with a 'base_widget' attribute (e.g. AttrMap) that returns a
                TabBar object
        """
        if tabbar is None:
            self._tabbar = TabBar()
        elif not isinstance(tabbar, urwid.Widget):
            raise ValueError(
                'tabbar must be TabBar instance, not {}: {!r}'.format(
                    type(tabbar).__name__, tabbar))
        else:
            self._tabbar = tabbar

        self._ids = []
        self._focus_history = []
        self._info = defaultdict(lambda: {})
        self._contents = urwid.MonitoredFocusList()
        self._contents.set_focus_changed_callback(self._focus_changed_callback)
        for content in contents:
            if not isinstance(content, abc.Mapping):
                content = dict(
                    zip(('title', 'widget', 'position', 'focus'), content))
            self.insert(**content)
コード例 #2
0
    def __init__(self, *contents, tabbar=None):
        """Create new Tabs widget

        contents: Iterable of dictionaries or iterables that match the
                  arguments of the `insert` method
        tabbar: Columns object that is used to display tab titles or any
                object with an 'original_widget' attribute (e.g. AttrMap) that
                returns a Columns object
        """
        if tabbar is None:
            self._tabbar = urwid.Columns([], dividechars=1)
            self._tabbar_render = self._tabbar.render
        elif hasattr(tabbar, 'original_widget'):
            self._tabbar = tabbar.original_widget
            self._tabbar_render = tabbar.render
        elif isinstance(tabbar, urwid.Columns):
            self._tabbar = tabbar
            self._tabbar_render = self._tabbar.render
        else:
            raise ValueError('tabbar must be Columns, not {}: {!r}'
                             .format(type(tabbar).__name__, tabbar))

        self._ids = []
        self._contents = urwid.MonitoredFocusList()
        for content in contents:
            if not isinstance(content, collections.Mapping):
                content = dict(zip(('title', 'widget', 'position', 'focus'),
                                   content))
            self.insert(**content)
コード例 #3
0
 def selectable_mode(self,dir_contents=[]):
     """
     Return a Specialized list for use in the Listbox
     """
     traverse_buttons = [urwid.Button('..',on_press=self.select_signal_handler)]
     traverse_buttons.extend([urwid.CheckBox(file_or_dir,on_state_change=self.change_attr) for file_or_dir in dir_contents ])
     return urwid.MonitoredFocusList(traverse_buttons)
コード例 #4
0
    def __init__(self, tabs, focus=0):
        self.tab_list = urwid.MonitoredFocusList(tabs)
        self.tab_list.focus = focus
        self.tab_list.set_focus_changed_callback(self.rebuild_tabs)

        cols = [
            urwid.AttrMap(
                self.tab(t),
                "active-tab" if i == self.tab_list.focus else "inactive-tab")
            for i, t in enumerate(tabs)
        ]
        self.columns = urwid.Columns(cols)

        super().__init__(self.columns)