def actualitza_grups_seleccionats(self, widget, grups): model = self.get_model() path_sel = self._fila_grups_sel.get_path() if self._mantenir_sel: model[path_sel][0] = model[path_sel][0] else: del model[path_sel] path_sel = None h = Horari(grups) for fila in model: if h.grups() == fila[0]: path_sel = fila.path self._mantenir_sel = True break else: it = model.insert(0, [h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, True]) path_sel = model.get_path(it) self._mantenir_sel = False self._fila_grups_sel = gtk.TreeRowReference(model, path_sel) self.set_cursor(path_sel) self.columns_autosize()
def __init__(self, accions): gtk.TreeView.__init__(self) self._accions = accions self._mantenir_sel = False # Afegeix la columna 0 ('Horari') renderer = gtk.CellRendererText() renderer.set_property('xpad', 10) col = gtk.TreeViewColumn(self._nom_col[0], renderer) col.set_cell_data_func(renderer, self._mostra_grups_cb) col.set_sort_column_id(0) self.append_column(col) # Afegeix la columna 1 ('Preferit') renderer = gtk.CellRendererToggle() renderer.set_property('xpad', 10) renderer.set_property('xalign', 0.5) renderer.connect("toggled", self._commuta_preferit_cb, 1) col = gtk.TreeViewColumn(self._nom_col[1], renderer) col.set_cell_data_func(renderer, self._mostra_preferit_cb) col.set_sort_column_id(1) self.append_column(col) # Afegeix la resta de columnes for i in range(2, 7): renderer = gtk.CellRendererText() renderer.set_property('xpad', 10) renderer.set_property('xalign', 0.5) col = gtk.TreeViewColumn(self._nom_col[i], renderer, text=i) col.set_sort_column_id(i) self.append_column(col) # Afegeix una columna buida al final col = gtk.TreeViewColumn("", gtk.CellRendererText()) self.append_column(col) self.connect('cursor-changed', self._horari_seleccionat_cb) # Afegir fila 'grups seleccionats' # L'última columna del model indica si és la fila 'grups seleccionats' model = gtk.ListStore(object, bool, int, int, int, int, int, bool) h = Horari() model.append([h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, True]) model.set_sort_func(0, self._cmp_horaris_cb) self.set_model(model) self._fila_grups_sel = gtk.TreeRowReference(model, (0,)) self.set_cursor((0,)) # Opcions TreeView self.set_enable_search(False) self.set_rules_hint(True)
def actualitza(self, widget=None, horaris=[]): grups_seleccionats = self.get_model()[self._fila_grups_sel.get_path()][0] # ¿¿ redefineix model en comptes d'obtenir-lo amb self.get_model() ?? model = gtk.ListStore(object, bool, int, int, int, int, int, bool) # utilitzem una funcio de comparació per a ordenar cada columna for i in range(0, 7): model.set_sort_func(i, self._cmp_horaris_cb, i) path_sel = None for h in domini.horaris_preferits(): it = model.append([h.grups(), True, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, False]) if not path_sel and h.grups() == grups_seleccionats: path_sel = model.get_path(it) for h in horaris: if not domini.es_horari_preferit(h.grups()): it = model.append([h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, False]) if not path_sel and h.grups() == grups_seleccionats: path_sel = model.get_path(it) model.set_value(it, 7, True) self._mantenir_sel = path_sel is not None if not path_sel: h = Horari(grups_seleccionats) it = model.insert(0, [h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, True]) path_sel = model.get_path(it) self.set_model(model) self._fila_grups_sel = gtk.TreeRowReference(model, path_sel) self.set_cursor(path_sel) self.columns_autosize()