From 3c140d755fe3d8658123cecf306daf0beb9374a5 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Fri, 15 Dec 2017 20:56:40 +0100 Subject: [PATCH] Adds "Sentence mode" to Focus mode. #259 --- manuskript/settings.py | 2 +- manuskript/settingsWindow.py | 8 ++++--- .../ui/highlighters/markdownHighlighter.py | 23 +++++++++++++++++++ manuskript/ui/settings_ui.py | 6 +++-- manuskript/ui/settings_ui.ui | 5 ++++ 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/manuskript/settings.py b/manuskript/settings.py index 4ba49de7..985a35d6 100644 --- a/manuskript/settings.py +++ b/manuskript/settings.py @@ -75,7 +75,7 @@ textEditor = { "marginsTB": 20, "backgroundTransparent": False, "alwaysCenter": False, - "focusMode": False # "line", "paragraph" + "focusMode": False # "line", "paragraph", "sentence" } revisions = { diff --git a/manuskript/settingsWindow.py b/manuskript/settingsWindow.py index 0ed49ea0..97ebda40 100644 --- a/manuskript/settingsWindow.py +++ b/manuskript/settingsWindow.py @@ -206,8 +206,9 @@ class settingsWindow(QWidget, Ui_Settings): self.chkEditorTypeWriterMode.stateChanged.connect(self.updateEditorSettings) self.cmbEditorFocusMode.setCurrentIndex( 0 if not opt["focusMode"] else - 1 if opt["focusMode"] == "line" else - 2) + 1 if opt["focusMode"] == "sentence" else + 2 if opt["focusMode"] == "line" else + 3) self.cmbEditorFocusMode.currentIndexChanged.connect(self.updateEditorSettings) # Text areas self.chkEditorMaxWidth.setChecked(opt["maxWidth"] != 0) @@ -504,7 +505,8 @@ class settingsWindow(QWidget, Ui_Settings): settings.textEditor["alwaysCenter"] = self.chkEditorTypeWriterMode.isChecked() settings.textEditor["focusMode"] = \ False if self.cmbEditorFocusMode.currentIndex() == 0 else \ - "line" if self.cmbEditorFocusMode.currentIndex() == 1 else \ + "sentence" if self.cmbEditorFocusMode.currentIndex() == 1 else \ + "line" if self.cmbEditorFocusMode.currentIndex() == 2 else \ "paragraph" # Text area diff --git a/manuskript/ui/highlighters/markdownHighlighter.py b/manuskript/ui/highlighters/markdownHighlighter.py index d68aa509..786cae8c 100644 --- a/manuskript/ui/highlighters/markdownHighlighter.py +++ b/manuskript/ui/highlighters/markdownHighlighter.py @@ -95,6 +95,7 @@ class MarkdownHighlighter(BasicHighlighter): if settings.textEditor["focusMode"] == "paragraph": return not self.currentBlock().contains( self.editor.textCursor().position()) + elif settings.textEditor["focusMode"] == "line": if self.currentBlock().contains( self.editor.textCursor().position()): @@ -109,6 +110,28 @@ class MarkdownHighlighter(BasicHighlighter): return (start, end) else: return True + + elif settings.textEditor["focusMode"] == "sentence": + if self.currentBlock().contains( + self.editor.textCursor().position()): + block = self.currentBlock() + # Position of cursor in block + pos = self.editor.textCursor().position() - block.position() + ENDChars = "!.?" + txt = block.text() + start = -1 + for i in range(len(txt)): + if start == -1: start = i + if txt[i] in ENDChars: + s = txt[start:i+1] + if start <= pos <= start + len(s): + return start, i+1 + start = -1 + return (start, len(txt)) + + else: + return True + return False def doHighlightBlock(self, text): diff --git a/manuskript/ui/settings_ui.py b/manuskript/ui/settings_ui.py index 2cde4e75..978958d3 100644 --- a/manuskript/ui/settings_ui.py +++ b/manuskript/ui/settings_ui.py @@ -1326,6 +1326,7 @@ class Ui_Settings(object): self.cmbEditorFocusMode.addItem("") self.cmbEditorFocusMode.addItem("") self.cmbEditorFocusMode.addItem("") + self.cmbEditorFocusMode.addItem("") self.formLayout_10.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.cmbEditorFocusMode) self.verticalLayout_22.addWidget(self.groupBox_15) self.horizontalLayout_4.addLayout(self.verticalLayout_22) @@ -2010,8 +2011,9 @@ class Ui_Settings(object): self.chkEditorTypeWriterMode.setText(_translate("Settings", "Typewriter mode")) self.label_52.setText(_translate("Settings", "Focus mode")) self.cmbEditorFocusMode.setItemText(0, _translate("Settings", "None")) - self.cmbEditorFocusMode.setItemText(1, _translate("Settings", "Line")) - self.cmbEditorFocusMode.setItemText(2, _translate("Settings", "Paragraph")) + self.cmbEditorFocusMode.setItemText(1, _translate("Settings", "Sentence")) + self.cmbEditorFocusMode.setItemText(2, _translate("Settings", "Line")) + self.cmbEditorFocusMode.setItemText(3, _translate("Settings", "Paragraph")) self.tabViews.setTabText(self.tabViews.indexOf(self.tab_4), _translate("Settings", "Text editor")) self.lblTitleLabels.setText(_translate("Settings", "Labels")) self.btnLabelColor.setShortcut(_translate("Settings", "Ctrl+S")) diff --git a/manuskript/ui/settings_ui.ui b/manuskript/ui/settings_ui.ui index 1fa5c704..47b1e307 100644 --- a/manuskript/ui/settings_ui.ui +++ b/manuskript/ui/settings_ui.ui @@ -2679,6 +2679,11 @@ None + + + Sentence + + Line