Beispiel #1
0
 def distance_from_end(self, tree_widget):
     """Returns  a (selected, end-index) tuple based on the selection
     """
     item_id, item_selected = qtutils.selected_treeitem(tree_widget)
     if item_selected:
         item_count = tree_widget.topLevelItemCount()
         item_delta = item_count - item_id
         return (item_selected, item_delta)
     else:
         return (item_selected, 0)
Beispiel #2
0
 def diff_files_doubleclick(self):
     """Shows the diff for a specific file
     """
     tree_widget = self.view.diff_files
     id_num, selected = qtutils.selected_treeitem(tree_widget)
     if not selected:
         qtutils.information('Oops!', 'Please select a file to compare')
         return
     filename = self.model.diff_files[id_num]
     self._compare_file(filename)
Beispiel #3
0
    def update_widgets(self, left=True):
        """Updates the list of available revisions for comparison
        """
        # This callback can be triggered by either the 'start'
        # listwidget or the 'end' list widget.  The behavior
        # is identical; the only difference is the attribute names.
        if left:
            tree_widget = self.view.descriptions_start
            revisions_param = 'revisions_start'
            revision_param = 'revision_start'
        else:
            tree_widget = self.view.descriptions_end
            revisions_param = 'revisions_end'
            revision_param = 'revision_end'

        # Is anything selected?
        id_num, selected = qtutils.selected_treeitem(tree_widget)
        if not selected:
            return

        # Is this a valid revision?
        revisionlist = self.model.param(revisions_param)
        if id_num < len(revisionlist):
            revision = self.model.param(revisions_param)[id_num]
            self.model.set_param(revision_param, revision)

        # get the changed files list
        start = self.model.revision_start
        end = self.model.revision_end
        files = gitcmds.changed_files(start, end)

        # get the old name of any renamed files, and prune them
        # from the changes list
        renamed_files = gitcmds.renamed_files(start, end)
        for renamed in renamed_files:
            try:
                files.remove(renamed)
            except:
                pass
        # Sets the "changed files" list
        self.model.set_compare_files(files)

        # Updates the listwidget's icons
        icon = qtutils.icon('script.png')
        for idx in xrange(0, self.view.compare_files.topLevelItemCount()):
            item = self.view.compare_files.topLevelItem(idx)
            item.setIcon(0, icon)
        # Throw the selected SHA-1 into the clipboard
        qtutils.set_clipboard(self.model.param(revision_param))
Beispiel #4
0
 def compare_selected_file(self):
     """Compares the currently selected file
     """
     # When a filename was provided in the constructor then we
     # simply compare that file
     if self.filename:
         self._compare_file(self.filename)
         return
     # Otherwise, use the selection to choose the compared file
     tree_widget = self.view.compare_files
     id_num, selected = qtutils.selected_treeitem(tree_widget)
     if not selected:
         qtutils.information('Oops!', 'Please select a file to compare')
         return
     filename = self.model.compare_files[id_num]
     self._compare_file(filename)