def edit_node(self, page): path = treemodel.get_path_from_node(self.model, page, self.rich_model.get_node_column()) if path is None: # view page first if not in view self.emit("goto-node", page) path = treemodel.get_path_from_node( self.model, page, self.rich_model.get_node_column()) assert path is not None self.set_cursor_on_cell(path, self.title_column, self.title_text, True) path, col = self.get_cursor() self.scroll_to_cell(path)
def edit_node(self, page): path = treemodel.get_path_from_node( self.model, page, self.rich_model.get_node_column()) if path is None: # view page first if not in view self.emit("goto-node", page) path = treemodel.get_path_from_node( self.model, page, self.rich_model.get_node_column()) assert path is not None self.set_cursor_on_cell(path, self.title_column, self.title_text, True) path, col = self.get_cursor() self.scroll_to_cell(path)
def set_node_expanded(self, node, expand): # don't save the expand state of the master node if len( treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) > 1: node.set_attr("expanded2", expand)
def set_node_expanded(self, node, expand): # don't save the expand state of the master node if len(treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) > 1: node.set_attr("expanded2", expand)
def _on_node_changed_end(self, model, nodes): # maintain proper expansion for node in nodes: if node == self._master_node: for child in node.get_children(): if self.is_node_expanded(child): path = get_path_from_node( self.model, child, self.rich_model.get_node_column()) self.expand_row(path, False) else: path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: parent = node.get_parent() # NOTE: parent may lose expand state if it has one child # therefore, we should expand parent if it exists and is # visible (i.e. len(path)>1) in treeview if parent and self.is_node_expanded(parent) and \ len(path) > 1: self.expand_row(path[:-1], False) if self.is_node_expanded(node): self.expand_row(path, False) # if nodes still exist, and expanded, try to reselect them if len(self.__sel_nodes2) > 0: # TODO: only reselects one node path2 = get_path_from_node(self.model, self.__sel_nodes2[0], self.rich_model.get_node_column()) if path2 is not None and \ (len(path2) <= 1 or self.row_expanded(path2[:-1])): # reselect and scroll to node self.set_cursor(path2) gobject.idle_add(lambda: self.scroll_to_cell(path2)) # resume emitting selection changes self.__suppress_sel = False
def _on_node_changed_end(self, model, nodes): # maintain proper expansion for node in nodes: if node == self._master_node: for child in node.get_children(): if self.is_node_expanded(child): path = get_path_from_node(self.model, child, self.rich_model.get_node_column()) self.expand_row(path, False) else: path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: parent = node.get_parent() # NOTE: parent may lose expand state if it has one child # therefore, we should expand parent if it exists and is # visible (i.e. len(path)>1) in treeview if parent and self.is_node_expanded(parent) and \ len(path) > 1: self.expand_row(path[:-1], False) if self.is_node_expanded(node): self.expand_row(path, False) # if nodes still exist, and expanded, try to reselect them if len(self.__sel_nodes2) > 0: # TODO: only reselects one node path2 = get_path_from_node(self.model, self.__sel_nodes2[0], self.rich_model.get_node_column()) if path2 is not None and \ (len(path2) <= 1 or self.row_expanded(path2[:-1])): # reselect and scroll to node self.set_cursor(path2) gobject.idle_add(lambda: self.scroll_to_cell(path2)) # resume emitting selection changes self.__suppress_sel = False
def select_nodes(self, nodes): # NOTE: for now only select one node if len(nodes) > 0: node = nodes[0] path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: if len(path) > 1: self.expand_to_path(path[:-1]) self.set_cursor(path) gobject.idle_add(lambda: self.scroll_to_cell(path)) else: # unselect all nodes self.get_selection().unselect_all()
def append_node(self, node): # do allow appending of nodes unless we are masterless if self.get_master_node() is not None: return self.rich_model.append(node) if node.get_attr("expanded2", False): self.expand_to_path(treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) self.set_sensitive(True) # update status self.display_page_count()
def append_node(self, node): # do allow appending of nodes unless we are masterless if self.get_master_node() is not None: return self.rich_model.append(node) if node.get_attr("expanded2", False): self.expand_to_path( treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) self.set_sensitive(True) # update status self.display_page_count()
def view_nodes(self, nodes, nested=True): # TODO: learn how to deactivate expensive sorting #self.model.set_default_sort_func(None) #self.model.set_sort_column_id(-1, gtk.SORT_ASCENDING) # save sorting if a single node was selected if self._sel_nodes is not None and len(self._sel_nodes) == 1: self.save_sorting(self._sel_nodes[0]) self._sel_nodes = nodes self.rich_model.set_nested(nested) # set master node self.set_master_node(None) # populate model roots = nodes self.rich_model.set_root_nodes(roots) # load sorting if single node is selected if len(nodes) == 1: self.load_sorting(nodes[0], self.model) # expand rows for node in roots: self.expand_to_path(treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) # disable if no roots if len(roots) == 0: self.set_sensitive(False) else: self.set_sensitive(True) # update status self.display_page_count() self.emit("select-nodes", [])
def view_nodes(self, nodes, nested=True): # TODO: learn how to deactivate expensive sorting #self.model.set_default_sort_func(None) #self.model.set_sort_column_id(-1, gtk.SORT_ASCENDING) # save sorting if a single node was selected if self._sel_nodes is not None and len(self._sel_nodes) == 1: self.save_sorting(self._sel_nodes[0]) self._sel_nodes = nodes self.rich_model.set_nested(nested) # set master node self.set_master_node(None) # populate model roots = nodes self.rich_model.set_root_nodes(roots) # load sorting if single node is selected if len(nodes) == 1: self.load_sorting(nodes[0], self.model) # expand rows for node in roots: self.expand_to_path( treemodel.get_path_from_node( self.model, node, self.rich_model.get_node_column())) # disable if no roots if len(roots) == 0: self.set_sensitive(False) else: self.set_sensitive(True) # update status self.display_page_count() self.emit("select-nodes", [])
# set new title and catch errors if new_text != node.get_title(): try: node.rename(new_text) except NoteBookError, e: self.emit("error", e.msg, e) # reselect node # NOTE: I select the root inorder for set_cursor(path) to really take # effect (gtk seems to ignore a select call if it "thinks" the path # is selected) #if self.model.iter_n_children(None) > 0: # self.set_cursor((0,)) path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: self.set_cursor(path) gobject.idle_add(lambda: self.scroll_to_cell(path)) self.emit("edit-title", node, new_text) #============================================= # drag and drop def set_reorder(self, order): self._reorder = order
def expand_node(self, node): """Expand a node in TreeView""" path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: self.expand_to_path(path)
def edit_node(self, node): path = treemodel.get_path_from_node(self.model, node, self.rich_model.get_node_column()) self.set_cursor_on_cell(path, self.column, self.cell_text, True) gobject.idle_add(lambda: self.scroll_to_cell(path))
# set new title and catch errors if new_text != node.get_title(): try: node.rename(new_text) except NoteBookError, e: self.emit("error", e.msg, e) # reselect node # NOTE: I select the root inorder for set_cursor(path) to really take # effect (gtk seems to ignore a select call if it "thinks" the path # is selected) #if self.model.iter_n_children(None) > 0: # self.set_cursor((0,)) path = get_path_from_node(self.model, node, self.rich_model.get_node_column()) if path is not None: self.set_cursor(path) gobject.idle_add(lambda: self.scroll_to_cell(path)) self.emit("edit-title", node, new_text) #============================================= # drag and drop def set_reorder(self, order): self._reorder = order def get_reorderable(self): return self._reorder