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)
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)
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))
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)