Fix line number update when searching (#947)

* Fix line position in footer not updating when searching
* Update and fix docstrings
This commit is contained in:
Veronica Berglyd Olsen
2022-01-02 00:12:46 +01:00
committed by GitHub
parent 0401b8556d
commit 79657a9d53
+31 -31
View File
@@ -181,7 +181,7 @@ class GuiDocEditor(QTextEdit):
return
def clearEditor(self):
"""Clear the current document and reset all document related
"""Clear the current document and reset all document-related
flags and counters.
"""
self._nwDocument = None
@@ -313,7 +313,7 @@ class GuiDocEditor(QTextEdit):
error, we must handle this and clear the editor so that we don't
risk overwriting the file if it exists. This can for instance
happen of the file contains binary elements or an encoding that
novelWriter does not support. If load is successful, or the
novelWriter does not support. If loading is successful, or the
document is new (empty string), we set up the editor for editing
the file.
"""
@@ -371,7 +371,7 @@ class GuiDocEditor(QTextEdit):
self.highLight.spellCheck = spTemp
if tLine is None and self._nwItem is not None:
# For large documents we queue the repositioning until the
# For large documents, we queue the repositioning until the
# document layout has grown past the point we want to move
# the cursor to. This makes the loading significantly
# faster.
@@ -424,7 +424,7 @@ class GuiDocEditor(QTextEdit):
return
def replaceText(self, theText):
"""Replaces the text of the current document with the provided
"""Replace the text of the current document with the provided
text. This also clears undo history.
"""
docSize = len(theText)
@@ -576,13 +576,13 @@ class GuiDocEditor(QTextEdit):
return self._docChanged
def docHandle(self):
"""Return the handle of the currently open document. Returns
"""Return the handle of the currently open document. Return
None if no document is open.
"""
return self._docHandle
def lastActive(self):
"""Eeturn the last active timestamp for the user.
"""Return the last active timestamp for the user.
"""
return self._lastActive
@@ -622,9 +622,8 @@ class GuiDocEditor(QTextEdit):
##
def setDocumentChanged(self, bValue):
"""Keeps track of the document changed variable, and ensures
that the corresponding icon on the status bar shows the same
status.
"""Keep track of the document changed variable, and emit the
document change signal.
"""
self._docChanged = bValue
self.docEditedStatusChanged.emit(self._docChanged)
@@ -673,9 +672,8 @@ class GuiDocEditor(QTextEdit):
##
def setDictionaries(self):
"""Set the spell checker dictionary language, and update the
status bar to show the one actually loaded by the spell checker
class.
"""Set the spell checker dictionary language, and emit the
dictionary changed signal.
"""
if self.theProject.projSpell is None:
theLang = self.mainConf.spellLanguage
@@ -907,7 +905,7 @@ class GuiDocEditor(QTextEdit):
return True
def insertNewBlock(self, theText, defaultAfter=True):
"""Inserts a piece of text on a blank line.
"""Insert a piece of text on a blank line.
"""
theCursor = self.textCursor()
theBlock = theCursor.block()
@@ -972,11 +970,12 @@ class GuiDocEditor(QTextEdit):
def keyPressEvent(self, keyEvent):
"""Intercept key press events.
We need to intercept a few key sequences:
* The return and enter key redirects here even if the search
* The return and enter keys redirect here even if the search
box has focus. Since we need these keys to continue search,
we block any further interaction here while it's in focus.
* The undo/redo/select all sequences bypasses the docAction
we block any further interaction here while ithas focus.
* The undo/redo/select all sequences bypass the docAction
pathway from the menu, so we redirect them back from here.
* We also handle automatic scrolling here.
"""
self._lastActive = time()
isReturn = keyEvent.key() == Qt.Key_Return
@@ -1048,7 +1047,7 @@ class GuiDocEditor(QTextEdit):
return
def resizeEvent(self, theEvent):
"""If the text editor is resize, we must make sure the document
"""If the text editor is resized, we must make sure the document
has its margins adjusted according to user preferences.
"""
QTextEdit.resizeEvent(self, theEvent)
@@ -1396,14 +1395,15 @@ class GuiDocEditor(QTextEdit):
theCursor.setPosition(resE[resIdx], QTextCursor.KeepAnchor)
self.setTextCursor(theCursor)
self.docFooter.updateLineCount()
self.docSearch.setResultCount(resIdx + 1, len(resS))
self._lastFind = (resS[resIdx], resE[resIdx])
return
def findAllOccurences(self):
"""Create a list of all search results of the current search in
the document.
"""Create a list of all search results of the current search
text in the document.
"""
resS = []
resE = []
@@ -1558,7 +1558,7 @@ class GuiDocEditor(QTextEdit):
return True
def _clearSurrounding(self, theCursor, nChars):
"""Clears n characters before and after the cursor.
"""Clear n characters before and after the cursor.
"""
if not theCursor.hasSelection():
logger.warning("No selection made, nothing to do")
@@ -1580,7 +1580,7 @@ class GuiDocEditor(QTextEdit):
return True
def _wrapSelection(self, tBefore, tAfter=None):
"""Wraps the selected text in whatever is in tBefore and tAfter.
"""Wrap the selected text in whatever is in tBefore and tAfter.
If there is no selection, the autoSelect setting decides the
action. AutoSelect will select the word under the cursor before
wrapping it. If this feature is disabled, nothing is done.
@@ -1669,7 +1669,7 @@ class GuiDocEditor(QTextEdit):
return True
def _formatBlock(self, docAction):
"""Changes the block format of the block under the cursor.
"""Change the block format of the block under the cursor.
"""
theCursor = self.textCursor()
theBlock = theCursor.block()
@@ -1886,8 +1886,8 @@ class GuiDocEditor(QTextEdit):
return False
def _openSpellContext(self):
"""Opens the spell check context menu at the current point of
the cursor.
"""Open the spell check context menu at the current point of the
cursor.
"""
self._openContextMenu(self.cursorRect().center())
return
@@ -2026,7 +2026,7 @@ class GuiDocEditor(QTextEdit):
return
def _autoSelect(self):
"""Returns a cursor which may or may not have a selection based
"""Return a cursor which may or may not have a selection based
on user settings and document action.
"""
theCursor = self.textCursor()
@@ -2065,7 +2065,7 @@ class GuiDocEditor(QTextEdit):
theCursor = self._autoSelect()
elif selMode == QTextCursor.BlockUnderCursor:
# This selection mode also selects the preceding oaragraph
# This selection mode also selects the preceding paragraph
# separator, which we want to avoid.
posS = theCursor.selectionStart()
posE = theCursor.selectionEnd()
@@ -2088,7 +2088,7 @@ class GuiDocEditor(QTextEdit):
return
def _allowAutoReplace(self, theState):
"""used to enable/disable the auto-replace feature temporarily.
"""Enable/disable the auto-replace feature temporarily.
"""
if theState:
self._doReplace = self.mainConf.doReplace
@@ -2372,7 +2372,7 @@ class GuiDocEditSearch(QFrame):
return False
def anyFocus(self):
"""Returns true if any of the input boxes have focus.
"""Return True if any of the input boxes have focus.
"""
return self.searchBox.hasFocus() | self.replaceBox.hasFocus()
@@ -2480,7 +2480,7 @@ class GuiDocEditSearch(QFrame):
return
def _doToggleReplace(self, theState):
"""Toggle the show/hide of the
"""Toggle the show/hide of the replace box.
"""
if theState:
self.showReplace.setArrowType(Qt.DownArrow)
@@ -2678,8 +2678,8 @@ class GuiDocEditHeader(QWidget):
return
def setTitleFromHandle(self, tHandle):
"""Sets the document title from the handle, or alternatively,
set the whole document path.
"""Set the document title from the handle, or alternatively, set
the whole document path within the project.
"""
self._docHandle = tHandle
if tHandle is None: