示例#1
0
    def append_toggle_column(self,
                             tree_view: Gtk.TreeView,
                             title: str,
                             data_func: Callable[[Gtk.CellRenderer, T], None],
                             on_changed: Optional[Callable[[T, bool],
                                                           bool]] = None):
        renderer = Gtk.CellRendererToggle()
        if on_changed:
            renderer.connect('toggled',
                             self._make_toggled_signal_handler(on_changed))

        col = Gtk.TreeViewColumn(title, renderer)
        col.set_cell_data_func(renderer, self._make_data_func(data_func))
        tree_view.append_column(col)
示例#2
0
文件: app.py 项目: earthreader/gtk
class ReaderWindow(ApplicationWindow):

    __gtype_name__ = 'ReaderWindow'

    def __init__(self, **kwargs):
        super(ReaderWindow, self).__init__(
            title='Eearth Reader',
            **kwargs
        )
        app = self.get_application()
        assert isinstance(app, EarthReaderApp)
        self.set_wmclass('Earth Reader', 'Earth Reader')
        self.set_icon_list(ICON_LIST)
        self.box = Box(spacing=0)
        self.add(self.box)
        subscriptions = SubscriptionTreeModel(app.stage)
        self.subscriptions_sidebar = ScrolledWindow()
        self.subscription_list = TreeView(subscriptions)
        cell_renderer = CellRendererText()
        subscription_column = TreeViewColumn('Title', cell_renderer, text=0)

        def cell_data_func(column, renderer, model, tree_iter, *args):
            if isinstance(model[tree_iter], Category):
                renderer.set_property('cell-background', 'silver')
            else:
                renderer.set_property('cell-background', None)

        subscription_column.set_cell_data_func(cell_renderer, cell_data_func)
        self.subscription_list.append_column(subscription_column)
        self.subscriptions_sidebar.add(self.subscription_list)
        self.box.pack_start(self.subscriptions_sidebar,
                            expand=True, fill=True, padding=0)
        entries_store = dummy_entries()
        entry_column = TreeViewColumn('Title', CellRendererText(), text=0)
        self.entry_list_box = ScrolledWindow()
        self.entry_list = TreeView(entries_store)
        self.entry_list.append_column(entry_column)
        self.entry_list_box.add(self.entry_list)
        self.box.pack_start(self.entry_list_box,
                            expand=True, fill=True, padding=0)
        self.content_view = WebView()
        self.box.pack_start(self.content_view,
                            expand=True, fill=True, padding=0)
示例#3
0
    def append_text_column(self,
                           tree_view: Gtk.TreeView,
                           title: str,
                           data_func: Callable[[Gtk.CellRenderer, T], None],
                           parse_func: Optional[Callable[[str], Any]] = None,
                           on_changed: Optional[Callable[[T, Any],
                                                         bool]] = None):
        renderer = Gtk.CellRendererText()

        editable = parse_func is not None and on_changed is not None
        if editable:
            renderer.props.editable = True
            renderer.connect(
                'edited',
                self._make_edited_signal_handler(parse_func, on_changed))

        col = Gtk.TreeViewColumn(title, renderer)
        col.set_cell_data_func(renderer, self._make_data_func(data_func))
        tree_view.append_column(col)
示例#4
0
    def updateTreeWidget(self, widget : Gtk.TreeView, tree : g.core.tree.Tree, icon : GdkPixbuf.Pixbuf):
        def fillStore(st : Gtk.TreeStore, treeStruct, ico : GdkPixbuf.Pixbuf):
            def helper(storeIter, tr):
                p = tr.getFullPath()
                it = st.append(storeIter, [ico, tr.name, p])
                for child in tr.children:
                    helper(it, child)

            helper(None, treeStruct)

        store = Gtk.TreeStore(GdkPixbuf.Pixbuf, str, str)
        fillStore(store, tree, icon)
        widget.set_model(store)

        rendererName = Gtk.CellRendererText()
        rendererIcon = Gtk.CellRendererPixbuf()

        columnIcon = Gtk.TreeViewColumn('Icon', rendererIcon)
        columnIcon.add_attribute(rendererIcon, 'pixbuf', 0)
        columnName = Gtk.TreeViewColumn('Name', rendererName, text=1)

        widget.append_column(columnIcon)
        widget.append_column(columnName)