示例#1
0
 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)
示例#2
0
 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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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
示例#6
0
    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
示例#7
0
    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()
示例#8
0
    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()
示例#9
0
    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()
示例#10
0
    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()
示例#11
0
    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", [])
示例#12
0
    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", [])
示例#13
0
        # 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
示例#14
0
 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)
示例#15
0
 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))
示例#16
0
        # 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
示例#17
0
 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)