Sat, 09 Nov 2013 17:46:01 +0100
Added support for find indicators to the editor (QScintilla >= 2.8).
--- a/APIs/Python3/eric5.api Sat Nov 09 15:23:52 2013 +0100 +++ b/APIs/Python3/eric5.api Sat Nov 09 17:46:01 2013 +0100 @@ -7193,6 +7193,7 @@ eric5.QScintilla.QsciScintillaCompat.QSCINTILLA_VERSION?4() eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.ArrowFoldStyle?7 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.ArrowTreeFoldStyle?7 +eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.IndicatorStyleMax?7 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.UserSeparator?7 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat._encodeString?5(string) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.byteAt?4(pos) @@ -7223,6 +7224,7 @@ eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.extendSelectionWordRight?4() eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.findFirstTarget?4(expr_, re_, cs_, wo_, begline=-1, begindex=-1, endline=-1, endindex=-1, ws_=False) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.findNextTarget?4() +eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.flashFindIndicator?4(sline, sindex, eline, eindex) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.focusOutEvent?4(event) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.foldExpandedAt?4(line) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.foldFlagsAt?4(line) @@ -7242,6 +7244,7 @@ eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.getZoom?4() eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.hasIndicator?4(indicator, pos) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.hasSelection?4() +eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.hideFindIndicator?4() eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.indentationGuideView?4() eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.indicatorDefine?4(indicator, style, color) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.lineAt?4(pos) @@ -7277,6 +7280,7 @@ eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setStyleBits?4(bits) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setStyling?4(length, style) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setVirtualSpaceOptions?4(options) +eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.showFindIndicator?4(sline, sindex, eline, eindex) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.showUserList?4(id, lst) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.startStyling?4(pos, mask) eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.styleAt?4(pos)
--- a/Documentation/Help/source.qhp Sat Nov 09 15:23:52 2013 +0100 +++ b/Documentation/Help/source.qhp Sat Nov 09 17:46:01 2013 +0100 @@ -9370,6 +9370,7 @@ <keyword name="QsciScintillaCompat.extendSelectionWordRight" id="QsciScintillaCompat.extendSelectionWordRight" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.extendSelectionWordRight" /> <keyword name="QsciScintillaCompat.findFirstTarget" id="QsciScintillaCompat.findFirstTarget" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.findFirstTarget" /> <keyword name="QsciScintillaCompat.findNextTarget" id="QsciScintillaCompat.findNextTarget" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.findNextTarget" /> + <keyword name="QsciScintillaCompat.flashFindIndicator" id="QsciScintillaCompat.flashFindIndicator" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.flashFindIndicator" /> <keyword name="QsciScintillaCompat.focusOutEvent" id="QsciScintillaCompat.focusOutEvent" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.focusOutEvent" /> <keyword name="QsciScintillaCompat.foldExpandedAt" id="QsciScintillaCompat.foldExpandedAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.foldExpandedAt" /> <keyword name="QsciScintillaCompat.foldFlagsAt" id="QsciScintillaCompat.foldFlagsAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.foldFlagsAt" /> @@ -9389,6 +9390,7 @@ <keyword name="QsciScintillaCompat.getZoom" id="QsciScintillaCompat.getZoom" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.getZoom" /> <keyword name="QsciScintillaCompat.hasIndicator" id="QsciScintillaCompat.hasIndicator" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.hasIndicator" /> <keyword name="QsciScintillaCompat.hasSelection" id="QsciScintillaCompat.hasSelection" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.hasSelection" /> + <keyword name="QsciScintillaCompat.hideFindIndicator" id="QsciScintillaCompat.hideFindIndicator" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.hideFindIndicator" /> <keyword name="QsciScintillaCompat.indentationGuideView" id="QsciScintillaCompat.indentationGuideView" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.indentationGuideView" /> <keyword name="QsciScintillaCompat.indicatorDefine" id="QsciScintillaCompat.indicatorDefine" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.indicatorDefine" /> <keyword name="QsciScintillaCompat.lineAt" id="QsciScintillaCompat.lineAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.lineAt" /> @@ -9424,6 +9426,7 @@ <keyword name="QsciScintillaCompat.setStyleBits" id="QsciScintillaCompat.setStyleBits" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setStyleBits" /> <keyword name="QsciScintillaCompat.setStyling" id="QsciScintillaCompat.setStyling" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setStyling" /> <keyword name="QsciScintillaCompat.setVirtualSpaceOptions" id="QsciScintillaCompat.setVirtualSpaceOptions" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setVirtualSpaceOptions" /> + <keyword name="QsciScintillaCompat.showFindIndicator" id="QsciScintillaCompat.showFindIndicator" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.showFindIndicator" /> <keyword name="QsciScintillaCompat.showUserList" id="QsciScintillaCompat.showUserList" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.showUserList" /> <keyword name="QsciScintillaCompat.startStyling" id="QsciScintillaCompat.startStyling" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.startStyling" /> <keyword name="QsciScintillaCompat.styleAt" id="QsciScintillaCompat.styleAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.styleAt" />
--- a/Documentation/Source/eric5.QScintilla.QsciScintillaCompat.html Sat Nov 09 15:23:52 2013 +0100 +++ b/Documentation/Source/eric5.QScintilla.QsciScintillaCompat.html Sat Nov 09 17:46:01 2013 +0100 @@ -61,7 +61,7 @@ QsciScintilla <h3>Class Attributes</h3> <table> -<tr><td>ArrowFoldStyle</td></tr><tr><td>ArrowTreeFoldStyle</td></tr><tr><td>UserSeparator</td></tr> +<tr><td>ArrowFoldStyle</td></tr><tr><td>ArrowTreeFoldStyle</td></tr><tr><td>IndicatorStyleMax</td></tr><tr><td>UserSeparator</td></tr> </table> <h3>Class Methods</h3> <table> @@ -166,6 +166,9 @@ <td><a href="#QsciScintillaCompat.findNextTarget">findNextTarget</a></td> <td>Public method to find the next occurrence in the target range.</td> </tr><tr> +<td><a href="#QsciScintillaCompat.flashFindIndicator">flashFindIndicator</a></td> +<td>Public method to flash the find indicator for the given range.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.focusOutEvent">focusOutEvent</a></td> <td>Public method called when the editor loses focus.</td> </tr><tr> @@ -223,6 +226,9 @@ <td><a href="#QsciScintillaCompat.hasSelection">hasSelection</a></td> <td>Public method to check for a selection.</td> </tr><tr> +<td><a href="#QsciScintillaCompat.hideFindIndicator">hideFindIndicator</a></td> +<td>Public method to hide the find indicator.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.indentationGuideView">indentationGuideView</a></td> <td>Public method to get the indentation guide view.</td> </tr><tr> @@ -328,6 +334,9 @@ <td><a href="#QsciScintillaCompat.setVirtualSpaceOptions">setVirtualSpaceOptions</a></td> <td>Public method to set the virtual space usage options.</td> </tr><tr> +<td><a href="#QsciScintillaCompat.showFindIndicator">showFindIndicator</a></td> +<td>Public method to show the find indicator for the given range.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.showUserList">showUserList</a></td> <td>Public method to show a user supplied list.</td> </tr><tr> @@ -686,6 +695,25 @@ <dd> flag indicating a successful search (boolean) </dd> +</dl><a NAME="QsciScintillaCompat.flashFindIndicator" ID="QsciScintillaCompat.flashFindIndicator"></a> +<h4>QsciScintillaCompat.flashFindIndicator</h4> +<b>flashFindIndicator</b>(<i>sline, sindex, eline, eindex</i>) +<p> + Public method to flash the find indicator for the given range. +</p><dl> +<dt><i>sline</i></dt> +<dd> +line number of the indicator start (integer) +</dd><dt><i>sindex</i></dt> +<dd> +index of the indicator start (integer) +</dd><dt><i>eline</i></dt> +<dd> +line number of the indicator end (integer) +</dd><dt><i>eindex</i></dt> +<dd> +index of the indicator end (integer) +</dd> </dl><a NAME="QsciScintillaCompat.focusOutEvent" ID="QsciScintillaCompat.focusOutEvent"></a> <h4>QsciScintillaCompat.focusOutEvent</h4> <b>focusOutEvent</b>(<i>event</i>) @@ -918,7 +946,12 @@ <dd> flag indicating the presence of a selection (boolean) </dd> -</dl><a NAME="QsciScintillaCompat.indentationGuideView" ID="QsciScintillaCompat.indentationGuideView"></a> +</dl><a NAME="QsciScintillaCompat.hideFindIndicator" ID="QsciScintillaCompat.hideFindIndicator"></a> +<h4>QsciScintillaCompat.hideFindIndicator</h4> +<b>hideFindIndicator</b>(<i></i>) +<p> + Public method to hide the find indicator. +</p><a NAME="QsciScintillaCompat.indentationGuideView" ID="QsciScintillaCompat.indentationGuideView"></a> <h4>QsciScintillaCompat.indentationGuideView</h4> <b>indentationGuideView</b>(<i></i>) <p> @@ -945,7 +978,12 @@ (QsciScintilla.INDIC_PLAIN, QsciScintilla.INDIC_SQUIGGLE, QsciScintilla.INDIC_TT, QsciScintilla.INDIC_DIAGONAL, QsciScintilla.INDIC_STRIKE, QsciScintilla.INDIC_HIDDEN, - QsciScintilla.INDIC_BOX, QsciScintilla.INDIC_ROUNDBOX) + QsciScintilla.INDIC_BOX, QsciScintilla.INDIC_ROUNDBOX, + QsciScintilla.INDIC_STRAIGHTBOX, QsciScintilla.INDIC_DASH, + QsciScintilla.INDIC_DOTS, QsciScintilla.INDIC_SQUIGGLELOW, + QsciScintilla.INDIC_DOTBOX, QsciScintilla.INDIC_SQUIGGLEPIXMAP, + QsciScintilla.INDIC_COMPOSITIONTHICK depending upon QScintilla + version) </dd><dt><i>color</i></dt> <dd> color to be used by the indicator (QColor) @@ -1356,6 +1394,25 @@ <dd> usage options to set (integer, 0 to 3) </dd> +</dl><a NAME="QsciScintillaCompat.showFindIndicator" ID="QsciScintillaCompat.showFindIndicator"></a> +<h4>QsciScintillaCompat.showFindIndicator</h4> +<b>showFindIndicator</b>(<i>sline, sindex, eline, eindex</i>) +<p> + Public method to show the find indicator for the given range. +</p><dl> +<dt><i>sline</i></dt> +<dd> +line number of the indicator start (integer) +</dd><dt><i>sindex</i></dt> +<dd> +index of the indicator start (integer) +</dd><dt><i>eline</i></dt> +<dd> +line number of the indicator end (integer) +</dd><dt><i>eindex</i></dt> +<dd> +index of the indicator end (integer) +</dd> </dl><a NAME="QsciScintillaCompat.showUserList" ID="QsciScintillaCompat.showUserList"></a> <h4>QsciScintillaCompat.showUserList</h4> <b>showUserList</b>(<i>id, lst</i>)
--- a/QScintilla/Editor.py Sat Nov 09 15:23:52 2013 +0100 +++ b/QScintilla/Editor.py Sat Nov 09 17:46:01 2013 +0100 @@ -7027,6 +7027,7 @@ @param forward flag indicating the search direction (boolean) """ + self.hideFindIndicator() line, index = self.getCursorPosition() word = self.getCurrentWord() wordStart, wordEnd = self.getCurrentWordBoundaries() @@ -7057,6 +7058,8 @@ match = matches[-1] line, index = self.lineIndexFromPosition(match.start()) self.setSelection(line, index + len(match.group(0)), line, index) + self.showFindIndicator(line, index, + line, index + len(match.group(0))) ####################################################################### ## Sort related methods
--- a/QScintilla/QsciScintillaCompat.py Sat Nov 09 15:23:52 2013 +0100 +++ b/QScintilla/QsciScintillaCompat.py Sat Nov 09 17:46:01 2013 +0100 @@ -50,6 +50,15 @@ UserSeparator = '\x04' + if QSCINTILLA_VERSION() < 0x020600: + IndicatorStyleMax = QsciScintilla.INDIC_ROUNDBOX + elif QSCINTILLA_VERSION() < 0x020700: + IndicatorStyleMax = QsciScintilla.INDIC_DOTBOX + elif QSCINTILLA_VERSION() < 0x020800: + IndicatorStyleMax = QsciScintilla.INDIC_SQUIGGLEPIXMAP + else: + IndicatorStyleMax = QsciScintilla.INDIC_COMPOSITIONTHICK + def __init__(self, parent=None): """ Constructor @@ -884,7 +893,12 @@ (QsciScintilla.INDIC_PLAIN, QsciScintilla.INDIC_SQUIGGLE, QsciScintilla.INDIC_TT, QsciScintilla.INDIC_DIAGONAL, QsciScintilla.INDIC_STRIKE, QsciScintilla.INDIC_HIDDEN, - QsciScintilla.INDIC_BOX, QsciScintilla.INDIC_ROUNDBOX) + QsciScintilla.INDIC_BOX, QsciScintilla.INDIC_ROUNDBOX, + QsciScintilla.INDIC_STRAIGHTBOX, QsciScintilla.INDIC_DASH, + QsciScintilla.INDIC_DOTS, QsciScintilla.INDIC_SQUIGGLELOW, + QsciScintilla.INDIC_DOTBOX, QsciScintilla.INDIC_SQUIGGLEPIXMAP, + QsciScintilla.INDIC_COMPOSITIONTHICK depending upon QScintilla + version) @param color color to be used by the indicator (QColor) @exception ValueError the indicator or style are not valid """ @@ -893,7 +907,7 @@ raise ValueError("indicator number out of range") if style < QsciScintilla.INDIC_PLAIN or \ - style > QsciScintilla.INDIC_ROUNDBOX: + style > self.IndicatorStyleMax: raise ValueError("style out of range") self.SendScintilla(QsciScintilla.SCI_INDICSETSTYLE, indicator, style) @@ -994,6 +1008,42 @@ indicator, pos) return res + def showFindIndicator(self, sline, sindex, eline, eindex): + """ + Public method to show the find indicator for the given range. + + @param sline line number of the indicator start (integer) + @param sindex index of the indicator start (integer) + @param eline line number of the indicator end (integer) + @param eindex index of the indicator end (integer) + """ + if hasattr(QsciScintilla, "SCI_FINDINDICATORSHOW"): + spos = self.positionFromLineIndex(sline, sindex) + epos = self.positionFromLineIndex(eline, eindex) + self.SendScintilla(QsciScintilla.SCI_FINDINDICATORSHOW, spos, epos) + + def flashFindIndicator(self, sline, sindex, eline, eindex): + """ + Public method to flash the find indicator for the given range. + + @param sline line number of the indicator start (integer) + @param sindex index of the indicator start (integer) + @param eline line number of the indicator end (integer) + @param eindex index of the indicator end (integer) + """ + if hasattr(QsciScintilla, "SCI_FINDINDICATORFLASH"): + spos = self.positionFromLineIndex(sline, sindex) + epos = self.positionFromLineIndex(eline, eindex) + self.SendScintilla(QsciScintilla.SCI_FINDINDICATORFLASH, + spos, epos) + + def hideFindIndicator(self): + """ + Public method to hide the find indicator. + """ + if hasattr(QsciScintilla, "SCI_FINDINDICATORHIDE"): + self.SendScintilla(QsciScintilla.SCI_FINDINDICATORHIDE) + ########################################################################### # methods to perform folding related stuff ###########################################################################
--- a/QScintilla/SearchReplaceWidget.py Sat Nov 09 15:23:52 2013 +0100 +++ b/QScintilla/SearchReplaceWidget.py Sat Nov 09 17:46:01 2013 +0100 @@ -350,6 +350,7 @@ self.__markOccurrences(txt) aw = self.viewmanager.activeWindow() + aw.hideFindIndicator() cline, cindex = aw.getCursorPosition() ok = True @@ -517,6 +518,10 @@ aw.setCursorPosition(cline, cindex) aw.ensureCursorVisible() + if ok: + sline, sindex, eline, eindex = aw.getSelection() + aw.showFindIndicator(sline, sindex, eline, eindex) + self.__finding = False return ok @@ -626,6 +631,7 @@ self.ui.replacetextCombo.addItems(self.replaceHistory) aw = self.viewmanager.activeWindow() + aw.hideFindIndicator() aw.replace(rtxt) if searchNext: @@ -669,6 +675,7 @@ self.ui.replacetextCombo.addItems(self.replaceHistory) aw = self.viewmanager.activeWindow() + aw.hideFindIndicator() cline, cindex = aw.getCursorPosition() boundary = self.__selectionBoundary() if self.ui.selectionCheckBox.isChecked(): @@ -830,6 +837,10 @@ """ Private slot to close the widget. """ + aw = self.viewmanager.activeWindow() + if aw: + aw.hideFindIndicator() + if self.__sliding: self.__topWidget.close() else: @@ -845,6 +856,7 @@ aw = self.viewmanager.activeWindow() if aw: aw.setFocus(Qt.ActiveWindowFocusReason) + aw.hideFindIndicator() event.accept() if self.__sliding: self.__topWidget.close()
--- a/ViewManager/ViewManager.py Sat Nov 09 15:23:52 2013 +0100 +++ b/ViewManager/ViewManager.py Sat Nov 09 17:46:01 2013 +0100 @@ -5180,9 +5180,13 @@ if self.quickFindtextCombo.lastActive: self.quickFindtextCombo.lastActive.setFocus() aw = self.activeWindow() - if aw and self.quickFindtextCombo.lastCursorPos: - aw.setCursorPosition(self.quickFindtextCombo.lastCursorPos[0], - self.quickFindtextCombo.lastCursorPos[1]) + if aw: + aw.hideFindIndicator() + if self.quickFindtextCombo.lastCursorPos: + aw.setCursorPosition( + self.quickFindtextCombo.lastCursorPos[0], + self.quickFindtextCombo.lastCursorPos[1]) + if self.__quickSearchToolbarVisibility is not None: self.__quickSearchToolbar.setVisible( self.__quickSearchToolbarVisibility) @@ -5253,6 +5257,8 @@ if not aw: return + aw.hideFindIndicator() + text = self.quickFindtextCombo.lineEdit().text() if not text and again: text = self.quickFindtextCombo.lastSearchText @@ -5286,6 +5292,9 @@ else: ok = aw.findFirst(text, False, False, False, True, not back, lineFrom, indexFrom) + if ok: + sline, sindex, eline, eindex = aw.getSelection() + aw.showFindIndicator(sline, sindex, eline, eindex) self.__quickSearchSetEditColors(not ok) def __quickSearchSetEditColors(self, error):