diff --git a/novelwriter/assets/icons/typicons_dark/icons.conf b/novelwriter/assets/icons/typicons_dark/icons.conf index 999ce000..0adec011 100644 --- a/novelwriter/assets/icons/typicons_dark/icons.conf +++ b/novelwriter/assets/icons/typicons_dark/icons.conf @@ -47,10 +47,11 @@ down = typ_chevron-down.svg edit = typ_pencil.svg export = typ_export.svg fmt_bold = nw_tb-bold.svg +fmt_bold-md = nw_tb-bold-md.svg fmt_italic = nw_tb-italic.svg -fmt_mode-md = nw_tb-markdown.svg -fmt_mode-sc = nw_tb-shortcode.svg +fmt_italic-md = nw_tb-italic-md.svg fmt_strike = nw_tb-strike.svg +fmt_strike-md = nw_tb-strike-md.svg fmt_subscript = nw_tb-subscript.svg fmt_superscript = nw_tb-superscript.svg fmt_underline = nw_tb-underline.svg diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg new file mode 100644 index 00000000..e59edb08 --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg index 2eaeb846..92e3df02 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-bold.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg new file mode 100644 index 00000000..0ec5fb2a --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg index 0ec5fb2a..4ef620d2 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-italic.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg deleted file mode 100644 index 02768596..00000000 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg deleted file mode 100644 index 4ea59ec3..00000000 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg new file mode 100644 index 00000000..2858b4d1 --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg index 639dd694..5c87b666 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-strike.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg index e0ae3587..7fcd5715 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-subscript.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg index 1d60aec2..d867fb36 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-superscript.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg b/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg index 3a249f4d..65190358 100644 --- a/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg +++ b/novelwriter/assets/icons/typicons_dark/nw_tb-underline.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/assets/icons/typicons_light/icons.conf b/novelwriter/assets/icons/typicons_light/icons.conf index 3c6f545c..69273d2f 100644 --- a/novelwriter/assets/icons/typicons_light/icons.conf +++ b/novelwriter/assets/icons/typicons_light/icons.conf @@ -47,10 +47,11 @@ down = typ_chevron-down.svg edit = typ_pencil.svg export = typ_export.svg fmt_bold = nw_tb-bold.svg +fmt_bold-md = nw_tb-bold-md.svg fmt_italic = nw_tb-italic.svg -fmt_mode-md = nw_tb-markdown.svg -fmt_mode-sc = nw_tb-shortcode.svg +fmt_italic-md = nw_tb-italic-md.svg fmt_strike = nw_tb-strike.svg +fmt_strike-md = nw_tb-strike-md.svg fmt_subscript = nw_tb-subscript.svg fmt_superscript = nw_tb-superscript.svg fmt_underline = nw_tb-underline.svg diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg b/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg new file mode 100644 index 00000000..69614a4b --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg b/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg index 3fbfbc88..45b25e7c 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-bold.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg b/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg new file mode 100644 index 00000000..893d8930 --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg b/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg index 893d8930..b09e11cc 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-italic.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg b/novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg deleted file mode 100644 index 24b3809d..00000000 --- a/novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg b/novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg deleted file mode 100644 index fc19a690..00000000 --- a/novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg b/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg new file mode 100644 index 00000000..c915d218 --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg @@ -0,0 +1,4 @@ + + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg b/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg index 89f4b7ee..2d73ab90 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-strike.svg @@ -1,4 +1,6 @@ - + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg b/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg index 2384f6ea..573d6802 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-subscript.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg b/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg index df0aa35c..f650df47 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-superscript.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg b/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg index ca122269..2c7eb51d 100644 --- a/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg +++ b/novelwriter/assets/icons/typicons_light/nw_tb-underline.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index 64a0e7a6..8ef7681e 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -2237,24 +2237,41 @@ class GuiDocToolBar(QWidget): # General Buttons # =============== - self.tbMode = QToolButton(self) - self.tbMode.setToolTip(self.tr("Toggle Markdown or Shortcodes Mode")) - self.tbMode.setIconSize(iconSize) - self.tbMode.setCheckable(True) - self.tbMode.setChecked(CONFIG.useShortcodes) - self.tbMode.toggled.connect(self._toggleFormatMode) + self.tbBoldMD = QToolButton(self) + self.tbBoldMD.setIconSize(iconSize) + self.tbBoldMD.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.STRONG) + ) + + self.tbItalicMD = QToolButton(self) + self.tbItalicMD.setIconSize(iconSize) + self.tbItalicMD.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.EMPH) + ) + + self.tbStrikeMD = QToolButton(self) + self.tbStrikeMD.setIconSize(iconSize) + self.tbStrikeMD.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.STRIKE) + ) self.tbBold = QToolButton(self) self.tbBold.setIconSize(iconSize) - self.tbBold.clicked.connect(self._formatBold) + self.tbBold.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.SC_BOLD) + ) self.tbItalic = QToolButton(self) self.tbItalic.setIconSize(iconSize) - self.tbItalic.clicked.connect(self._formatItalic) + self.tbItalic.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.SC_ITALIC) + ) self.tbStrike = QToolButton(self) self.tbStrike.setIconSize(iconSize) - self.tbStrike.clicked.connect(self._formatStrike) + self.tbStrike.clicked.connect( + lambda: self.requestDocAction.emit(nwDocAction.SC_STRIKE) + ) self.tbUnderline = QToolButton(self) self.tbUnderline.setIconSize(iconSize) @@ -2278,7 +2295,10 @@ class GuiDocToolBar(QWidget): # ======== self.outerBox = QVBoxLayout() - self.outerBox.addWidget(self.tbMode) + self.outerBox.addWidget(self.tbBoldMD) + self.outerBox.addWidget(self.tbItalicMD) + self.outerBox.addWidget(self.tbStrikeMD) + self.outerBox.addSpacing(cM) self.outerBox.addWidget(self.tbBold) self.outerBox.addWidget(self.tbItalic) self.outerBox.addWidget(self.tbStrike) @@ -2306,8 +2326,9 @@ class GuiDocToolBar(QWidget): palette.setColor(QPalette.ColorRole.Text, QColor(*SHARED.theme.colText)) self.setPalette(palette) - tPx = int(0.8*SHARED.theme.fontPixelSize) - self.tbMode.setIcon(SHARED.theme.getToggleIcon("fmt_mode", (tPx, tPx))) + self.tbBoldMD.setIcon(SHARED.theme.getIcon("fmt_bold-md")) + self.tbItalicMD.setIcon(SHARED.theme.getIcon("fmt_italic-md")) + self.tbStrikeMD.setIcon(SHARED.theme.getIcon("fmt_strike-md")) self.tbBold.setIcon(SHARED.theme.getIcon("fmt_bold")) self.tbItalic.setIcon(SHARED.theme.getIcon("fmt_italic")) self.tbStrike.setIcon(SHARED.theme.getIcon("fmt_strike")) @@ -2317,40 +2338,6 @@ class GuiDocToolBar(QWidget): return - ## - # Private Slots - ## - - @pyqtSlot(bool) - def _toggleFormatMode(self, checked: bool) -> None: - """Toggle the formatting mode.""" - CONFIG.useShortcodes = checked - return - - @pyqtSlot() - def _formatBold(self): - """Call the bold format action.""" - self.requestDocAction.emit( - nwDocAction.SC_BOLD if self.tbMode.isChecked() else nwDocAction.STRONG - ) - return - - @pyqtSlot() - def _formatItalic(self): - """Call the italic format action.""" - self.requestDocAction.emit( - nwDocAction.SC_ITALIC if self.tbMode.isChecked() else nwDocAction.EMPH - ) - return - - @pyqtSlot() - def _formatStrike(self): - """Call the strikethrough format action.""" - self.requestDocAction.emit( - nwDocAction.SC_STRIKE if self.tbMode.isChecked() else nwDocAction.STRIKE - ) - return - # END Class GuiDocToolBar diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py index 4ac8b714..a5d731bf 100644 --- a/novelwriter/gui/theme.py +++ b/novelwriter/gui/theme.py @@ -460,8 +460,8 @@ class GuiIcons: "search_regex", "search_word", # Format Icons - "fmt_bold", "fmt_italic", "fmt_mode-md", "fmt_mode-sc", "fmt_strike", "fmt_subscript", - "fmt_superscript", "fmt_underline", + "fmt_bold", "fmt_bold-md", "fmt_italic", "fmt_italic-md", "fmt_strike", "fmt_strike-md", + "fmt_subscript", "fmt_superscript", "fmt_underline", # General Button Icons "add", "backward", "bookmark", "browse", "checked", "close", "cross", "down", "edit", @@ -479,9 +479,8 @@ class GuiIcons: } TOGGLE_ICON_KEYS = { - "sticky": ("sticky-on", "sticky-off"), - "bullet": ("bullet-on", "bullet-off"), - "fmt_mode": ("fmt_mode-sc", "fmt_mode-md"), + "sticky": ("sticky-on", "sticky-off"), + "bullet": ("bullet-on", "bullet-off"), } IMAGE_MAP = { diff --git a/tests/test_gui/test_gui_doceditor.py b/tests/test_gui/test_gui_doceditor.py index 51217182..ebbc2e84 100644 --- a/tests/test_gui/test_gui_doceditor.py +++ b/tests/test_gui/test_gui_doceditor.py @@ -667,27 +667,26 @@ def testGuiEditor_ToolBar(qtbot, nwGUI, projPath, mockRnd): docEditor._toggleToolBarVisibility() assert docToolBar.isVisible() is True - # Markdown Mode - assert docToolBar.tbMode.isChecked() is False + # Markdown + # ======== # Click Bold docEditor.setCursorPosition(20) - docToolBar.tbBold.click() + docToolBar.tbBoldMD.click() assert len(docEditor.getText()) == length + 4 # Click Italic docEditor.setCursorPosition(54) - docToolBar.tbItalic.click() + docToolBar.tbItalicMD.click() assert len(docEditor.getText()) == length + 6 # Click Strikethrough docEditor.setCursorPosition(90) - docToolBar.tbStrike.click() + docToolBar.tbStrikeMD.click() assert len(docEditor.getText()) == length + 10 - # Shortcode Mode - docToolBar.tbMode.click() - assert docToolBar.tbMode.isChecked() is True + # Shortcodes + # ========== # Click Bold docEditor.setCursorPosition(39)