def _setMediasCells(self) -> None: """ Arrange the video, audio and snapshot cells. :return: """ # cell video, audio and snapshot to toggle renderer_video_toggle: CellRendererToggle = CellRendererToggle() column_toggle = TreeViewColumn(title='Video', cell_renderer=renderer_video_toggle, active=4) self._subtitles_treeview.append_column(column_toggle) renderer_video_toggle.connect("toggled", self._onCellVideoToggled) renderer_audio_toggle: CellRendererToggle = CellRendererToggle() column_toggle = TreeViewColumn(title='Audio', cell_renderer=renderer_audio_toggle, active=5) self._subtitles_treeview.append_column(column_toggle) renderer_audio_toggle.connect("toggled", self._onCellAudioToggled) renderer_snapshot_toggle: CellRendererToggle = CellRendererToggle() column_toggle = TreeViewColumn(title='Snapshot', cell_renderer=renderer_snapshot_toggle, active=6) self._subtitles_treeview.append_column(column_toggle) renderer_snapshot_toggle.connect("toggled", self._onCellImageToggled)
def on_cr_export_selected_toggled(self, w: Gtk.CellRendererToggle, path, *args): store: Gtk.TreeStore = self.builder.get_object('export_dialog_store') is_active = not w.get_active() store[path][5] = is_active store[path][6] = False # Update inconsistent state for all parents def mark_inconsistent_recurse(titer: Gtk.TreeIter, force_inconstent=False): parent = store.iter_parent(titer) if parent is not None: should_be_inconsistent = force_inconstent if not should_be_inconsistent: # Look at children to see if should be marked inconsistent children = [] for i in range(store.iter_n_children(parent)): child = store.iter_nth_child(parent, i) children.append(child) states = [store[child][5] for child in children] should_be_inconsistent = any([store[child][6] for child in children]) or not states.count(states[0]) == len(states) store[parent][6] = should_be_inconsistent if should_be_inconsistent: store[parent][5] = False else: store[parent][5] = states[0] mark_inconsistent_recurse(parent, should_be_inconsistent) mark_inconsistent_recurse(store.get_iter(path)) # Update state for all children def mark_active_recurse(titer: Gtk.TreeIter): for i in range(store.iter_n_children(titer)): child = store.iter_nth_child(titer, i) store[child][5] = is_active store[child][6] = False mark_active_recurse(child) mark_active_recurse(store.get_iter(path))
def columna_active(titulo, act): col = TreeViewColumn(titulo, CellRendererToggle(), active=act) col.set_resizable(False) # Columna no puede cambiar de tamaño col.set_alignment(0.5) # Alineación del Título (centrado) col.set_property('min-width', 90) # Ancho Mínimo de Columna return col