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)
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)
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)
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)