diff -r e3924615f9a3 -r 9f687137a929 RefactoringRope/HelpDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RefactoringRope/HelpDialog.py Sun Jan 23 19:55:56 2011 +0100 @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show help about rope. +""" + +from PyQt4.QtGui import QDialog, QDialogButtonBox, QTextDocument, QTextCursor + +from Ui_HelpDialog import Ui_HelpDialog +from SearchDialog import SearchDialog + +import Globals + +class HelpDialog(QDialog, Ui_HelpDialog): + """ + Class implementing a dialog to show help about rope. + """ + def __init__(self, title, helpfile, parent = None): + """ + Constructor + + @param title window title (string) + @param helpfile filename of the helpfile (string) + @param parent reference to the parent widget (QWidget) + """ + QDialog.__init__(self, parent) + self.setupUi(self) + + self.searchButton = self.buttonBox.addButton( + self.trUtf8("Search..."), QDialogButtonBox.ActionRole) + self.__searchDlg = None + + if Globals.isWindowsPlatform(): + self.helpEdit.setFontFamily("Lucida Console") + else: + self.helpEdit.setFontFamily("Monospace") + + try: + f = open(helpfile, "r", encoding = "utf-8") + txt = f.read() + f.close() + self.helpEdit.setPlainText(txt) + except IOError as err: + self.helpEdit.setPlainText( + self.trUtf8("Could not read file {0}.\nReason: {1}")\ + .format(helpfile, str(err))) + + def on_buttonBox_clicked(self, button): + """ + Private slot called by a button of the button box clicked. + + @param button button that was clicked (QAbstractButton) + """ + if button == self.searchButton: + if self.__searchDlg is None: + self.__searchDlg = SearchDialog(self) + self.__searchDlg.showFind() + + def findNextPrev(self, txt, case, word, backwards): + """ + Public slot to find the next occurrence of a text. + + @param txt text to search for (string) + @param case flag indicating a case sensitive search (boolean) + @param word flag indicating a word based search (boolean) + @param backwards flag indicating a backwards search (boolean) + """ + doc = self.helpEdit.document() + cur = self.helpEdit.textCursor() + + findFlags = QTextDocument.FindFlags() + if case: + findFlags |= QTextDocument.FindCaseSensitively + if word: + findFlags |= QTextDocument.FindWholeWords + if backwards: + findFlags |= QTextDocument.FindBackward + + if cur.hasSelection(): + cur.setPosition(backwards and cur.anchor() or cur.position(), + QTextCursor.MoveAnchor) + newCur = doc.find(txt, cur, findFlags) + if newCur.isNull(): + return False + else: + self.helpEdit.setTextCursor(newCur) + return True + + def helpWidget(self): + """ + Public method to get a reference to the help widget. + + @return reference to the help widget (QTextEdit) + """ + return self.helpEdit