Add menu entry and update tests
This commit is contained in:
+16
-15
@@ -112,21 +112,22 @@ class nwDocAction(Enum):
|
|||||||
BLOCK_TXT = 19
|
BLOCK_TXT = 19
|
||||||
BLOCK_TTL = 20
|
BLOCK_TTL = 20
|
||||||
BLOCK_UNN = 21
|
BLOCK_UNN = 21
|
||||||
REPL_SNG = 22
|
BLOCK_HSC = 22
|
||||||
REPL_DBL = 23
|
REPL_SNG = 23
|
||||||
RM_BREAKS = 24
|
REPL_DBL = 24
|
||||||
ALIGN_L = 25
|
RM_BREAKS = 25
|
||||||
ALIGN_C = 26
|
ALIGN_L = 26
|
||||||
ALIGN_R = 27
|
ALIGN_C = 27
|
||||||
INDENT_L = 28
|
ALIGN_R = 28
|
||||||
INDENT_R = 29
|
INDENT_L = 29
|
||||||
SC_ITALIC = 30
|
INDENT_R = 30
|
||||||
SC_BOLD = 31
|
SC_ITALIC = 31
|
||||||
SC_STRIKE = 32
|
SC_BOLD = 32
|
||||||
SC_ULINE = 33
|
SC_STRIKE = 33
|
||||||
SC_MARK = 34
|
SC_ULINE = 34
|
||||||
SC_SUP = 35
|
SC_MARK = 35
|
||||||
SC_SUB = 36
|
SC_SUP = 36
|
||||||
|
SC_SUB = 37
|
||||||
|
|
||||||
# END Enum nwDocAction
|
# END Enum nwDocAction
|
||||||
|
|
||||||
|
|||||||
@@ -744,6 +744,8 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
self._formatBlock(nwDocAction.BLOCK_TTL)
|
self._formatBlock(nwDocAction.BLOCK_TTL)
|
||||||
elif action == nwDocAction.BLOCK_UNN:
|
elif action == nwDocAction.BLOCK_UNN:
|
||||||
self._formatBlock(nwDocAction.BLOCK_UNN)
|
self._formatBlock(nwDocAction.BLOCK_UNN)
|
||||||
|
elif action == nwDocAction.BLOCK_HSC:
|
||||||
|
self._formatBlock(nwDocAction.BLOCK_HSC)
|
||||||
elif action == nwDocAction.REPL_SNG:
|
elif action == nwDocAction.REPL_SNG:
|
||||||
self._replaceQuotes("'", self._typSQuoteO, self._typSQuoteC)
|
self._replaceQuotes("'", self._typSQuoteO, self._typSQuoteC)
|
||||||
elif action == nwDocAction.REPL_DBL:
|
elif action == nwDocAction.REPL_DBL:
|
||||||
@@ -1705,6 +1707,9 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
elif action == nwDocAction.BLOCK_UNN:
|
elif action == nwDocAction.BLOCK_UNN:
|
||||||
text = f"##! {temp}"
|
text = f"##! {temp}"
|
||||||
offset -= 4
|
offset -= 4
|
||||||
|
elif action == nwDocAction.BLOCK_HSC:
|
||||||
|
text = f"###! {temp}"
|
||||||
|
offset -= 5
|
||||||
elif action == nwDocAction.ALIGN_L:
|
elif action == nwDocAction.ALIGN_L:
|
||||||
text = f"{temp} <<"
|
text = f"{temp} <<"
|
||||||
elif action == nwDocAction.ALIGN_C:
|
elif action == nwDocAction.ALIGN_C:
|
||||||
|
|||||||
@@ -735,6 +735,12 @@ class GuiMainMenu(QMenuBar):
|
|||||||
lambda: self.requestDocAction.emit(nwDocAction.BLOCK_UNN)
|
lambda: self.requestDocAction.emit(nwDocAction.BLOCK_UNN)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Format > Hard Scene
|
||||||
|
self.aFmtHardSc = self.fmtMenu.addAction(self.tr("Hard Scene"))
|
||||||
|
self.aFmtHardSc.triggered.connect(
|
||||||
|
lambda: self.requestDocAction.emit(nwDocAction.BLOCK_HSC)
|
||||||
|
)
|
||||||
|
|
||||||
# Format > Separator
|
# Format > Separator
|
||||||
self.fmtMenu.addSeparator()
|
self.fmtMenu.addSeparator()
|
||||||
|
|
||||||
|
|||||||
@@ -502,6 +502,19 @@ def testCoreIndex_ScanText(mockGUI, fncPath, mockRnd):
|
|||||||
assert index._itemIndex[tHandle]["T0001"].paraCount == 1 # type: ignore
|
assert index._itemIndex[tHandle]["T0001"].paraCount == 1 # type: ignore
|
||||||
assert index._itemIndex[tHandle]["T0001"].synopsis == "" # type: ignore
|
assert index._itemIndex[tHandle]["T0001"].synopsis == "" # type: ignore
|
||||||
|
|
||||||
|
assert index.scanText(tHandle, (
|
||||||
|
"###! Hard Scene\n\n"
|
||||||
|
"We're no longer following Jane, but John!\n\n"
|
||||||
|
))
|
||||||
|
assert index._itemIndex[cHandle]["T0001"].references == {} # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].level == "H3" # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].line == 1 # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].title == "Hard Scene" # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].charCount == 51 # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].wordCount == 9 # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].paraCount == 1 # type: ignore
|
||||||
|
assert index._itemIndex[tHandle]["T0001"].synopsis == "" # type: ignore
|
||||||
|
|
||||||
# Page wo/Title
|
# Page wo/Title
|
||||||
# =============
|
# =============
|
||||||
|
|
||||||
|
|||||||
@@ -1134,13 +1134,20 @@ def testGuiEditor_BlockFormatting(qtbot, monkeypatch, nwGUI, projPath, ipsumText
|
|||||||
assert nwGUI.docEditor.getText() == "Title\n\n"
|
assert nwGUI.docEditor.getText() == "Title\n\n"
|
||||||
assert nwGUI.docEditor.getCursorPosition() == 2
|
assert nwGUI.docEditor.getCursorPosition() == 2
|
||||||
|
|
||||||
# Strip Unnumbered CHapter
|
# Strip Unnumbered Chapter
|
||||||
nwGUI.docEditor.replaceText("##! Title\n\n")
|
nwGUI.docEditor.replaceText("##! Title\n\n")
|
||||||
nwGUI.docEditor.setCursorPosition(5)
|
nwGUI.docEditor.setCursorPosition(5)
|
||||||
assert nwGUI.docEditor._formatBlock(nwDocAction.BLOCK_TXT) is True
|
assert nwGUI.docEditor._formatBlock(nwDocAction.BLOCK_TXT) is True
|
||||||
assert nwGUI.docEditor.getText() == "Title\n\n"
|
assert nwGUI.docEditor.getText() == "Title\n\n"
|
||||||
assert nwGUI.docEditor.getCursorPosition() == 1
|
assert nwGUI.docEditor.getCursorPosition() == 1
|
||||||
|
|
||||||
|
# Strip Hard Scene
|
||||||
|
nwGUI.docEditor.replaceText("###! Title\n\n")
|
||||||
|
nwGUI.docEditor.setCursorPosition(6)
|
||||||
|
assert nwGUI.docEditor._formatBlock(nwDocAction.BLOCK_TXT) is True
|
||||||
|
assert nwGUI.docEditor.getText() == "Title\n\n"
|
||||||
|
assert nwGUI.docEditor.getCursorPosition() == 1
|
||||||
|
|
||||||
# Strip Text
|
# Strip Text
|
||||||
nwGUI.docEditor.replaceText("Generic text\n\n")
|
nwGUI.docEditor.replaceText("Generic text\n\n")
|
||||||
nwGUI.docEditor.setCursorPosition(5)
|
nwGUI.docEditor.setCursorPosition(5)
|
||||||
@@ -1302,6 +1309,13 @@ def testGuiEditor_BlockFormatting(qtbot, monkeypatch, nwGUI, projPath, ipsumText
|
|||||||
assert nwGUI.docEditor.getText() == "##! Some text\n\n"
|
assert nwGUI.docEditor.getText() == "##! Some text\n\n"
|
||||||
assert nwGUI.docEditor.getCursorPosition() == 9
|
assert nwGUI.docEditor.getCursorPosition() == 9
|
||||||
|
|
||||||
|
# Hard Scene
|
||||||
|
nwGUI.docEditor.replaceText("Some text\n\n")
|
||||||
|
nwGUI.docEditor.setCursorPosition(5)
|
||||||
|
assert nwGUI.docEditor._formatBlock(nwDocAction.BLOCK_HSC) is True
|
||||||
|
assert nwGUI.docEditor.getText() == "###! Some text\n\n"
|
||||||
|
assert nwGUI.docEditor.getCursorPosition() == 10
|
||||||
|
|
||||||
# Left Indent
|
# Left Indent
|
||||||
nwGUI.docEditor.replaceText("Some text\n\n")
|
nwGUI.docEditor.replaceText("Some text\n\n")
|
||||||
nwGUI.docEditor.setCursorPosition(5)
|
nwGUI.docEditor.setCursorPosition(5)
|
||||||
|
|||||||
@@ -126,6 +126,11 @@ def testGuiMenu_EditFormat(qtbot, monkeypatch, nwGUI, prjLipsum):
|
|||||||
fmtStr = "##! Pellentesque nec erat ut nulla posuere commodo."
|
fmtStr = "##! Pellentesque nec erat ut nulla posuere commodo."
|
||||||
assert nwGUI.docEditor.getText()[54:105] == fmtStr
|
assert nwGUI.docEditor.getText()[54:105] == fmtStr
|
||||||
|
|
||||||
|
# Hard Scene
|
||||||
|
nwGUI.mainMenu.aFmtHardSc.activate(QAction.Trigger)
|
||||||
|
fmtStr = "###! Pellentesque nec erat ut nulla posuere commodo."
|
||||||
|
assert nwGUI.docEditor.getText()[54:106] == fmtStr
|
||||||
|
|
||||||
# Clear Format
|
# Clear Format
|
||||||
nwGUI.mainMenu.aFmtNoFormat.activate(QAction.Trigger)
|
nwGUI.mainMenu.aFmtNoFormat.activate(QAction.Trigger)
|
||||||
assert nwGUI.docEditor.getText()[54:101] == cleanText
|
assert nwGUI.docEditor.getText()[54:101] == cleanText
|
||||||
|
|||||||
@@ -327,12 +327,14 @@ def testBuildSettings_Headings(qtbot: QtBot, nwGUI: GuiMain):
|
|||||||
chTitle = f"Chapter: {nwHeadFmt.TITLE}"
|
chTitle = f"Chapter: {nwHeadFmt.TITLE}"
|
||||||
unTitle = f"Interlude: {nwHeadFmt.TITLE}"
|
unTitle = f"Interlude: {nwHeadFmt.TITLE}"
|
||||||
scTitle = f"Scene: {nwHeadFmt.TITLE}"
|
scTitle = f"Scene: {nwHeadFmt.TITLE}"
|
||||||
|
shTitle = f"Hard Scene: {nwHeadFmt.TITLE}"
|
||||||
sxTitle = f"Section: {nwHeadFmt.TITLE}"
|
sxTitle = f"Section: {nwHeadFmt.TITLE}"
|
||||||
|
|
||||||
build.setValue("headings.fmtTitle", ttTitle)
|
build.setValue("headings.fmtTitle", ttTitle)
|
||||||
build.setValue("headings.fmtChapter", chTitle)
|
build.setValue("headings.fmtChapter", chTitle)
|
||||||
build.setValue("headings.fmtUnnumbered", unTitle)
|
build.setValue("headings.fmtUnnumbered", unTitle)
|
||||||
build.setValue("headings.fmtScene", scTitle)
|
build.setValue("headings.fmtScene", scTitle)
|
||||||
|
build.setValue("headings.fmtHardScene", shTitle)
|
||||||
build.setValue("headings.fmtSection", sxTitle)
|
build.setValue("headings.fmtSection", sxTitle)
|
||||||
build.setValue("headings.hideScene", False)
|
build.setValue("headings.hideScene", False)
|
||||||
build.setValue("headings.hideSection", False)
|
build.setValue("headings.hideSection", False)
|
||||||
@@ -351,6 +353,7 @@ def testBuildSettings_Headings(qtbot: QtBot, nwGUI: GuiMain):
|
|||||||
assert headTab.fmtChapter.text() == chTitle
|
assert headTab.fmtChapter.text() == chTitle
|
||||||
assert headTab.fmtUnnumbered.text() == unTitle
|
assert headTab.fmtUnnumbered.text() == unTitle
|
||||||
assert headTab.fmtScene.text() == scTitle
|
assert headTab.fmtScene.text() == scTitle
|
||||||
|
assert headTab.fmtHScene.text() == shTitle
|
||||||
assert headTab.fmtSection.text() == sxTitle
|
assert headTab.fmtSection.text() == sxTitle
|
||||||
assert headTab.swtScene.isChecked() is False
|
assert headTab.swtScene.isChecked() is False
|
||||||
assert headTab.swtSection.isChecked() is False
|
assert headTab.swtSection.isChecked() is False
|
||||||
@@ -396,6 +399,14 @@ def testBuildSettings_Headings(qtbot: QtBot, nwGUI: GuiMain):
|
|||||||
headTab.btnApply.click()
|
headTab.btnApply.click()
|
||||||
assert headTab.editTextBox.isEnabled() is False
|
assert headTab.editTextBox.isEnabled() is False
|
||||||
|
|
||||||
|
# Hard Scene
|
||||||
|
headTab.btnHScene.click()
|
||||||
|
assert headTab._editing == headTab.EDIT_HSCENE
|
||||||
|
assert headTab.editTextBox.isEnabled() is True
|
||||||
|
assert headTab.editTextBox.toPlainText() == shTitle
|
||||||
|
headTab.btnApply.click()
|
||||||
|
assert headTab.editTextBox.isEnabled() is False
|
||||||
|
|
||||||
# Section
|
# Section
|
||||||
headTab.btnSection.click()
|
headTab.btnSection.click()
|
||||||
assert headTab._editing == headTab.EDIT_SECTION
|
assert headTab._editing == headTab.EDIT_SECTION
|
||||||
@@ -455,6 +466,11 @@ def testBuildSettings_Headings(qtbot: QtBot, nwGUI: GuiMain):
|
|||||||
headTab.btnApply.click()
|
headTab.btnApply.click()
|
||||||
assert build.getStr("headings.fmtScene") == nwHeadFmt.TITLE
|
assert build.getStr("headings.fmtScene") == nwHeadFmt.TITLE
|
||||||
|
|
||||||
|
headTab.btnHScene.click()
|
||||||
|
headTab.editTextBox.setPlainText(nwHeadFmt.TITLE)
|
||||||
|
headTab.btnApply.click()
|
||||||
|
assert build.getStr("headings.fmtHardScene") == nwHeadFmt.TITLE
|
||||||
|
|
||||||
headTab.btnSection.click()
|
headTab.btnSection.click()
|
||||||
headTab.editTextBox.setPlainText(nwHeadFmt.TITLE)
|
headTab.editTextBox.setPlainText(nwHeadFmt.TITLE)
|
||||||
headTab.btnApply.click()
|
headTab.btnApply.click()
|
||||||
|
|||||||
Reference in New Issue
Block a user