--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RefactoringRope/MatchesDialog.py Sat Jan 29 13:38:30 2011 +0100 @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show matching references/definitions. +""" + +from PyQt4.QtCore import pyqtSlot, Qt +from PyQt4.QtGui import QDialog, QTreeWidgetItem, QDialogButtonBox, \ + QHeaderView + +from E5Gui.E5Application import e5App + +from Ui_MatchesDialog import Ui_MatchesDialog + +class MatchesDialog(QDialog, Ui_MatchesDialog): + """ + Class implementing a dialog to show matching references/definitions. + """ + def __init__(self, ui, showConfidence, parent = None, name = None): + """ + Constructor + + @param ui reference to the UI object + @param showConfidence flag indicating the display of the + confidence column (boolean) + @param parent parent of this dialog (QWidget) + @param name name of this dialog (string) + """ + QDialog.__init__(self, parent) + if name: + self.setObjectName(name) + self.setupUi(self) + + self.buttonBox.button(QDialogButtonBox.Close).setDefault(True) + + self.ui = ui + self.__showConfidence = showConfidence + + if not self.__showConfidence: + self.matchesList.setColumnHidden(2, True) + self.matchesList.header().setSortIndicator(0, Qt.AscendingOrder) + + def __resort(self): + """ + Private method to resort the tree. + """ + self.matchesList.sortItems(self.matchesList.sortColumn(), + self.matchesList.header().sortIndicatorOrder()) + + def __resizeColumns(self): + """ + Private method to resize the list columns. + """ + self.matchesList.header().resizeSections(QHeaderView.ResizeToContents) + self.matchesList.header().setStretchLastSection(True) + + @pyqtSlot(QTreeWidgetItem, int) + def on_matchesList_itemActivated(self, item, column): + """ + Private slot to handle the itemActivated signal of the list. + """ + lineno = int(item.text(1)) + fn = item.text(0) + e5App().getObject("ViewManager").openSourceFile(fn, lineno) + + def addEntry(self, resource, lineno, unsure=False): + """ + Public slot to add an entry to the list. + + @param resource reference to the resource object + (rope.base.resources.Resource) + @param lineno linenumber of the match (integer) + @param unsure flag indicating an unsure match (boolean) + """ + if unsure: + conf = 50 + else: + conf = 100 + itm = QTreeWidgetItem(self.matchesList, + [resource.real_path, + " {0:5d}".format(lineno), + " {0:5d}%".format(conf)]) + itm.setTextAlignment(1, Qt.AlignRight) + itm.setTextAlignment(2, Qt.AlignRight) + self.__resort() + self.__resizeColumns()