From f2eaaa09b68d7cc871d6c8221070e8e2b8f83015 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 16:10:09 +0100
Subject: [PATCH 01/12] Turn viewer footer button and label into text buttons
(#1628)
---
novelwriter/gui/docviewer.py | 42 +++++++-----------------------------
1 file changed, 8 insertions(+), 34 deletions(-)
diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py
index 44ccb1d5..1e3562e3 100644
--- a/novelwriter/gui/docviewer.py
+++ b/novelwriter/gui/docviewer.py
@@ -862,8 +862,7 @@ class GuiDocViewFooter(QWidget):
self._docHandle = None
fPx = int(0.9*SHARED.theme.fontPixelSize)
- bSp = CONFIG.pxInt(2)
- hSp = CONFIG.pxInt(8)
+ hSp = CONFIG.pxInt(4)
# Main Widget Settings
self.setContentsMargins(0, 0, 0, 0)
@@ -873,64 +872,41 @@ class GuiDocViewFooter(QWidget):
self.showHide = QToolButton(self)
self.showHide.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
self.showHide.setIconSize(QSize(fPx, fPx))
- self.showHide.setFixedSize(QSize(fPx, fPx))
self.showHide.clicked.connect(lambda: self.docViewer.togglePanelVisibility.emit())
self.showHide.setToolTip(self.tr("Show/Hide Viewer Panel"))
# Show Comments
self.showComments = QToolButton(self)
+ self.showComments.setText(self.tr("Comments"))
self.showComments.setCheckable(True)
self.showComments.setChecked(CONFIG.viewComments)
- self.showComments.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
+ self.showComments.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
self.showComments.setIconSize(QSize(fPx, fPx))
- self.showComments.setFixedSize(QSize(fPx, fPx))
self.showComments.toggled.connect(self._doToggleComments)
self.showComments.setToolTip(self.tr("Show Comments"))
# Show Synopsis
self.showSynopsis = QToolButton(self)
+ self.showSynopsis.setText(self.tr("Synopsis"))
self.showSynopsis.setCheckable(True)
self.showSynopsis.setChecked(CONFIG.viewSynopsis)
- self.showSynopsis.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
+ self.showSynopsis.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
self.showSynopsis.setIconSize(QSize(fPx, fPx))
- self.showSynopsis.setFixedSize(QSize(fPx, fPx))
self.showSynopsis.toggled.connect(self._doToggleSynopsis)
self.showSynopsis.setToolTip(self.tr("Show Synopsis Comments"))
- # Labels
- self.lblComments = QLabel(self.tr("Comments"))
- self.lblComments.setBuddy(self.showComments)
- self.lblComments.setIndent(0)
- self.lblComments.setMargin(0)
- self.lblComments.setContentsMargins(0, 0, 0, 0)
- self.lblComments.setAutoFillBackground(True)
- self.lblComments.setFixedHeight(fPx)
- self.lblComments.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
-
- self.lblSynopsis = QLabel(self.tr("Synopsis"))
- self.lblSynopsis.setBuddy(self.showSynopsis)
- self.lblSynopsis.setIndent(0)
- self.lblSynopsis.setMargin(0)
- self.lblSynopsis.setContentsMargins(0, 0, 0, 0)
- self.lblSynopsis.setAutoFillBackground(True)
- self.lblSynopsis.setFixedHeight(fPx)
- self.lblSynopsis.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
-
lblFont = self.font()
lblFont.setPointSizeF(0.9*SHARED.theme.fontPointSize)
- self.lblComments.setFont(lblFont)
- self.lblSynopsis.setFont(lblFont)
+ self.showComments.setFont(lblFont)
+ self.showSynopsis.setFont(lblFont)
# Assemble Layout
self.outerBox = QHBoxLayout()
- self.outerBox.setSpacing(bSp)
self.outerBox.addWidget(self.showHide, 0)
self.outerBox.addStretch(1)
self.outerBox.addWidget(self.showComments, 0)
- self.outerBox.addWidget(self.lblComments, 0)
- self.outerBox.addSpacing(hSp)
self.outerBox.addWidget(self.showSynopsis, 0)
- self.outerBox.addWidget(self.lblSynopsis, 0)
+ self.outerBox.setSpacing(hSp)
self.setLayout(self.outerBox)
# Fix Margins and Size
@@ -984,8 +960,6 @@ class GuiDocViewFooter(QWidget):
palette.setColor(QPalette.ColorRole.WindowText, QColor(*SHARED.theme.colText))
palette.setColor(QPalette.ColorRole.Text, QColor(*SHARED.theme.colText))
self.setPalette(palette)
- self.lblComments.setPalette(palette)
- self.lblSynopsis.setPalette(palette)
return
##
From 776eedc5f2aeeb000d114c389a83809b6ca8bf89 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 16:56:36 +0100
Subject: [PATCH 02/12] Drop the markdown/shortcode toggle feature from editor
toolbar and update icons (#1636, #1637)
---
.../assets/icons/typicons_dark/icons.conf | 5 +-
.../icons/typicons_dark/nw_tb-bold-md.svg | 4 +
.../assets/icons/typicons_dark/nw_tb-bold.svg | 4 +-
.../icons/typicons_dark/nw_tb-italic-md.svg | 4 +
.../icons/typicons_dark/nw_tb-italic.svg | 4 +-
.../icons/typicons_dark/nw_tb-markdown.svg | 8 --
.../icons/typicons_dark/nw_tb-shortcode.svg | 8 --
.../icons/typicons_dark/nw_tb-strike-md.svg | 4 +
.../icons/typicons_dark/nw_tb-strike.svg | 4 +-
.../icons/typicons_dark/nw_tb-subscript.svg | 6 +-
.../icons/typicons_dark/nw_tb-superscript.svg | 6 +-
.../icons/typicons_dark/nw_tb-underline.svg | 6 +-
.../assets/icons/typicons_light/icons.conf | 5 +-
.../icons/typicons_light/nw_tb-bold-md.svg | 4 +
.../icons/typicons_light/nw_tb-bold.svg | 4 +-
.../icons/typicons_light/nw_tb-italic-md.svg | 4 +
.../icons/typicons_light/nw_tb-italic.svg | 4 +-
.../icons/typicons_light/nw_tb-markdown.svg | 8 --
.../icons/typicons_light/nw_tb-shortcode.svg | 8 --
.../icons/typicons_light/nw_tb-strike-md.svg | 4 +
.../icons/typicons_light/nw_tb-strike.svg | 4 +-
.../icons/typicons_light/nw_tb-subscript.svg | 6 +-
.../typicons_light/nw_tb-superscript.svg | 6 +-
.../icons/typicons_light/nw_tb-underline.svg | 6 +-
novelwriter/gui/doceditor.py | 79 ++++++++-----------
novelwriter/gui/theme.py | 9 +--
tests/test_gui/test_gui_doceditor.py | 15 ++--
27 files changed, 116 insertions(+), 113 deletions(-)
create mode 100644 novelwriter/assets/icons/typicons_dark/nw_tb-bold-md.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/nw_tb-italic-md.svg
delete mode 100644 novelwriter/assets/icons/typicons_dark/nw_tb-markdown.svg
delete mode 100644 novelwriter/assets/icons/typicons_dark/nw_tb-shortcode.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/nw_tb-strike-md.svg
create mode 100644 novelwriter/assets/icons/typicons_light/nw_tb-bold-md.svg
create mode 100644 novelwriter/assets/icons/typicons_light/nw_tb-italic-md.svg
delete mode 100644 novelwriter/assets/icons/typicons_light/nw_tb-markdown.svg
delete mode 100644 novelwriter/assets/icons/typicons_light/nw_tb-shortcode.svg
create mode 100644 novelwriter/assets/icons/typicons_light/nw_tb-strike-md.svg
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)
From fff6ba98bc6084d5e34a613098c789e6ef9481b9 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 17:33:15 +0100
Subject: [PATCH 03/12] Rename emph and strong to italic and bold for
consistency and add tooltips to editor toolbar
---
novelwriter/enum.py | 6 +++---
novelwriter/gui/doceditor.py | 21 +++++++++++++++------
novelwriter/gui/mainmenu.py | 22 +++++++++++-----------
novelwriter/guimain.py | 4 ++--
tests/test_gui/test_gui_doceditor.py | 6 +++---
tests/test_gui/test_gui_mainmenu.py | 16 ++++++++--------
6 files changed, 42 insertions(+), 33 deletions(-)
diff --git a/novelwriter/enum.py b/novelwriter/enum.py
index 8b84c39e..300624e7 100644
--- a/novelwriter/enum.py
+++ b/novelwriter/enum.py
@@ -95,9 +95,9 @@ class nwDocAction(Enum):
CUT = 3
COPY = 4
PASTE = 5
- EMPH = 6
- STRONG = 7
- STRIKE = 8
+ MD_ITALIC = 6
+ MD_BOLD = 7
+ MD_STRIKE = 8
S_QUOTE = 9
D_QUOTE = 10
SEL_ALL = 11
diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py
index 8ef7681e..28e65f7e 100644
--- a/novelwriter/gui/doceditor.py
+++ b/novelwriter/gui/doceditor.py
@@ -718,11 +718,11 @@ class GuiDocEditor(QPlainTextEdit):
self.copy()
elif action == nwDocAction.PASTE:
self.paste()
- elif action == nwDocAction.EMPH:
+ elif action == nwDocAction.MD_ITALIC:
self._toggleFormat(1, "_")
- elif action == nwDocAction.STRONG:
+ elif action == nwDocAction.MD_BOLD:
self._toggleFormat(2, "*")
- elif action == nwDocAction.STRIKE:
+ elif action == nwDocAction.MD_STRIKE:
self._toggleFormat(2, "~")
elif action == nwDocAction.S_QUOTE:
self._wrapSelection(self._typSQuoteO, self._typSQuoteC)
@@ -2239,54 +2239,63 @@ class GuiDocToolBar(QWidget):
self.tbBoldMD = QToolButton(self)
self.tbBoldMD.setIconSize(iconSize)
+ self.tbBoldMD.setToolTip(self.tr("Markdown Bold"))
self.tbBoldMD.clicked.connect(
- lambda: self.requestDocAction.emit(nwDocAction.STRONG)
+ lambda: self.requestDocAction.emit(nwDocAction.MD_BOLD)
)
self.tbItalicMD = QToolButton(self)
self.tbItalicMD.setIconSize(iconSize)
+ self.tbItalicMD.setToolTip(self.tr("Markdown Italic"))
self.tbItalicMD.clicked.connect(
- lambda: self.requestDocAction.emit(nwDocAction.EMPH)
+ lambda: self.requestDocAction.emit(nwDocAction.MD_ITALIC)
)
self.tbStrikeMD = QToolButton(self)
self.tbStrikeMD.setIconSize(iconSize)
+ self.tbStrikeMD.setToolTip(self.tr("Markdown Strikethrough"))
self.tbStrikeMD.clicked.connect(
- lambda: self.requestDocAction.emit(nwDocAction.STRIKE)
+ lambda: self.requestDocAction.emit(nwDocAction.MD_STRIKE)
)
self.tbBold = QToolButton(self)
self.tbBold.setIconSize(iconSize)
+ self.tbBold.setToolTip(self.tr("Shortcode Bold"))
self.tbBold.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_BOLD)
)
self.tbItalic = QToolButton(self)
self.tbItalic.setIconSize(iconSize)
+ self.tbItalic.setToolTip(self.tr("Shortcode Italic"))
self.tbItalic.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_ITALIC)
)
self.tbStrike = QToolButton(self)
self.tbStrike.setIconSize(iconSize)
+ self.tbStrike.setToolTip(self.tr("Shortcode Strikethrough"))
self.tbStrike.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_STRIKE)
)
self.tbUnderline = QToolButton(self)
self.tbUnderline.setIconSize(iconSize)
+ self.tbUnderline.setToolTip(self.tr("Shortcode Underline"))
self.tbUnderline.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_ULINE)
)
self.tbSuperscript = QToolButton(self)
self.tbSuperscript.setIconSize(iconSize)
+ self.tbSuperscript.setToolTip(self.tr("Shortcode Superscript"))
self.tbSuperscript.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_SUP)
)
self.tbSubscript = QToolButton(self)
self.tbSubscript.setIconSize(iconSize)
+ self.tbSubscript.setToolTip(self.tr("Shortcode Subscript"))
self.tbSubscript.clicked.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_SUB)
)
diff --git a/novelwriter/gui/mainmenu.py b/novelwriter/gui/mainmenu.py
index e442f9e8..6d116596 100644
--- a/novelwriter/gui/mainmenu.py
+++ b/novelwriter/gui/mainmenu.py
@@ -608,25 +608,25 @@ class GuiMainMenu(QMenuBar):
# Format
self.fmtMenu = self.addMenu(self.tr("&Format"))
- # Format > Emphasis
- self.aFmtEmph = self.fmtMenu.addAction(self.tr("Emphasis"))
- self.aFmtEmph.setShortcut("Ctrl+I")
- self.aFmtEmph.triggered.connect(
- lambda: self.requestDocAction.emit(nwDocAction.EMPH)
+ # Format > Bold
+ self.aFmtBold = self.fmtMenu.addAction(self.tr("Bold"))
+ self.aFmtBold.setShortcut("Ctrl+B")
+ self.aFmtBold.triggered.connect(
+ lambda: self.requestDocAction.emit(nwDocAction.MD_BOLD)
)
- # Format > Strong Emphasis
- self.aFmtStrong = self.fmtMenu.addAction(self.tr("Strong Emphasis"))
- self.aFmtStrong.setShortcut("Ctrl+B")
- self.aFmtStrong.triggered.connect(
- lambda: self.requestDocAction.emit(nwDocAction.STRONG)
+ # Format > Italic
+ self.aFmtItalic = self.fmtMenu.addAction(self.tr("Italic"))
+ self.aFmtItalic.setShortcut("Ctrl+I")
+ self.aFmtItalic.triggered.connect(
+ lambda: self.requestDocAction.emit(nwDocAction.MD_ITALIC)
)
# Format > Strikethrough
self.aFmtStrike = self.fmtMenu.addAction(self.tr("Strikethrough"))
self.aFmtStrike.setShortcut("Ctrl+D")
self.aFmtStrike.triggered.connect(
- lambda: self.requestDocAction.emit(nwDocAction.STRIKE)
+ lambda: self.requestDocAction.emit(nwDocAction.MD_STRIKE)
)
# Edit > Separator
diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py
index 17f91f4f..5825d0ec 100644
--- a/novelwriter/guimain.py
+++ b/novelwriter/guimain.py
@@ -1422,8 +1422,8 @@ class GuiMain(QMainWindow):
self.addAction(self.mainMenu.aReplaceNext)
# Format
- self.addAction(self.mainMenu.aFmtEmph)
- self.addAction(self.mainMenu.aFmtStrong)
+ self.addAction(self.mainMenu.aFmtItalic)
+ self.addAction(self.mainMenu.aFmtBold)
self.addAction(self.mainMenu.aFmtStrike)
self.addAction(self.mainMenu.aFmtDQuote)
self.addAction(self.mainMenu.aFmtSQuote)
diff --git a/tests/test_gui/test_gui_doceditor.py b/tests/test_gui/test_gui_doceditor.py
index ebbc2e84..dc99614e 100644
--- a/tests/test_gui/test_gui_doceditor.py
+++ b/tests/test_gui/test_gui_doceditor.py
@@ -432,21 +432,21 @@ def testGuiEditor_Actions(qtbot, nwGUI, projPath, ipsumText, mockRnd):
# Emphasis
nwGUI.docEditor.setCursorPosition(50)
- assert nwGUI.docEditor.docAction(nwDocAction.EMPH) is True
+ assert nwGUI.docEditor.docAction(nwDocAction.MD_ITALIC) is True
assert nwGUI.docEditor.getText() == text.replace("consectetur", "_consectetur_")
assert nwGUI.docEditor.docAction(nwDocAction.UNDO) is True
assert nwGUI.docEditor.getText() == text
# Strong
nwGUI.docEditor.setCursorPosition(50)
- assert nwGUI.docEditor.docAction(nwDocAction.STRONG) is True
+ assert nwGUI.docEditor.docAction(nwDocAction.MD_BOLD) is True
assert nwGUI.docEditor.getText() == text.replace("consectetur", "**consectetur**")
assert nwGUI.docEditor.docAction(nwDocAction.UNDO) is True
assert nwGUI.docEditor.getText() == text
# Strikeout
nwGUI.docEditor.setCursorPosition(50)
- assert nwGUI.docEditor.docAction(nwDocAction.STRIKE) is True
+ assert nwGUI.docEditor.docAction(nwDocAction.MD_STRIKE) is True
assert nwGUI.docEditor.getText() == text.replace("consectetur", "~~consectetur~~")
assert nwGUI.docEditor.docAction(nwDocAction.UNDO) is True
assert nwGUI.docEditor.getText() == text
diff --git a/tests/test_gui/test_gui_mainmenu.py b/tests/test_gui/test_gui_mainmenu.py
index 95eec7b8..7d2ef53c 100644
--- a/tests/test_gui/test_gui_mainmenu.py
+++ b/tests/test_gui/test_gui_mainmenu.py
@@ -50,17 +50,17 @@ def testGuiMenu_EditFormat(qtbot, monkeypatch, nwGUI, prjLipsum):
cleanText = nwGUI.docEditor.getText()[39:86]
# Bold
- nwGUI.mainMenu.aFmtStrong.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtBold.activate(QAction.Trigger)
fmtStr = "**Pellentesque** nec erat ut nulla posuere commodo."
assert nwGUI.docEditor.getText()[39:90] == fmtStr
- nwGUI.mainMenu.aFmtStrong.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtBold.activate(QAction.Trigger)
assert nwGUI.docEditor.getText()[39:86] == cleanText
# Italic
- nwGUI.mainMenu.aFmtEmph.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtItalic.activate(QAction.Trigger)
fmtStr = "_Pellentesque_ nec erat ut nulla posuere commodo."
assert nwGUI.docEditor.getText()[39:88] == fmtStr
- nwGUI.mainMenu.aFmtEmph.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtItalic.activate(QAction.Trigger)
assert nwGUI.docEditor.getText()[39:86] == cleanText
# Strikethrough
@@ -71,10 +71,10 @@ def testGuiMenu_EditFormat(qtbot, monkeypatch, nwGUI, prjLipsum):
assert nwGUI.docEditor.getText()[39:86] == cleanText
# Should get us back to plain
- nwGUI.mainMenu.aFmtStrong.activate(QAction.Trigger)
- nwGUI.mainMenu.aFmtEmph.activate(QAction.Trigger)
- nwGUI.mainMenu.aFmtEmph.activate(QAction.Trigger)
- nwGUI.mainMenu.aFmtStrong.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtBold.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtItalic.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtItalic.activate(QAction.Trigger)
+ nwGUI.mainMenu.aFmtBold.activate(QAction.Trigger)
assert nwGUI.docEditor.getText()[39:86] == cleanText
# Double Quotes
From 023f6bed011acd12c7057245fecfb5bfb015ad7d Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 17:34:08 +0100
Subject: [PATCH 04/12] Update base translation file
---
i18n/nw_base.ts | 1132 ++++++++++++++++++++++++-----------------------
1 file changed, 586 insertions(+), 546 deletions(-)
diff --git a/i18n/nw_base.ts b/i18n/nw_base.ts
index 94ce51df..061ac984 100644
--- a/i18n/nw_base.ts
+++ b/i18n/nw_base.ts
@@ -207,72 +207,72 @@
Common
-
+
in the future
-
+
just now
-
+
a minute ago
-
+
{0} minutes ago
-
+
an hour ago
-
+
{0} hours ago
-
+
a day ago
-
+
{0} days ago
-
+
a week ago
-
+
{0} weeks ago
-
+
a month ago
-
+
{0} months ago
-
+
a year ago
-
+
{0} years ago
@@ -626,7 +626,7 @@
GuiAbout
-
+
About novelWriter
@@ -652,27 +652,27 @@
-
+
Website: {0}
-
+
novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.
-
+
novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
+
novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
+
See the Licence tab for the full licence text, or visit the GNU website at {0} for more details.
@@ -776,32 +776,32 @@
GuiDocEditFooter
-
+
Status
-
+
Line: {0} ({1})
-
+
Words: {0} ({1})
-
+
Document size is {0} bytes
-
+
Words: {0} selected
-
+
Character count: {0}
@@ -809,22 +809,22 @@
GuiDocEditHeader
-
+
Toggle Tool Bar
-
+
Search
-
+
Toggle Focus Mode
-
+
Close
@@ -832,58 +832,58 @@
GuiDocEditSearch
-
-
+
+
Search
-
+
Replace
-
+
Case Sensitive
-
+
Whole Words Only
-
+
RegEx Mode
-
+
Loop Search
-
+
Search Next File
-
+
Preserve Case
-
+
Close Search
-
+
Find in current document
-
+
Find and replace in current document
@@ -891,127 +891,127 @@
GuiDocEditor
-
+
Opened Document: {0}
-
+
This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?
-
+
Could not save document.
-
+
Saved Document: {0}
-
+
Spell checking requires the package PyEnchant. It does not appear to be installed.
-
+
Spell check complete
-
+
Document Details
-
+
Created: {0}
-
+
Updated: {0}
-
+
File Location: {0}
-
+
Set as Document Name
-
+
Follow Tag
-
+
Create Note for Tag
-
+
Cut
-
+
Copy
-
+
Paste
-
+
Select All
-
+
Select Word
-
+
Select Paragraph
-
+
Spelling Suggestion(s)
-
+
No Suggestions
-
+
Add Word to Dictionary
-
+
Please select some text before calling replace quotes.
-
+
Do you want to create a new project note for the tag '{0}'?
-
+
Could not create note in a root folder for '{0}'. If one doesn't exist, you must create one first.
@@ -1019,22 +1019,22 @@
GuiDocMerge
-
+
Merge Documents
-
+
Documents to Merge
-
+
Drag and drop items to change the order, or uncheck to exclude.
-
+
Move merged items to Trash
@@ -1042,52 +1042,52 @@
GuiDocSplit
-
+
Split Document
-
+
Document Headers
-
+
Select the maximum level to split into files.
-
+
Split on Header Level 1 (Title)
-
+
Split up to Header Level 2 (Chapter)
-
+
Split up to Header Level 3 (Scene)
-
+
Split up to Header Level 4 (Section)
-
+
Split into a new folder
-
+
Create document hierarchy
-
+
Move split document to Trash
@@ -1095,58 +1095,98 @@
GuiDocToolBar
-
- Toggle Markdown or Shortcodes Mode
+
+ Markdown Bold
+
+
+
+
+ Markdown Italic
+
+
+
+
+ Markdown Strikethrough
+
+
+
+
+ Shortcode Bold
+
+
+
+
+ Shortcode Italic
+
+
+
+
+ Shortcode Strikethrough
+
+
+
+
+ Shortcode Underline
+
+
+
+
+ Shortcode Superscript
+
+
+
+
+ Shortcode Subscript
GuiDocViewFooter
-
+
Show/Hide Viewer Panel
-
- Show Comments
-
-
-
-
- Show Synopsis Comments
-
-
-
-
+
Comments
-
+
+ Show Comments
+
+
+
+
Synopsis
+
+
+ Show Synopsis Comments
+
+
GuiDocViewHeader
-
+
Go Backward
-
+
Go Forward
-
+
Reload
-
+
Close
@@ -1190,12 +1230,12 @@
GuiEditLabel
-
+
Item Label
-
+
Label
@@ -1269,123 +1309,123 @@
GuiMain
-
+
novelWriter is ready ...
-
+
Cannot create a new project when another project is open.
-
+
A project already exists in that location. Please choose another folder.
-
+
Close the current project?
-
-
+
+
Changes are saved automatically.
-
+
Backup the current project?
-
+
The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway?
-
+
Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project.
-
+
The project was locked by the computer '{0}' ({1} {2}), last active on {3}.
-
+
The project index is outdated or broken. Rebuilding index.
-
+
Text files ({0})
-
+
Markdown files ({0})
-
+
novelWriter files ({0})
-
+
All files ({0})
-
+
Import File
-
+
Could not read file. The file must be an existing text file.
-
+
Please open a document to import the text file into.
-
+
Importing the file will overwrite the current content of the document. Do you want to proceed?
-
+
Indexing completed in {0} ms
-
+
The project index has been successfully rebuilt.
-
- Some changes will not be applied until novelWriter has been restarted.
-
-
-
-
+
Could not initialise the dialog.
-
+
Do you want to exit novelWriter?
-
+
+ Some changes will not be applied until novelWriter has been restarted.
+
+
+
+
Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.
@@ -1393,647 +1433,647 @@
GuiMainMenu
-
+
&Project
-
+
New Project
-
+
Open Project
-
+
Save Project
-
+
Close Project
-
+
Project Settings
-
+
Project Details
-
+
Rename Item
-
+
Delete Item
-
+
Empty Trash
-
+
Exit
-
+
&Document
-
+
Open Document
-
+
Save Document
-
+
Close Document
-
+
View Document
-
+
Close Document View
-
+
Show File Details
-
+
Import Text from File
-
+
&Edit
-
+
Undo
-
+
Redo
-
+
Cut
-
+
Copy
-
+
Paste
-
+
Select All
-
+
Select Paragraph
-
+
&View
-
+
Go to Project Tree
-
+
Go to Document Editor
-
+
Go to Outline
-
+
Navigate Backward
-
+
Navigate Forward
-
+
Focus Mode
-
+
Full Screen Mode
-
+
&Insert
-
+
Dashes
-
+
Short Dash
-
+
Long Dash
-
+
Horizontal Bar
-
+
Figure Dash
-
+
Quote Marks
-
+
Left Single Quote
-
+
Right Single Quote
-
+
Left Double Quote
-
+
Right Double Quote
-
+
Alternative Apostrophe
-
+
General Punctuation
-
+
Ellipsis
-
+
Prime
-
+
Double Prime
-
+
White Spaces
-
+
Non-Breaking Space
-
+
Thin Space
-
+
Thin Non-Breaking Space
-
+
Other Symbols
-
+
List Bullet
-
+
Hyphen Bullet
-
+
Flower Mark
-
+
Per Mille
-
+
Degree Symbol
-
+
Minus Sign
-
+
Times Sign
-
+
Division Sign
-
+
Tags and References
-
+
Special Comments
-
+
Synopsis Comment
-
+
Short Description Comment
-
+
Page Break and Space
-
+
Page Break
-
+
Vertical Space (Single)
-
+
Vertical Space (Multi)
-
+
Placeholder Text
-
+
&Format
-
- Emphasis
+
+ Bold
-
- Strong Emphasis
+
+ Italic
-
+
Strikethrough
-
+
Wrap Double Quotes
-
+
Wrap Single Quotes
-
+
More Formats ...
-
+
Italics (Shortcode)
-
+
Bold (Shortcode)
-
+
Strikethrough (Shortcode)
-
+
Underline
-
+
Superscript
-
+
Subscript
-
+
Header 1 (Partition)
-
+
Header 2 (Chapter)
-
+
Header 3 (Scene)
-
+
Header 4 (Section)
-
+
Novel Title
-
+
Unnumbered Chapter
-
+
Align Left
-
+
Align Centre
-
+
Align Right
-
+
Indent Left
-
+
Indent Right
-
+
Toggle Comment
-
+
Remove Block Format
-
+
Convert Single Quotes
-
+
Convert Double Quotes
-
+
Remove In-Paragraph Breaks
-
+
&Search
-
+
Find
-
+
Replace
-
+
Find Next
-
+
Find Previous
-
+
Replace Next
-
+
&Tools
-
+
Check Spelling
-
+
Spell Check Language
-
+
Default
-
+
Re-Run Spell Check
-
+
Project Word List
-
+
Add Dictionaries
-
+
Rebuild Index
-
+
Backup Project
-
+
Build Manuscript
-
+
Writing Statistics
-
+
Preferences
-
+
&Help
-
+
About novelWriter
-
+
About Qt5
-
+
User Manual (Online)
-
+
User Manual (PDF)
-
+
Report an Issue (GitHub)
-
+
Ask a Question (GitHub)
-
+
The novelWriter Website
-
+
Check for New Release
@@ -2041,38 +2081,38 @@
GuiMainStatus
-
-
+
+
None
-
+
Editor
-
+
Project
-
+
Session Time
-
+
Words: {0} ({1})
-
+
Project word count (session change)
-
+
Novel word count (session change)
@@ -2192,58 +2232,58 @@
GuiNovelToolBar
-
+
Outline of {0}
-
+
Novel Root
-
+
Refresh
-
+
Last Column
-
+
Hidden
-
+
Point of View Character
-
+
Focus Character
-
+
Novel Plot
-
-
+
+
Column Size
-
+
More Options
-
+
Maximum column size in %
@@ -2251,7 +2291,7 @@
GuiNovelTree
-
+
No meta data
@@ -2259,65 +2299,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+
Title
-
+
Chapter
-
+
Scene
-
+
Section
-
+
Document
-
+
Status
-
+
Characters
-
+
Words
-
+
Paragraphs
-
+
Synopsis
-
+
Title Details
-
+
Reference Tags
@@ -2325,7 +2365,7 @@
GuiOutlineHeaderMenu
-
+
Select Columns
@@ -2346,42 +2386,42 @@
GuiPreferences
-
+
Preferences
-
+
General
-
+
Projects
-
+
Documents
-
+
Editor
-
+
Highlighting
-
+
Automation
-
+
Quotes
@@ -2389,103 +2429,103 @@
GuiPreferencesAutomation
-
+
Automatic Features
-
+
Auto-select word under cursor
-
+
Apply formatting to word under cursor if no selection is made.
-
+
Auto-replace text as you type
-
+
Allow the editor to replace symbols as you type.
-
+
Replace as You Type
-
+
Auto-replace single quotes
-
-
+
+
Try to guess which is an opening or a closing quote.
-
+
Auto-replace double quotes
-
+
Auto-replace dashes
-
+
Double and triple hyphens become short and long dashes.
-
+
Auto-replace dots
-
+
Three consecutive dots become ellipsis.
-
+
Automatic Padding
-
+
Insert non-breaking space before
-
+
Automatically add space before any of these symbols.
-
+
Insert non-breaking space after
-
+
Automatically add space after any of these symbols.
-
+
Use thin space instead
-
+
Inserts a thin space instead of a regular space.
@@ -2493,93 +2533,93 @@
GuiPreferencesDocuments
-
+
Text Style
-
+
Font family
-
-
-
+
+
+
Applies to both document editor and viewer.
-
+
Font size
-
+
pt
-
+
Text Flow
-
+
Maximum text width in "Normal Mode"
-
+
Set to 0 to disable this feature.
-
-
+
+
px
-
+
Maximum text width in "Focus Mode"
-
+
The maximum width cannot be disabled.
-
+
Hide document footer in "Focus Mode"
-
+
Hide the information bar in the document editor.
-
+
Justify the text margins
-
+
Minimum text margin
-
+
Tab width
-
+
The width of a tab key press in the editor and viewer.
@@ -2587,92 +2627,92 @@
GuiPreferencesEditor
-
+
Spell Checking
-
+
None
-
+
Spell check language
-
+
Available languages are determined by your system.
-
+
Word Count
-
+
Word count interval
-
+
seconds
-
+
Include project notes in status bar word count
-
+
Writing Guides
-
+
Show tabs and spaces
-
+
Show line endings
-
+
Scroll Behaviour
-
+
Scroll past end of the document
-
+
Also centres the cursor when scrolling.
-
+
Typewriter style scrolling when you type
-
+
Keeps the cursor at a fixed vertical position.
-
+
Minimum position for Typewriter scrolling
-
+
Percentage of the editor height from the top.
@@ -2680,95 +2720,95 @@
GuiPreferencesGeneral
-
+
Look and Feel
-
+
Main GUI language
-
-
+
+
Requires restart to take effect.
-
+
Main GUI theme
-
+
General colour theme and icons.
-
+
Editor theme
-
+
Colour theme for the editor and viewer.
-
+
Font family
-
+
Font size
-
+
pt
-
+
GUI Settings
-
+
Emphasise partition and chapter labels
-
+
Makes them stand out in the project tree.
-
+
Show full path in document header
-
+
Add the parent folder names to the header.
-
+
Hide vertical scroll bars in main windows
-
-
+
+
Scrolling available with mouse wheel and keys only.
-
+
Hide horizontal scroll bars in main windows
@@ -2776,109 +2816,109 @@
GuiPreferencesProjects
-
+
Automatic Save
-
+
Save document interval
-
+
How often the document is automatically saved.
-
+
seconds
-
+
Save project interval
-
+
How often the project is automatically saved.
-
+
Project Backup
-
+
Browse
-
+
Backup storage location
-
-
+
+
Path: {0}
-
+
Run backup when the project is closed
-
+
Can be overridden for individual projects in Project Settings.
-
+
Ask before running backup
-
+
If off, backups will run in the background.
-
+
Session Timer
-
+
Pause the session timer when not writing
-
+
Also pauses when the application window does not have focus.
-
+
Editor inactive time before pausing timer
-
+
User activity includes typing and changing the content.
-
+
minutes
-
+
Backup Directory
@@ -2886,47 +2926,47 @@
GuiPreferencesQuotes
-
+
Quotation Style
-
+
Single quote open style
-
+
The symbol to use for a leading single quote.
-
+
Single quote close style
-
+
The symbol to use for a trailing single quote.
-
+
Double quote open style
-
+
The symbol to use for a leading double quote.
-
+
Double quote close style
-
+
The symbol to use for a trailing double quote.
@@ -2934,59 +2974,59 @@
GuiPreferencesSyntax
-
+
Quotes & Dialogue
-
+
Highlight text wrapped in quotes
-
-
+
+
Applies to the document editor only.
-
+
Allow open-ended single quotes
-
+
Highlight single-quoted line with no closing quote.
-
+
Allow open-ended double quotes
-
+
Highlight double-quoted line with no closing quote.
-
+
Text Emphasis
-
+
Add highlight colour to emphasised text
-
+
Text Errors
-
+
Highlight multiple or trailing spaces
@@ -3012,72 +3052,72 @@
GuiProjectDetailsContents
-
+
Table of Contents
-
+
Title
-
+
Words
-
+
Pages
-
+
Page
-
+
Progress
-
+
Typical word count for a 5 by 8 inch book page with 11 pt font is 350.
-
+
Start counting page numbers from this page.
-
+
Assume a new chapter or partition always start on an odd numbered page.
-
+
Words per page
-
+
Count pages from
-
+
Clear double pages
-
+
END
-
+
Untitled
@@ -3085,42 +3125,42 @@
GuiProjectDetailsMain
-
+
Words
-
+
Chapters
-
+
Scenes
-
+
Revisions
-
+
Editing Time
-
+
Path
-
+
Project: {0}
-
+
By {0}
@@ -3128,64 +3168,64 @@
GuiProjectEditMain
-
+
Project Settings
-
+
Project name
-
+
Should be set only once.
-
+
Novel title
-
-
+
+
Change whenever you want!
-
+
Author(s)
-
+
Project language
-
+
Used when building the manuscript.
-
+
Default
-
+
Spell check language
-
-
+
+
Overrides main preferences.
-
+
No backup on close
@@ -3193,27 +3233,27 @@
GuiProjectEditReplace
-
+
Text Replace List for Preview and Export
-
+
Keyword
-
+
Replace With
-
+
Select item to edit
-
+
Save
@@ -3221,67 +3261,67 @@
GuiProjectEditStatus
-
+
Novel File Status Levels
-
+
Note File Importance Levels
-
+
Label
-
+
Usage
-
+
Select item to edit
-
+
Colour
-
+
Save
-
+
Select Colour
-
+
New Item
-
+
Cannot delete a status item that is in use.
-
+
Not in use
-
+
Used once
-
+
Used by {0} items
@@ -3348,27 +3388,27 @@
GuiProjectSettings
-
+
Project Settings
-
+
Settings
-
+
Status
-
+
Importance
-
+
Auto-Replace
@@ -3543,37 +3583,37 @@
GuiSideBar
-
+
Project Tree View
-
+
Novel Tree View
-
+
Novel Outline View
-
+
Build Manuscript
-
+
Project Details
-
+
Writing Statistics
-
+
Settings
@@ -3615,18 +3655,18 @@
GuiWordList
-
-
+
+
Project Word List
-
+
Cannot add a blank word.
-
+
The word '{0}' is already in the word list.
@@ -3754,27 +3794,27 @@
-
+
JSON Data File
-
+
CSV Data File
-
+
Save Data As
-
+
{0} file successfully written to:
-
+
Failed to write {0} file.
@@ -4438,27 +4478,27 @@
_DetailsWidget
-
+
Setting
-
+
Value
-
+
Name
-
+
Selection
-
+
Title
@@ -4466,37 +4506,37 @@
_FilterTab
-
+
Included in manuscript
-
+
Excluded from manuscript
-
+
Always included
-
+
Always excluded
-
+
Reset to default
-
+
Mark selection as
-
+
Select Root Folders
@@ -4504,22 +4544,22 @@
_GuiAlert
-
+
Information
-
+
Warning
-
+
Error
-
+
Question
@@ -4527,65 +4567,65 @@
_HeadingsTab
-
-
+
+
Hide
-
-
+
+
Editing: {0}
-
-
+
+
None
-
+
Title
-
+
Chapter Number
-
+
Chapter Number (Word)
-
+
Chapter Number (Upper Case Roman)
-
+
Chapter Number (Lower Case Roman)
-
+
Scene Number (In Chapter)
-
+
Scene Number (Absolute)
-
+
Insert
-
+
Apply
@@ -4593,27 +4633,27 @@
_PreviewWidget
-
+
Press the "Preview" button to generate ...
-
+
Processing ...
-
+
Done
-
+
Unknown
-
+
Built
@@ -4754,12 +4794,12 @@
_ViewPanelBackRefs
-
+
Document
-
+
First Heading
@@ -4767,22 +4807,22 @@
_ViewPanelKeyWords
-
+
Tag
-
+
Document
-
+
Heading
-
+
Short Description
From b7c657141f55959193196338e5e6df8c6017335a Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 17:43:28 +0100
Subject: [PATCH 05/12] Update translations
---
i18n/nw_en_US.ts | 1138 +++++++++---------
i18n/nw_nb_NO.ts | 1140 ++++++++++---------
novelwriter/assets/i18n/project_es_419.json | 11 +
novelwriter/assets/i18n/project_fr_FR.json | 11 +
novelwriter/assets/i18n/project_it_IT.json | 11 +
5 files changed, 1212 insertions(+), 1099 deletions(-)
diff --git a/i18n/nw_en_US.ts b/i18n/nw_en_US.ts
index 6e9a05f2..69efc0af 100644
--- a/i18n/nw_en_US.ts
+++ b/i18n/nw_en_US.ts
@@ -207,72 +207,72 @@
Common
-
+
in the future
in the future
-
+
just now
just now
-
+
a minute ago
a minute ago
-
+
{0} minutes ago
{0} minutes ago
-
+
an hour ago
an hour ago
-
+
{0} hours ago
{0} hours ago
-
+
a day ago
a day ago
-
+
{0} days ago
{0} days ago
-
+
a week ago
a week ago
-
+
{0} weeks ago
{0} weeks ago
-
+
a month ago
a month ago
-
+
{0} months ago
{0} months ago
-
+
a year ago
a year ago
-
+
{0} years ago
{0} years ago
@@ -626,7 +626,7 @@
GuiAbout
-
+
About novelWriter
About novelWriter
@@ -652,27 +652,27 @@
License
-
+
Website: {0}
Website: {0}
-
+
novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.
novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.
-
+
novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
+
novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
+
See the Licence tab for the full licence text, or visit the GNU website at {0} for more details.
See the License tab for the full license text, or visit the GNU website at {0} for more details.
@@ -776,32 +776,32 @@
GuiDocEditFooter
-
+
Status
Status
-
+
Line: {0} ({1})
Line: {0} ({1})
-
+
Words: {0} ({1})
Words: {0} ({1})
-
+
Document size is {0} bytes
Document size is {0} bytes
-
+
Words: {0} selected
Words: {0} selected
-
+
Character count: {0}
Character count: {0}
@@ -809,22 +809,22 @@
GuiDocEditHeader
-
+
Toggle Tool Bar
Toggle Tool Bar
-
+
Search
Search
-
+
Toggle Focus Mode
Toggle Focus Mode
-
+
Close
Close
@@ -832,58 +832,58 @@
GuiDocEditSearch
-
-
+
+
Search
Search
-
+
Replace
Replace
-
+
Case Sensitive
Case Sensitive
-
+
Whole Words Only
Whole Words Only
-
+
RegEx Mode
RegEx Mode
-
+
Loop Search
Loop Search
-
+
Search Next File
Search Next File
-
+
Preserve Case
Preserve Case
-
+
Close Search
Close Search
-
+
Find in current document
Find in current document
-
+
Find and replace in current document
Find and replace in current document
@@ -891,127 +891,127 @@
GuiDocEditor
-
+
Opened Document: {0}
Opened Document: {0}
-
+
This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?
This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?
-
+
Could not save document.
Could not save document.
-
+
Saved Document: {0}
Saved Document: {0}
-
+
Spell checking requires the package PyEnchant. It does not appear to be installed.
Spell checking requires the package PyEnchant. It does not appear to be installed.
-
+
Spell check complete
Spell check complete
-
+
Document Details
Document Details
-
+
Created: {0}
Created: {0}
-
+
Updated: {0}
Updated: {0}
-
+
File Location: {0}
File Location: {0}
-
+
Set as Document Name
Set as Document Name
-
+
Follow Tag
Follow Tag
-
+
Create Note for Tag
Create Note for Tag
-
+
Cut
Cut
-
+
Copy
Copy
-
+
Paste
Paste
-
+
Select All
Select All
-
+
Select Word
Select Word
-
+
Select Paragraph
Select Paragraph
-
+
Spelling Suggestion(s)
Spelling Suggestion(s)
-
+
No Suggestions
No Suggestions
-
+
Add Word to Dictionary
Add Word to Dictionary
-
+
Please select some text before calling replace quotes.
Please select some text before calling replace quotes.
-
+
Do you want to create a new project note for the tag '{0}'?
Do you want to create a new project note for the tag '{0}'?
-
+
Could not create note in a root folder for '{0}'. If one doesn't exist, you must create one first.
Could not create note in a root folder for '{0}'. If one doesn't exist, you must create one first.
@@ -1019,22 +1019,22 @@
GuiDocMerge
-
+
Merge Documents
Merge Documents
-
+
Documents to Merge
Documents to Merge
-
+
Drag and drop items to change the order, or uncheck to exclude.
Drag and drop items to change the order, or uncheck to exclude.
-
+
Move merged items to Trash
Move merged items to Trash
@@ -1042,52 +1042,52 @@
GuiDocSplit
-
+
Split Document
Split Document
-
+
Document Headers
Document Headers
-
+
Select the maximum level to split into files.
Select the maximum level to split into files.
-
+
Split on Header Level 1 (Title)
Split on Header Level 1 (Title)
-
+
Split up to Header Level 2 (Chapter)
Split up to Header Level 2 (Chapter)
-
+
Split up to Header Level 3 (Scene)
Split up to Header Level 3 (Scene)
-
+
Split up to Header Level 4 (Section)
Split up to Header Level 4 (Section)
-
+
Split into a new folder
Split into a new folder
-
+
Create document hierarchy
Create document hierarchy
-
+
Move split document to Trash
Move split document to Trash
@@ -1095,58 +1095,98 @@
GuiDocToolBar
-
- Toggle Markdown or Shortcodes Mode
- Toggle Markdown or Shortcodes Mode
+
+ Markdown Bold
+ Markdown Bold
+
+
+
+ Markdown Italic
+ Markdown Italic
+
+
+
+ Markdown Strikethrough
+ Markdown Strikethrough
+
+
+
+ Shortcode Bold
+ Shortcode Bold
+
+
+
+ Shortcode Italic
+ Shortcode Italic
+
+
+
+ Shortcode Strikethrough
+ Shortcode Strikethrough
+
+
+
+ Shortcode Underline
+ Shortcode Underline
+
+
+
+ Shortcode Superscript
+ Shortcode Superscript
+
+
+
+ Shortcode Subscript
+ Shortcode Subscript
GuiDocViewFooter
-
+
Show/Hide Viewer Panel
Show/Hide Viewer Panel
-
- Show Comments
- Show Comments
-
-
-
- Show Synopsis Comments
- Show Synopsis Comments
-
-
-
+
Comments
Comments
-
+
+ Show Comments
+ Show Comments
+
+
+
Synopsis
Synopsis
+
+
+ Show Synopsis Comments
+ Show Synopsis Comments
+
GuiDocViewHeader
-
+
Go Backward
Go Backward
-
+
Go Forward
Go Forward
-
+
Reload
Reload
-
+
Close
Close
@@ -1190,12 +1230,12 @@
GuiEditLabel
-
+
Item Label
Item Label
-
+
Label
Label
@@ -1269,123 +1309,123 @@
GuiMain
-
+
novelWriter is ready ...
novelWriter is ready ...
-
+
Cannot create a new project when another project is open.
Cannot create a new project when another project is open.
-
+
A project already exists in that location. Please choose another folder.
A project already exists in that location. Please choose another folder.
-
+
Close the current project?
Close the current project?
-
-
+
+
Changes are saved automatically.
Changes are saved automatically.
-
+
Backup the current project?
Backup the current project?
-
+
The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway?
The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway?
-
+
Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project.
Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project.
-
+
The project was locked by the computer '{0}' ({1} {2}), last active on {3}.
The project was locked by the computer '{0}' ({1} {2}), last active on {3}.
-
+
The project index is outdated or broken. Rebuilding index.
The project index is outdated or broken. Rebuilding index.
-
+
Text files ({0})
Text files ({0})
-
+
Markdown files ({0})
Markdown files ({0})
-
+
novelWriter files ({0})
novelWriter files ({0})
-
+
All files ({0})
All files ({0})
-
+
Import File
Import File
-
+
Could not read file. The file must be an existing text file.
Could not read file. The file must be an existing text file.
-
+
Please open a document to import the text file into.
Please open a document to import the text file into.
-
+
Importing the file will overwrite the current content of the document. Do you want to proceed?
Importing the file will overwrite the current content of the document. Do you want to proceed?
-
+
Indexing completed in {0} ms
Indexing completed in {0} ms
-
+
The project index has been successfully rebuilt.
The project index has been successfully rebuilt.
-
- Some changes will not be applied until novelWriter has been restarted.
- Some changes will not be applied until novelWriter has been restarted.
-
-
-
+
Could not initialise the dialog.
Could not initialize the dialog.
-
+
Do you want to exit novelWriter?
Do you want to exit novelWriter?
-
+
+ Some changes will not be applied until novelWriter has been restarted.
+ Some changes will not be applied until novelWriter has been restarted.
+
+
+
Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.
Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.
@@ -1393,647 +1433,647 @@
GuiMainMenu
-
+
&Project
&Project
-
+
New Project
New Project
-
+
Open Project
Open Project
-
+
Save Project
Save Project
-
+
Close Project
Close Project
-
+
Project Settings
Project Settings
-
+
Project Details
Project Details
-
+
Rename Item
Rename Item
-
+
Delete Item
Delete Item
-
+
Empty Trash
Empty Trash
-
+
Exit
Exit
-
+
&Document
&Document
-
+
Open Document
Open Document
-
+
Save Document
Save Document
-
+
Close Document
Close Document
-
+
View Document
View Document
-
+
Close Document View
Close Document View
-
+
Show File Details
Show File Details
-
+
Import Text from File
Import Text from File
-
+
&Edit
&Edit
-
+
Undo
Undo
-
+
Redo
Redo
-
+
Cut
Cut
-
+
Copy
Copy
-
+
Paste
Paste
-
+
Select All
Select All
-
+
Select Paragraph
Select Paragraph
-
+
&View
&View
-
+
Go to Project Tree
Go to Project Tree
-
+
Go to Document Editor
Go to Document Editor
-
+
Go to Outline
Go to Outline
-
+
Navigate Backward
Navigate Backward
-
+
Navigate Forward
Navigate Forward
-
+
Focus Mode
Focus Mode
-
+
Full Screen Mode
Full Screen Mode
-
+
&Insert
&Insert
-
+
Dashes
Dashes
-
+
Short Dash
Short Dash
-
+
Long Dash
Long Dash
-
+
Horizontal Bar
Horizontal Bar
-
+
Figure Dash
Figure Dash
-
+
Quote Marks
Quote Marks
-
+
Left Single Quote
Left Single Quote
-
+
Right Single Quote
Right Single Quote
-
+
Left Double Quote
Left Double Quote
-
+
Right Double Quote
Right Double Quote
-
+
Alternative Apostrophe
Alternative Apostrophe
-
+
General Punctuation
General Punctuation
-
+
Ellipsis
Ellipsis
-
+
Prime
Prime
-
+
Double Prime
Double Prime
-
+
White Spaces
White Spaces
-
+
Non-Breaking Space
Non-Breaking Space
-
+
Thin Space
Thin Space
-
+
Thin Non-Breaking Space
Thin Non-Breaking Space
-
+
Other Symbols
Other Symbols
-
+
List Bullet
List Bullet
-
+
Hyphen Bullet
Hyphen Bullet
-
+
Flower Mark
Flower Mark
-
+
Per Mille
Per Mille
-
+
Degree Symbol
Degree Symbol
-
+
Minus Sign
Minus Sign
-
+
Times Sign
Times Sign
-
+
Division Sign
Division Sign
-
+
Tags and References
Tags and References
-
+
Special Comments
Special Comments
-
+
Synopsis Comment
Synopsis Comment
-
+
Short Description Comment
Short Description Comment
-
+
Page Break and Space
Page Break and Space
-
+
Page Break
Page Break
-
+
Vertical Space (Single)
Vertical Space (Single)
-
+
Vertical Space (Multi)
Vertical Space (Multi)
-
+
Placeholder Text
Placeholder Text
-
+
&Format
&Format
-
- Emphasis
- Emphasis
+
+ Bold
+ Bold
-
- Strong Emphasis
- Strong Emphasis
+
+ Italic
+ Italic
-
+
Strikethrough
Strikethrough
-
+
Wrap Double Quotes
Wrap Double Quotes
-
+
Wrap Single Quotes
Wrap Single Quotes
-
+
More Formats ...
More Formats ...
-
+
Italics (Shortcode)
Italics (Shortcode)
-
+
Bold (Shortcode)
Bold (Shortcode)
-
+
Strikethrough (Shortcode)
Strikethrough (Shortcode)
-
+
Underline
Underline
-
+
Superscript
Superscript
-
+
Subscript
Subscript
-
+
Header 1 (Partition)
Header 1 (Partition)
-
+
Header 2 (Chapter)
Header 2 (Chapter)
-
+
Header 3 (Scene)
Header 3 (Scene)
-
+
Header 4 (Section)
Header 4 (Section)
-
+
Novel Title
Novel Title
-
+
Unnumbered Chapter
Unnumbered Chapter
-
+
Align Left
Align Left
-
+
Align Centre
Align Center
-
+
Align Right
Align Right
-
+
Indent Left
Indent Left
-
+
Indent Right
Indent Right
-
+
Toggle Comment
Toggle Comment
-
+
Remove Block Format
Remove Block Format
-
+
Convert Single Quotes
Convert Single Quotes
-
+
Convert Double Quotes
Convert Double Quotes
-
+
Remove In-Paragraph Breaks
Remove In-Paragraph Breaks
-
+
&Search
&Search
-
+
Find
Find
-
+
Replace
Replace
-
+
Find Next
Find Next
-
+
Find Previous
Find Previous
-
+
Replace Next
Replace Next
-
+
&Tools
&Tools
-
+
Check Spelling
Check Spelling
-
+
Spell Check Language
Spell Check Language
-
+
Default
Default
-
+
Re-Run Spell Check
Re-Run Spell Check
-
+
Project Word List
Project Word List
-
+
Add Dictionaries
Add Dictionaries
-
+
Rebuild Index
Rebuild Index
-
+
Backup Project
Backup Project
-
+
Build Manuscript
Build Manuscript
-
+
Writing Statistics
Writing Statistics
-
+
Preferences
Preferences
-
+
&Help
&Help
-
+
About novelWriter
About novelWriter
-
+
About Qt5
About Qt5
-
+
User Manual (Online)
User Manual (Online)
-
+
User Manual (PDF)
User Manual (PDF)
-
+
Report an Issue (GitHub)
Report an Issue (GitHub)
-
+
Ask a Question (GitHub)
Ask a Question (GitHub)
-
+
The novelWriter Website
The novelWriter Website
-
+
Check for New Release
Check for New Release
@@ -2041,38 +2081,38 @@
GuiMainStatus
-
-
+
+
None
None
-
+
Editor
Editor
-
+
Project
Project
-
+
Session Time
Session Time
-
+
Words: {0} ({1})
Words: {0} ({1})
-
+
Project word count (session change)
Project word count (session change)
-
+
Novel word count (session change)
Novel word count (session change)
@@ -2192,58 +2232,58 @@
GuiNovelToolBar
-
+
Outline of {0}
Outline of {0}
-
+
Novel Root
Novel Root
-
+
Refresh
Refresh
-
+
Last Column
Last Column
-
+
Hidden
Hidden
-
+
Point of View Character
Point of View Character
-
+
Focus Character
Focus Character
-
+
Novel Plot
Novel Plot
-
-
+
+
Column Size
Column Size
-
+
More Options
More Options
-
+
Maximum column size in %
Maximum column size in %
@@ -2251,7 +2291,7 @@
GuiNovelTree
-
+
No meta data
No meta data
@@ -2259,65 +2299,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+
Title
Title
-
+
Chapter
Chapter
-
+
Scene
Scene
-
+
Section
Section
-
+
Document
Document
-
+
Status
Status
-
+
Characters
Characters
-
+
Words
Words
-
+
Paragraphs
Paragraphs
-
+
Synopsis
Synopsis
-
+
Title Details
Title Details
-
+
Reference Tags
Reference Tags
@@ -2325,7 +2365,7 @@
GuiOutlineHeaderMenu
-
+
Select Columns
Select Columns
@@ -2346,42 +2386,42 @@
GuiPreferences
-
+
Preferences
Preferences
-
+
General
General
-
+
Projects
Projects
-
+
Documents
Documents
-
+
Editor
Editor
-
+
Highlighting
Highlighting
-
+
Automation
Automation
-
+
Quotes
Quotes
@@ -2389,103 +2429,103 @@
GuiPreferencesAutomation
-
+
Automatic Features
Automatic Features
-
+
Auto-select word under cursor
Auto-select word under cursor
-
+
Apply formatting to word under cursor if no selection is made.
Apply formatting to word under cursor if no selection is made.
-
+
Auto-replace text as you type
Auto-replace text as you type
-
+
Allow the editor to replace symbols as you type.
Allow the editor to replace symbols as you type.
-
+
Replace as You Type
Replace as You Type
-
+
Auto-replace single quotes
Auto-replace single quotes
-
-
+
+
Try to guess which is an opening or a closing quote.
Try to guess which is an opening or a closing quote.
-
+
Auto-replace double quotes
Auto-replace double quotes
-
+
Auto-replace dashes
Auto-replace dashes
-
+
Double and triple hyphens become short and long dashes.
Double and triple hyphens become short and long dashes.
-
+
Auto-replace dots
Auto-replace dots
-
+
Three consecutive dots become ellipsis.
Three consecutive dots become ellipsis.
-
+
Automatic Padding
Automatic Padding
-
+
Insert non-breaking space before
Insert non-breaking space before
-
+
Automatically add space before any of these symbols.
Automatically add space before any of these symbols.
-
+
Insert non-breaking space after
Insert non-breaking space after
-
+
Automatically add space after any of these symbols.
Automatically add space after any of these symbols.
-
+
Use thin space instead
Use thin space instead
-
+
Inserts a thin space instead of a regular space.
Inserts a thin space instead of a regular space.
@@ -2493,93 +2533,93 @@
GuiPreferencesDocuments
-
+
Text Style
Text Style
-
+
Font family
Font family
-
-
-
+
+
+
Applies to both document editor and viewer.
Applies to both document editor and viewer.
-
+
Font size
Font size
-
+
pt
pt
-
+
Text Flow
Text Flow
-
+
Maximum text width in "Normal Mode"
Maximum text width in "Normal Mode"
-
+
Set to 0 to disable this feature.
Set to 0 to disable this feature.
-
-
+
+
px
px
-
+
Maximum text width in "Focus Mode"
Maximum text width in "Focus Mode"
-
+
The maximum width cannot be disabled.
The maximum width cannot be disabled.
-
+
Hide document footer in "Focus Mode"
Hide document footer in "Focus Mode"
-
+
Hide the information bar in the document editor.
Hide the information bar in the document editor.
-
+
Justify the text margins
Justify the text margins
-
+
Minimum text margin
Minimum text margin
-
+
Tab width
Tab width
-
+
The width of a tab key press in the editor and viewer.
The width of a tab key press in the editor and viewer.
@@ -2587,92 +2627,92 @@
GuiPreferencesEditor
-
+
Spell Checking
Spell Checking
-
+
None
None
-
+
Spell check language
Spell check language
-
+
Available languages are determined by your system.
Available languages are determined by your system.
-
+
Word Count
Word Count
-
+
Word count interval
Word count interval
-
+
seconds
seconds
-
+
Include project notes in status bar word count
Include project notes in status bar word count
-
+
Writing Guides
Writing Guides
-
+
Show tabs and spaces
Show tabs and spaces
-
+
Show line endings
Show line endings
-
+
Scroll Behaviour
Scroll Behavior
-
+
Scroll past end of the document
Scroll past end of the document
-
+
Also centres the cursor when scrolling.
Also centers the cursor when scrolling.
-
+
Typewriter style scrolling when you type
Typewriter style scrolling when you type
-
+
Keeps the cursor at a fixed vertical position.
Keeps the cursor at a fixed vertical position.
-
+
Minimum position for Typewriter scrolling
Minimum position for Typewriter scrolling
-
+
Percentage of the editor height from the top.
Percentage of the editor height from the top.
@@ -2680,95 +2720,95 @@
GuiPreferencesGeneral
-
+
Look and Feel
Look and Feel
-
+
Main GUI language
Main GUI language
-
-
+
+
Requires restart to take effect.
Requires restart to take effect.
-
+
Main GUI theme
Main GUI theme
-
+
General colour theme and icons.
General color theme and icons.
-
+
Editor theme
Editor theme
-
+
Colour theme for the editor and viewer.
Color theme for the editor and viewer.
-
+
Font family
Font family
-
+
Font size
Font size
-
+
pt
pt
-
+
GUI Settings
GUI Settings
-
+
Emphasise partition and chapter labels
Emphasise partition and chapter labels
-
+
Makes them stand out in the project tree.
Makes them stand out in the project tree.
-
+
Show full path in document header
Show full path in document header
-
+
Add the parent folder names to the header.
Add the parent folder names to the header.
-
+
Hide vertical scroll bars in main windows
Hide vertical scroll bars in main windows
-
-
+
+
Scrolling available with mouse wheel and keys only.
Scrolling available with mouse wheel and keys only.
-
+
Hide horizontal scroll bars in main windows
Hide horizontal scroll bars in main windows
@@ -2776,109 +2816,109 @@
GuiPreferencesProjects
-
+
Automatic Save
Automatic Save
-
+
Save document interval
Save document interval
-
+
How often the document is automatically saved.
How often the document is automatically saved.
-
+
seconds
seconds
-
+
Save project interval
Save project interval
-
+
How often the project is automatically saved.
How often the project is automatically saved.
-
+
Project Backup
Project Backup
-
+
Browse
Browse
-
+
Backup storage location
Backup storage location
-
-
+
+
Path: {0}
Path: {0}
-
+
Run backup when the project is closed
Run backup when the project is closed
-
+
Can be overridden for individual projects in Project Settings.
Can be overridden for individual projects in Project Settings.
-
+
Ask before running backup
Ask before running backup
-
+
If off, backups will run in the background.
If off, backups will run in the background.
-
+
Session Timer
Session Timer
-
+
Pause the session timer when not writing
Pause the session timer when not writing
-
+
Also pauses when the application window does not have focus.
Also pauses when the application window does not have focus.
-
+
Editor inactive time before pausing timer
Editor inactive time before pausing timer
-
+
User activity includes typing and changing the content.
User activity includes typing and changing the content.
-
+
minutes
minutes
-
+
Backup Directory
Backup Directory
@@ -2886,47 +2926,47 @@
GuiPreferencesQuotes
-
+
Quotation Style
Quotation Style
-
+
Single quote open style
Single quote open style
-
+
The symbol to use for a leading single quote.
The symbol to use for a leading single quote.
-
+
Single quote close style
Single quote close style
-
+
The symbol to use for a trailing single quote.
The symbol to use for a trailing single quote.
-
+
Double quote open style
Double quote open style
-
+
The symbol to use for a leading double quote.
The symbol to use for a leading double quote.
-
+
Double quote close style
Double quote close style
-
+
The symbol to use for a trailing double quote.
The symbol to use for a trailing double quote.
@@ -2934,59 +2974,59 @@
GuiPreferencesSyntax
-
+
Quotes & Dialogue
Quotes & Dialogue
-
+
Highlight text wrapped in quotes
Highlight text wrapped in quotes
-
-
+
+
Applies to the document editor only.
Applies to the document editor only.
-
+
Allow open-ended single quotes
Allow open-ended single quotes
-
+
Highlight single-quoted line with no closing quote.
Highlight single-quoted line with no closing quote.
-
+
Allow open-ended double quotes
Allow open-ended double quotes
-
+
Highlight double-quoted line with no closing quote.
Highlight double-quoted line with no closing quote.
-
+
Text Emphasis
Text Emphasis
-
+
Add highlight colour to emphasised text
Add highlight color to emphasised text
-
+
Text Errors
Text Errors
-
+
Highlight multiple or trailing spaces
Highlight multiple or trailing spaces
@@ -3012,72 +3052,72 @@
GuiProjectDetailsContents
-
+
Table of Contents
Table of Contents
-
+
Title
Title
-
+
Words
Words
-
+
Pages
Pages
-
+
Page
Page
-
+
Progress
Progress
-
+
Typical word count for a 5 by 8 inch book page with 11 pt font is 350.
Typical word count for a 5 by 8 inch book page with 11 pt font is 350.
-
+
Start counting page numbers from this page.
Start counting page numbers from this page.
-
+
Assume a new chapter or partition always start on an odd numbered page.
Assume a new chapter or partition always start on an odd numbered page.
-
+
Words per page
Words per page
-
+
Count pages from
Count pages from
-
+
Clear double pages
Clear double pages
-
+
END
END
-
+
Untitled
Untitled
@@ -3085,42 +3125,42 @@
GuiProjectDetailsMain
-
+
Words
Words
-
+
Chapters
Chapters
-
+
Scenes
Scenes
-
+
Revisions
Revisions
-
+
Editing Time
Editing Time
-
+
Path
Path
-
+
Project: {0}
Project: {0}
-
+
By {0}
By {0}
@@ -3128,64 +3168,64 @@
GuiProjectEditMain
-
+
Project Settings
Project Settings
-
+
Project name
Project name
-
+
Should be set only once.
Should be set only once.
-
+
Novel title
Novel title
-
-
+
+
Change whenever you want!
Change whenever you want!
-
+
Author(s)
Author(s)
-
+
Project language
Project language
-
+
Used when building the manuscript.
Used when building the manuscript.
-
+
Default
Default
-
+
Spell check language
Spell check language
-
-
+
+
Overrides main preferences.
Overrides main preferences.
-
+
No backup on close
No backup on close
@@ -3193,27 +3233,27 @@
GuiProjectEditReplace
-
+
Text Replace List for Preview and Export
Text Replace List for Preview and Export
-
+
Keyword
Keyword
-
+
Replace With
Replace With
-
+
Select item to edit
Select item to edit
-
+
Save
Save
@@ -3221,67 +3261,67 @@
GuiProjectEditStatus
-
+
Novel File Status Levels
Novel File Status Levels
-
+
Note File Importance Levels
Note File Importance Levels
-
+
Label
Label
-
+
Usage
Usage
-
+
Select item to edit
Select item to edit
-
+
Colour
Color
-
+
Save
Save
-
+
Select Colour
Select Color
-
+
New Item
New Item
-
+
Cannot delete a status item that is in use.
Cannot delete a status item that is in use.
-
+
Not in use
Not in use
-
+
Used once
Used once
-
+
Used by {0} items
Used by {0} items
@@ -3348,27 +3388,27 @@
GuiProjectSettings
-
+
Project Settings
Project Settings
-
+
Settings
Settings
-
+
Status
Status
-
+
Importance
Importance
-
+
Auto-Replace
Auto-Replace
@@ -3543,37 +3583,37 @@
GuiSideBar
-
+
Project Tree View
Project Tree View
-
+
Novel Tree View
Novel Tree View
-
+
Novel Outline View
Novel Outline View
-
+
Build Manuscript
Build Manuscript
-
+
Project Details
Project Details
-
+
Writing Statistics
Writing Statistics
-
+
Settings
Settings
@@ -3615,18 +3655,18 @@
GuiWordList
-
-
+
+
Project Word List
Project Word List
-
+
Cannot add a blank word.
Cannot add a blank word.
-
+
The word '{0}' is already in the word list.
The word '{0}' is already in the word list.
@@ -3754,27 +3794,27 @@
CSV Data File (.csv)
-
+
JSON Data File
JSON Data File
-
+
CSV Data File
CSV Data File
-
+
Save Data As
Save Data As
-
+
{0} file successfully written to:
{0} file successfully written to:
-
+
Failed to write {0} file.
Failed to write {0} file.
@@ -4438,27 +4478,27 @@
_DetailsWidget
-
+
Setting
Setting
-
+
Value
Value
-
+
Name
Name
-
+
Selection
Selection
-
+
Title
Title
@@ -4466,37 +4506,37 @@
_FilterTab
-
+
Included in manuscript
Included in manuscript
-
+
Excluded from manuscript
Excluded from manuscript
-
+
Always included
Always included
-
+
Always excluded
Always excluded
-
+
Reset to default
Reset to default
-
+
Mark selection as
Mark selection as
-
+
Select Root Folders
Select Root Folders
@@ -4504,22 +4544,22 @@
_GuiAlert
-
+
Information
Information
-
+
Warning
Warning
-
+
Error
Error
-
+
Question
Question
@@ -4527,65 +4567,65 @@
_HeadingsTab
-
-
+
+
Hide
Hide
-
-
+
+
Editing: {0}
Editing: {0}
-
-
+
+
None
None
-
+
Title
Title
-
+
Chapter Number
Chapter Number
-
+
Chapter Number (Word)
Chapter Number (Word)
-
+
Chapter Number (Upper Case Roman)
Chapter Number (Upper Case Roman)
-
+
Chapter Number (Lower Case Roman)
Chapter Number (Lower Case Roman)
-
+
Scene Number (In Chapter)
Scene Number (In Chapter)
-
+
Scene Number (Absolute)
Scene Number (Absolute)
-
+
Insert
Insert
-
+
Apply
Apply
@@ -4593,27 +4633,27 @@
_PreviewWidget
-
+
Press the "Preview" button to generate ...
Press the "Preview" button to generate ...
-
+
Processing ...
Processing ...
-
+
Done
Done
-
+
Unknown
Unknown
-
+
Built
Built
@@ -4754,12 +4794,12 @@
_ViewPanelBackRefs
-
+
Document
Document
-
+
First Heading
First Heading
@@ -4767,22 +4807,22 @@
_ViewPanelKeyWords
-
+
Tag
Tag
-
+
Document
Document
-
+
Heading
Heading
-
+
Short Description
Short Description
diff --git a/i18n/nw_nb_NO.ts b/i18n/nw_nb_NO.ts
index c0d36985..f64e6c71 100644
--- a/i18n/nw_nb_NO.ts
+++ b/i18n/nw_nb_NO.ts
@@ -207,72 +207,72 @@
Common
-
+
in the future
i fremtiden
-
+
just now
nå nettopp
-
+
a minute ago
for et minutt siden
-
+
{0} minutes ago
for {0} minutter siden
-
+
an hour ago
for en time siden
-
+
{0} hours ago
for {0} timer siden
-
+
a day ago
for en dag siden
-
+
{0} days ago
for {0} dager siden
-
+
a week ago
for en uke siden
-
+
{0} weeks ago
for {0} uker siden
-
+
a month ago
for en måned siden
-
+
{0} months ago
for {0} måneder siden
-
+
a year ago
for et år siden
-
+
{0} years ago
for {0} år siden
@@ -626,7 +626,7 @@
GuiAbout
-
+
About novelWriter
Om novelWriter
@@ -652,27 +652,27 @@
Lisens
-
+
Website: {0}
Nettside: {0}
-
+
novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.
novelWriter er en markdown-liknende teksteditor laget for å kunne organisere og skrive romaner og noveller. Programmet er skrevet i Python 3 med et brukergrensesnitt i Qt 5 via PyQt5.
-
+
novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
novelWriter er gratis programvare: du kan videredistribuere det og/eller modifisere det under vilkårene i GNU General Public License som utgitt av Free Software Foundation, enten versjon 3 av Lisensen, eller (etter eget valg) enhver senere versjon.
-
+
novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
novelWriter er distribuert i håp om at det vil være nyttig, men UTEN NOEN GARANTI; uten selv en underforstått garanti vedrørende SALGBARHET eller EGNETHET TIL ET BESTEMT FORMÅL. Se GNU General Public Licence for flere detaljer.
-
+
See the Licence tab for the full licence text, or visit the GNU website at {0} for more details.
Se lisens-fanen for fulltekst-versjonen av lisensen (på engelsk), eller besøk GNU sin nettside på {0} for mer informasjon.
@@ -776,32 +776,32 @@
GuiDocEditFooter
-
+
Status
Status
-
+
Line: {0} ({1})
Linje: {0} ({1})
-
+
Words: {0} ({1})
Ord: {0} ({1})
-
+
Document size is {0} bytes
Dokumentet er {0} byte
-
+
Words: {0} selected
Ord: {0} valgt
-
+
Character count: {0}
Antall tegn: {0}
@@ -809,22 +809,22 @@
GuiDocEditHeader
-
+
Toggle Tool Bar
Vis/skjul verktøylinje
-
+
Search
Søk
-
+
Toggle Focus Mode
Slå av/på "Fokus-modus"
-
+
Close
Lukk
@@ -832,58 +832,58 @@
GuiDocEditSearch
-
-
+
+
Search
Søk
-
+
Replace
Erstatt
-
+
Case Sensitive
Skill store/små bokstaver
-
+
Whole Words Only
Kun hele ord
-
+
RegEx Mode
RegEx-modus
-
+
Loop Search
Søk rundt
-
+
Search Next File
Søk i neste file
-
+
Preserve Case
Behold store/små bokstaver
-
+
Close Search
Lukk søk
-
+
Find in current document
Søk i det åpne dokumentet
-
+
Find and replace in current document
Søk og erstatt i det åpne dokumentet
@@ -891,127 +891,127 @@
GuiDocEditor
-
+
Opened Document: {0}
Ã…pnet dokument: {0}
-
+
This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?
Dette dokumentet er endret utenfor novelWriter mens det var åpent. Overskrive filen på disken?
-
+
Could not save document.
Kunne ikke lagre dokumentet.
-
+
Saved Document: {0}
Lagret dokument: {0}
-
+
Spell checking requires the package PyEnchant. It does not appear to be installed.
Stavekontroll krever at pakken PyEnchant er installert. Det ser det ikke ut til at den er.
-
+
Spell check complete
Stavekontrollen er ferdig
-
+
Document Details
Dokumentdetaljer
-
+
Created: {0}
Opprettet: {0}
-
+
Updated: {0}
Oppdatert: {0}
-
+
File Location: {0}
Filplassering: {0}
-
+
Set as Document Name
Sett som dokumentnavn
-
+
Follow Tag
Følg knagg
-
+
Create Note for Tag
Opprett notat for knagg
-
+
Cut
Klipp
-
+
Copy
Kopier
-
+
Paste
Lim inn
-
+
Select All
Velg hele teksten
-
+
Select Word
Velg hele ordet
-
+
Select Paragraph
Velg hele avsnittet
-
+
Spelling Suggestion(s)
Forslag fra stavekontrollen
-
+
No Suggestions
Ingen forslag
-
+
Add Word to Dictionary
Legg til ord i ordbok
-
+
Please select some text before calling replace quotes.
Venligst velg en del av teksten før du velger å erstatte sitattegn.
-
+
Do you want to create a new project note for the tag '{0}'?
Vil du opprette et nytt prosjektnotat for knaggen '{0}'?
-
+
Could not create note in a root folder for '{0}'. If one doesn't exist, you must create one first.
Kunne ikke opprette et notat i en rotmappe for '{0}'. Hvis en slik ikke eksisterer, må du opprette en først.
@@ -1019,22 +1019,22 @@
GuiDocMerge
-
+
Merge Documents
Slå sammen dokumenter
-
+
Documents to Merge
Dokumenter som skal slås sammen
-
+
Drag and drop items to change the order, or uncheck to exclude.
Dra og slipp elementer for å endre rekkefølgen, eller fjern merking for å ekskludere.
-
+
Move merged items to Trash
Flytt sammenslåtte elementer til papirkurven
@@ -1042,52 +1042,52 @@
GuiDocSplit
-
+
Split Document
Del opp dokument
-
+
Document Headers
Dokumentets overskrifter
-
+
Select the maximum level to split into files.
Velg hvilket nivå av overskrifter å dele opp til.
-
+
Split on Header Level 1 (Title)
Del på overskrifter på nivå 1 (titler)
-
+
Split up to Header Level 2 (Chapter)
Del på overskrifter opp til nivå 2 (kapitler)
-
+
Split up to Header Level 3 (Scene)
Del på overskrifter opp til nivå 3 (scener)
-
+
Split up to Header Level 4 (Section)
Del på overskrifter opp til nivå 4 (seksjoner)
-
+
Split into a new folder
Del inn i en ny mappe
-
+
Create document hierarchy
Opprett dokumenthierarki
-
+
Move split document to Trash
Flytt splittet element til papirkurven
@@ -1095,58 +1095,98 @@
GuiDocToolBar
-
- Toggle Markdown or Shortcodes Mode
- Vis/skjul Markdown eller kortkode-modus
+
+ Markdown Bold
+ Fet skrift med Markdown
+
+
+
+ Markdown Italic
+ Kursiv med Markdown
+
+
+
+ Markdown Strikethrough
+ Gjennomstrek med Markdown
+
+
+
+ Shortcode Bold
+ Fet skrift med kortkode
+
+
+
+ Shortcode Italic
+ Kursiv med kortkode
+
+
+
+ Shortcode Strikethrough
+ Gjennomstrek med kortkode
+
+
+
+ Shortcode Underline
+ Understrek med kortkode
+
+
+
+ Shortcode Superscript
+ Hevet skrift med kortkode
+
+
+
+ Shortcode Subscript
+ Senket skrift med kortkode
GuiDocViewFooter
-
+
Show/Hide Viewer Panel
Vis/skjul visningspanelet
-
- Show Comments
- Vis kommentarer
-
-
-
- Show Synopsis Comments
- Vis sammendrag
-
-
-
+
Comments
Kommentarer
-
+
+ Show Comments
+ Vis kommentarer
+
+
+
Synopsis
Sammendrag
+
+
+ Show Synopsis Comments
+ Vis sammendrag
+
GuiDocViewHeader
-
+
Go Backward
GÃ¥ bakover
-
+
Go Forward
GÃ¥ fremover
-
+
Reload
Oppdater
-
+
Close
Lukk
@@ -1190,12 +1230,12 @@
GuiEditLabel
-
+
Item Label
Enhetens navn
-
+
Label
Navn
@@ -1269,123 +1309,123 @@
GuiMain
-
+
novelWriter is ready ...
novelWriter er klar ...
-
+
Cannot create a new project when another project is open.
Kan ikke lage et nytt prosjekt mens et annet prosjekt er åpent.
-
+
A project already exists in that location. Please choose another folder.
Et prosjekt finnes allerede i den mappen. Vennligst velg et annet sted å lagre prosjektet.
-
+
Close the current project?
Ønsker du å lukke dette prosjektet?
-
-
+
+
Changes are saved automatically.
Endringer lagres automatisk.
-
+
Backup the current project?
Ønsker du å ta sikkerhetskopi av dette prosjektet?
-
+
The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway?
Prosjektet er allerede åpent av en annen instans av novelWriter, og er derfor låst. Vil du overstyre denne låsen og fortsette likevel?
-
+
Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project.
Merk: Hvis programmet eller datamaskinen tidligere krasjet, kan fil-låsen trygt overstyres. Det anbefales imidlertid ikke å overstyre den hvis prosjektet er åpent i en annen instans av novelWriter. Å gjøre det kan skape konflikter i prosjektets filer.
-
+
The project was locked by the computer '{0}' ({1} {2}), last active on {3}.
Prosjektet er låst av datamaskinen {0} ({1} {2}), siste registrerte aktivitet var {3}.
-
+
The project index is outdated or broken. Rebuilding index.
Prosjektets indeks er utdatert eller skadet. Bygger indeksen på nytt.
-
+
Text files ({0})
Tekstfiler ({0})
-
+
Markdown files ({0})
Markdown-filer ({0})
-
+
novelWriter files ({0})
novelWriter-filer ({0})
-
+
All files ({0})
Alle filer ({0})
-
+
Import File
Importer fil
-
+
Could not read file. The file must be an existing text file.
Kunne ikke lese filen. Filen må eksistere fra før av.
-
+
Please open a document to import the text file into.
Vennligst åpne et dokument hvor teksten i filen kan importeres.
-
+
Importing the file will overwrite the current content of the document. Do you want to proceed?
Å importere filen vil overskrive all eksisterende tekst i dokumentet. Ønsker du å fortsette?
-
+
Indexing completed in {0} ms
Indekseringen tok {0} ms
-
+
The project index has been successfully rebuilt.
Prosjektets indeks har blitt bygget på nytt.
-
- Some changes will not be applied until novelWriter has been restarted.
- Noen endringer vil ikke tas i bruk før neste gang novelWriter startes.
-
-
-
+
Could not initialise the dialog.
Kunne ikke initialisere dialogen.
-
+
Do you want to exit novelWriter?
Ønsker du å avslutte novelWriter?
-
+
+ Some changes will not be applied until novelWriter has been restarted.
+ Noen endringer vil ikke tas i bruk før neste gang novelWriter startes.
+
+
+
Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.
Kunne ikke finne referansen til knagg {0}. Enten finnes den ikke, eller så er prosjektets indeks ikke oppdatert. Indeksen kan oppdateres fra Verktøy-menyen eller ved å trykke på {1}.
@@ -1393,647 +1433,647 @@
GuiMainMenu
-
+
&Project
&Prosjekt
-
+
New Project
Nytt prosjekt
-
+
Open Project
Ã…pne prosjekt
-
+
Save Project
Lagre prosjektet
-
+
Close Project
Lukk prosjektet
-
+
Project Settings
Prosjektinnstillinger
-
+
Project Details
Prosjektdetaljer
-
+
Rename Item
Endre navn
-
+
Delete Item
Slett enhet
-
+
Empty Trash
Tøm søppel
-
+
Exit
Avslutt
-
+
&Document
&Dokument
-
+
Open Document
Ã…pne dokument
-
+
Save Document
Lagre dokumentet
-
+
Close Document
Lukk dokumentet
-
+
View Document
Vis dokument
-
+
Close Document View
Lukk dokumentvisning
-
+
Show File Details
Vis filinformasjon
-
+
Import Text from File
Importer tekst fra fil
-
+
&Edit
&Rediger
-
+
Undo
Angre
-
+
Redo
Gjenopprett
-
+
Cut
Klipp
-
+
Copy
Kopier
-
+
Paste
Lim inn
-
+
Select All
Velg hele teksten
-
+
Select Paragraph
Velg hele avsnittet
-
+
&View
&Vis
-
+
Go to Project Tree
GÃ¥ til prosjekt-tre
-
+
Go to Document Editor
GÃ¥ til dokument-editor
-
+
Go to Outline
GÃ¥ til disposisjon
-
+
Navigate Backward
Navigere bakover
-
+
Navigate Forward
Navigere fremover
-
+
Focus Mode
Focus-modus
-
+
Full Screen Mode
Fullskjerm-modus
-
+
&Insert
Sett &inn
-
+
Dashes
Bindestreker
-
+
Short Dash
Kort bindestrek
-
+
Long Dash
Lang bindestrek
-
+
Horizontal Bar
Horisontal strek
-
+
Figure Dash
Tallstrek
-
+
Quote Marks
Sitattegn
-
+
Left Single Quote
Venstre, enkelt sitattegn
-
+
Right Single Quote
Høyre, enkelt sitattegn
-
+
Left Double Quote
Venstre, dobbelt sitattegn
-
+
Right Double Quote
Høyre, dobbelt sitattegn
-
+
Alternative Apostrophe
Alternativ apostrof
-
+
General Punctuation
Generell tegnsetting
-
+
Ellipsis
Ellipsis
-
+
Prime
Primtegn
-
+
Double Prime
Dobbelt primtegn
-
+
White Spaces
Mellomrom
-
+
Non-Breaking Space
Hardt mellomrom
-
+
Thin Space
Kort mellomrom
-
+
Thin Non-Breaking Space
Hardt, kort mellomrom
-
+
Other Symbols
Andre symboler
-
+
List Bullet
Kulepunkt
-
+
Hyphen Bullet
Bindestrekpunkt
-
+
Flower Mark
Blomsterpunkt
-
+
Per Mille
Promille
-
+
Degree Symbol
Gradertegn
-
+
Minus Sign
Minustegn
-
+
Times Sign
Gangetegn
-
+
Division Sign
Deletegn
-
+
Tags and References
Knagger og referanser
-
+
Special Comments
Andre kommentartyper
-
+
Synopsis Comment
Kommentar med sammendrag
-
+
Short Description Comment
Kommentar for kort beskrivelse
-
+
Page Break and Space
Sideskift og avstand
-
+
Page Break
Sideskift
-
+
Vertical Space (Single)
Vertikal avstand (enkel)
-
+
Vertical Space (Multi)
Vertikal avstand (flere)
-
+
Placeholder Text
Midlertidig tekst
-
+
&Format
&Formattering
-
- Emphasis
+
+ Bold
+ Fet
+
+
+
+ Italic
Kursiv
-
- Strong Emphasis
- Uthev
-
-
-
+
Strikethrough
Gjennomstrek
-
+
Wrap Double Quotes
Sett i doble sitattegn
-
+
Wrap Single Quotes
Sett i enkle sitattegn
-
+
More Formats ...
Flere formater ...
-
+
Italics (Shortcode)
Kursiv (kortkode)
-
+
Bold (Shortcode)
Fet (kortkode)
-
+
Strikethrough (Shortcode)
Gjennomstrek (Kortkode)
-
+
Underline
Understrek
-
+
Superscript
Hevet skrift
-
+
Subscript
Senket skrift
-
+
Header 1 (Partition)
Overskrift 1 (inndeling)
-
+
Header 2 (Chapter)
Overskrift 2 (kapittel)
-
+
Header 3 (Scene)
Overskrift 3 (scene)
-
+
Header 4 (Section)
Overskrift 4 (seksjon)
-
+
Novel Title
Boktittel
-
+
Unnumbered Chapter
Unumrert kapittel
-
+
Align Left
Venstrejuster
-
+
Align Centre
Sentrer
-
+
Align Right
Høyrejuster
-
+
Indent Left
Innrykk fra venstre
-
+
Indent Right
Innrykk fra høyre
-
+
Toggle Comment
Veksle kommentar
-
+
Remove Block Format
Fjern formattering
-
+
Convert Single Quotes
Konverter enkle sitattegn
-
+
Convert Double Quotes
Konverter doble sitattegn
-
+
Remove In-Paragraph Breaks
Fjern linjeskift i avsnittet
-
+
&Search
&Søk
-
+
Find
Søk
-
+
Replace
Erstatt
-
+
Find Next
Finn neste
-
+
Find Previous
Finn forrige
-
+
Replace Next
Erstatt neste
-
+
&Tools
&Verktøy
-
+
Check Spelling
Stavekontroll
-
+
Spell Check Language
Språk for stavekontroll
-
+
Default
Ingen valg
-
+
Re-Run Spell Check
Kjør stavekontroll
-
+
Project Word List
Prosjektets ordliste
-
+
Add Dictionaries
Legg til ordbøker
-
+
Rebuild Index
Bygg indeks
-
+
Backup Project
Lag sikkerhetskopi av prosjektets mappe
-
+
Build Manuscript
Bygg manuskript
-
+
Writing Statistics
Statistikk
-
+
Preferences
Innstillinger
-
+
&Help
&Hjelp
-
+
About novelWriter
Om novelWriter
-
+
About Qt5
Om Qt5
-
+
User Manual (Online)
Brukermanual (på nett)
-
+
User Manual (PDF)
Brukermanual (PDF)
-
+
Report an Issue (GitHub)
Rapporter en feil (GitHub)
-
+
Ask a Question (GitHub)
Still et spørsmål (GitHub)
-
+
The novelWriter Website
novelWriters nettside
-
+
Check for New Release
Sjekk etter oppdateringer
@@ -2041,38 +2081,38 @@
GuiMainStatus
-
-
+
+
None
Ingen
-
+
Editor
Editor
-
+
Project
Prosjekt
-
+
Session Time
Tid brukt i gjeldende sesjon
-
+
Words: {0} ({1})
Ord: {0} ({1})
-
+
Project word count (session change)
Antall ord i prosjektet (endring i denne sesjonen)
-
+
Novel word count (session change)
Antall ord i roman-teksten (endring i denne sesjonen)
@@ -2192,58 +2232,58 @@
GuiNovelToolBar
-
+
Outline of {0}
Innhold i {0}
-
+
Novel Root
Roman-mappe
-
+
Refresh
Oppdatér
-
+
Last Column
Siste kolonne
-
+
Hidden
Skjult
-
+
Point of View Character
Synsvinkel-karakter
-
+
Focus Character
Fokus-karakter
-
+
Novel Plot
Roman-plott
-
-
+
+
Column Size
Kolonnebredde
-
+
More Options
Flere valg
-
+
Maximum column size in %
Maksimal kolonnebredde i %
@@ -2251,7 +2291,7 @@
GuiNovelTree
-
+
No meta data
Ingen meta-data
@@ -2259,65 +2299,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+
Title
Tittel
-
+
Chapter
Kapittel
-
+
Scene
Scene
-
+
Section
Seksjon
-
+
Document
Dokument
-
+
Status
Status
-
+
Characters
Tegn
-
+
Words
Ord
-
+
Paragraphs
Avsnitt
-
+
Synopsis
Sammendrag
-
+
Title Details
Oversikt
-
+
Reference Tags
Referanser
@@ -2325,7 +2365,7 @@
GuiOutlineHeaderMenu
-
+
Select Columns
Velg kolonner
@@ -2346,42 +2386,42 @@
GuiPreferences
-
+
Preferences
Innstillinger
-
+
General
Generelt
-
+
Projects
Prosjekt
-
+
Documents
Dokument
-
+
Editor
Editor
-
+
Highlighting
Fremheving
-
+
Automation
Automasjon
-
+
Quotes
Sitattegn
@@ -2389,103 +2429,103 @@
GuiPreferencesAutomation
-
+
Automatic Features
Automatiske funksjoner
-
+
Auto-select word under cursor
Auto-velg ord under markør
-
+
Apply formatting to word under cursor if no selection is made.
Hvis ingen tekst er valgt, formatter ordet hvor markøren står.
-
+
Auto-replace text as you type
Erstatt mens du skriver
-
+
Allow the editor to replace symbols as you type.
La editoren erstatte symboler mens du skriver.
-
+
Replace as You Type
Erstatt mens du skriver
-
+
Auto-replace single quotes
Erstatt enkle sitattegn
-
-
+
+
Try to guess which is an opening or a closing quote.
Prøv å gjette om det er et åpne- eller lukketegn.
-
+
Auto-replace double quotes
Erstatt doble sitattegn
-
+
Auto-replace dashes
Erstatt bindestreker
-
+
Double and triple hyphens become short and long dashes.
To og tre bindestreker erstattes med kort og lang bindestrek.
-
+
Auto-replace dots
Erstatt tre punktum
-
+
Three consecutive dots become ellipsis.
Tre punktum på rad erstattes med ellipsis.
-
+
Automatic Padding
Automatisk mellomrom
-
+
Insert non-breaking space before
Sett inn hardt mellomrom foran
-
+
Automatically add space before any of these symbols.
Legg til mellomrom automatisk foran disse tegnene.
-
+
Insert non-breaking space after
Sett inn hardt mellomrom etter
-
+
Automatically add space after any of these symbols.
Legg til mellomrom automatisk etter disse tegnene.
-
+
Use thin space instead
Bruk tynt mellomrom istedet
-
+
Inserts a thin space instead of a regular space.
Sett inn et tynt mellomrom istedenfor et vanlig et.
@@ -2493,93 +2533,93 @@
GuiPreferencesDocuments
-
+
Text Style
Tekststil
-
+
Font family
Skriftfamilie
-
-
-
+
+
+
Applies to both document editor and viewer.
Gjelder både redigerings- og visningsvindu.
-
+
Font size
Skriftstørrelse
-
+
pt
pt
-
+
Text Flow
Tekstflyt
-
+
Maximum text width in "Normal Mode"
Maks tekstbredde i "Normal-modus"
-
+
Set to 0 to disable this feature.
Sett til 0 for å deaktivere denne funksjonen.
-
-
+
+
px
px
-
+
Maximum text width in "Focus Mode"
Maks tekstbredde i "Fokus-modus"
-
+
The maximum width cannot be disabled.
Denne maks-bredden kan ikke deaktiveres.
-
+
Hide document footer in "Focus Mode"
Gjem dokumentets bunnlinje i "Fokus-modus"
-
+
Hide the information bar in the document editor.
Skjul informasjonslinjen i dokumenteditoren.
-
+
Justify the text margins
Juster tekstmarginer
-
+
Minimum text margin
Minimum tekstmargin
-
+
Tab width
Tabulatorens bredde
-
+
The width of a tab key press in the editor and viewer.
Hvor langt tabulatoren hopper i editor og visning.
@@ -2587,92 +2627,92 @@
GuiPreferencesEditor
-
+
Spell Checking
Stavekontroll
-
+
None
Ingen
-
+
Spell check language
Språk for stavekontroll
-
+
Available languages are determined by your system.
Tilgjengelige språk hentes fra operativystemet ditt.
-
+
Word Count
Telling av ord
-
+
Word count interval
Telle-intervall
-
+
seconds
sekunder
-
+
Include project notes in status bar word count
Inkluder prosjektnotater i antallet ord i statuslinjen
-
+
Writing Guides
Hjelpesymboler
-
+
Show tabs and spaces
Synlige tabulatorer og mellomrom
-
+
Show line endings
Synlige linjeender
-
+
Scroll Behaviour
Rullefelt
-
+
Scroll past end of the document
Tillat å rulle forbi slutten av dokumentet
-
+
Also centres the cursor when scrolling.
Sentrerer også markøren når man ruller.
-
+
Typewriter style scrolling when you type
Skrivemaskin-liknende rulling mens du skriver
-
+
Keeps the cursor at a fixed vertical position.
Holder markøren på samme sted vertikalt.
-
+
Minimum position for Typewriter scrolling
Minste avstand for skrivemaskin-rulling
-
+
Percentage of the editor height from the top.
I prosent fra toppen av editor-vinduet.
@@ -2680,95 +2720,95 @@
GuiPreferencesGeneral
-
+
Look and Feel
Utseende
-
+
Main GUI language
Programspråk
-
-
+
+
Requires restart to take effect.
Krever omstart for å tre i kraft.
-
+
Main GUI theme
Fargetema
-
+
General colour theme and icons.
Generelt fargetema og ikoner.
-
+
Editor theme
Syntaksfremheving
-
+
Colour theme for the editor and viewer.
Fargetema for editor og visning.
-
+
Font family
Skriftfamilie
-
+
Font size
Skriftstørrelse
-
+
pt
pt
-
+
GUI Settings
Brukergrensesnitt
-
+
Emphasise partition and chapter labels
Fremhev filnavn for inndeling og kapitler
-
+
Makes them stand out in the project tree.
Får dem til å skille seg ut i prosjekttreet.
-
+
Show full path in document header
Vis full prosjektbane i dokumenthoder
-
+
Add the parent folder names to the header.
Legger til mappene foran dokumentets navn.
-
+
Hide vertical scroll bars in main windows
Skjul vertikale rullefelt i hovedvinduer
-
-
+
+
Scrolling available with mouse wheel and keys only.
Rulling kan bare gjøres med mus og tastatur.
-
+
Hide horizontal scroll bars in main windows
Skjul horisontale rullefelt i hovedvinduer
@@ -2776,109 +2816,109 @@
GuiPreferencesProjects
-
+
Automatic Save
Automatisk lagring
-
+
Save document interval
Interval for lagring av dokument
-
+
How often the document is automatically saved.
Hvor ofte dokumentet lagres automatisk.
-
+
seconds
sekunder
-
+
Save project interval
Interval for lagring av prosjekt
-
+
How often the project is automatically saved.
Hvor ofte prosjektet lagres automatisk.
-
+
Project Backup
Sikkerhetskopi
-
+
Browse
Bla
-
+
Backup storage location
Filbane for sikkerhetskopi
-
-
+
+
Path: {0}
Filbane: {0}
-
+
Run backup when the project is closed
Lag sikkerhetskopi når prosjektet lukkes
-
+
Can be overridden for individual projects in Project Settings.
Kan overstyres fra individuelle prosjektinnstillinger.
-
+
Ask before running backup
Spør før sikkerhetskopi tas
-
+
If off, backups will run in the background.
Hvis avslått, tas sikkerhetskopi automatisk.
-
+
Session Timer
Sesjons-klokke
-
+
Pause the session timer when not writing
Sett klokka på pause når du er inaktiv
-
+
Also pauses when the application window does not have focus.
Pauses også når du ikke jobber i applikasjonens vindu.
-
+
Editor inactive time before pausing timer
Tid uten skriving før klokka settes på pause
-
+
User activity includes typing and changing the content.
Dette måler kun endringer i teksteditoren.
-
+
minutes
minutter
-
+
Backup Directory
Mappe for sikkerhetskopi
@@ -2886,47 +2926,47 @@
GuiPreferencesQuotes
-
+
Quotation Style
Sitattegn
-
+
Single quote open style
Enkelt sitat, venstre side
-
+
The symbol to use for a leading single quote.
Symbol for enkelt sitattegn før et sitat.
-
+
Single quote close style
Enkelt sitat, høyre side
-
+
The symbol to use for a trailing single quote.
Symbol for enkelt sitattegn etter et sitat.
-
+
Double quote open style
Dobbelt sitat, venstre side
-
+
The symbol to use for a leading double quote.
Symbol for dobbelt sitattegn før et sitat.
-
+
Double quote close style
Dobbelt sitat, høyre side
-
+
The symbol to use for a trailing double quote.
Symbol for dobbelt sitattegn etter et sitat.
@@ -2934,59 +2974,59 @@
GuiPreferencesSyntax
-
+
Quotes & Dialogue
Sitattegn & dialog
-
+
Highlight text wrapped in quotes
Fremhev tekst mellom sitattegn
-
-
+
+
Applies to the document editor only.
Gjelder bare for redigeringsvindu.
-
+
Allow open-ended single quotes
Tillat enkle sitattegn som ikke lukkes
-
+
Highlight single-quoted line with no closing quote.
Fremhev sitater som ikke er lukket i samme avsnitt.
-
+
Allow open-ended double quotes
Tillat doble sitattegn som ikke lukkes
-
+
Highlight double-quoted line with no closing quote.
Fremhev sitater som ikke er lukket i samme avsnitt.
-
+
Text Emphasis
Fremheving av tekst
-
+
Add highlight colour to emphasised text
Fremhev formattert tekst
-
+
Text Errors
Feil i tekst
-
+
Highlight multiple or trailing spaces
Fremhev flere eller etterfølgende mellomrom
@@ -3012,72 +3052,72 @@
GuiProjectDetailsContents
-
+
Table of Contents
Innholdsfortegnelse
-
+
Title
Tittel
-
+
Words
Ord
-
+
Pages
Sider
-
+
Page
Side
-
+
Progress
Fremdrift
-
+
Typical word count for a 5 by 8 inch book page with 11 pt font is 350.
Typisk antall ord for en 5 x 8 tommers bokside med 11 pt tekst er 350.
-
+
Start counting page numbers from this page.
Begynn sidetall fra denne siden.
-
+
Assume a new chapter or partition always start on an odd numbered page.
Beregn at nye kapitler og partisjoner alltid starter på en høyreside.
-
+
Words per page
Ord per side
-
+
Count pages from
Tell sider fra
-
+
Clear double pages
Tøm doble sider
-
+
END
SLUTT
-
+
Untitled
Uten tittel
@@ -3085,42 +3125,42 @@
GuiProjectDetailsMain
-
+
Words
Ord
-
+
Chapters
Kapitler
-
+
Scenes
Scener
-
+
Revisions
Revisjoner
-
+
Editing Time
Redigeringstid
-
+
Path
Filbane
-
+
Project: {0}
Prosjekt: {0}
-
+
By {0}
Av {0}
@@ -3128,64 +3168,64 @@
GuiProjectEditMain
-
+
Project Settings
Prosjektinnstillinger
-
+
Project name
Prosjektnavn
-
+
Should be set only once.
Bør bare settes én gang.
-
+
Novel title
Bokens tittel
-
-
+
+
Change whenever you want!
Kan endres når som helst!
-
+
Author(s)
Forfatter(e)
-
+
Project language
Prosjektets språk
-
+
Used when building the manuscript.
Brukes ved bygging av manuskript.
-
+
Default
Ingen valg
-
+
Spell check language
Språk for stavekontroll
-
-
+
+
Overrides main preferences.
Overstyrer valg i innstillinger.
-
+
No backup on close
Slå av sikkerhetskopi
@@ -3193,27 +3233,27 @@
GuiProjectEditReplace
-
+
Text Replace List for Preview and Export
Erstatningsliste for forhåndsvisning og eksport
-
+
Keyword
Kodeord
-
+
Replace With
Erstatt med
-
+
Select item to edit
Velg enhet å redigere
-
+
Save
Lagre
@@ -3221,67 +3261,67 @@
GuiProjectEditStatus
-
+
Novel File Status Levels
Statusnivåer i roman-filer
-
+
Note File Importance Levels
Viktighetsnivåer i notatfiler
-
+
Label
Navn
-
+
Usage
Bruk
-
+
Select item to edit
Velg enhet å redigere
-
+
Colour
Farge
-
+
Save
Lagre
-
+
Select Colour
Velg farge
-
+
New Item
Legg til
-
+
Cannot delete a status item that is in use.
Kan ikke slette status som er i bruk.
-
+
Not in use
Ikke i bruk
-
+
Used once
Brukt ett sted
-
+
Used by {0} items
Brukt {0} steder
@@ -3348,27 +3388,27 @@
GuiProjectSettings
-
+
Project Settings
Prosjektinnstillinger
-
+
Settings
Innstillinger
-
+
Status
Status
-
+
Importance
Viktighet
-
+
Auto-Replace
Autoerstatt
@@ -3543,37 +3583,37 @@
GuiSideBar
-
+
Project Tree View
Prosjektoversikt
-
+
Novel Tree View
Romanoversikt
-
+
Novel Outline View
Disposisjon
-
+
Build Manuscript
Bygg manuskript
-
+
Project Details
Prosjektdetaljer
-
+
Writing Statistics
Statistikk
-
+
Settings
Oppsett
@@ -3615,18 +3655,18 @@
GuiWordList
-
-
+
+
Project Word List
Prosjektets ordliste
-
+
Cannot add a blank word.
Kan ikke legge til et tomt ord.
-
+
The word '{0}' is already in the word list.
Ordet {0} ligger allerede i ordlisten.
@@ -3754,27 +3794,27 @@
CSV-format (.csv)
-
+
JSON Data File
JSON-format
-
+
CSV Data File
CSV-format
-
+
Save Data As
Lagre data som
-
+
{0} file successfully written to:
{0}-filen ble skrevet til:
-
+
Failed to write {0} file.
Kunne ikke skrive {0}-filen.
@@ -4438,27 +4478,27 @@
_DetailsWidget
-
+
Setting
Innstilling
-
+
Value
Verdi
-
+
Name
Navn
-
+
Selection
Utvalg
-
+
Title
Tittel
@@ -4466,37 +4506,37 @@
_FilterTab
-
+
Included in manuscript
Inkludert i manuskript
-
+
Excluded from manuscript
Ekskludert fra manuskript
-
+
Always included
Alltid inkludert
-
+
Always excluded
Alltid ekskludert
-
+
Reset to default
Tilbakestill til standard
-
+
Mark selection as
Merk utvalg som
-
+
Select Root Folders
Velg hovedmapper
@@ -4504,22 +4544,22 @@
_GuiAlert
-
+
Information
Informasjon
-
+
Warning
Advarsel
-
+
Error
Feil
-
+
Question
Spørsmål
@@ -4527,65 +4567,65 @@
_HeadingsTab
-
-
+
+
Hide
Skjul
-
-
+
+
Editing: {0}
Redigerer: {0}
-
-
+
+
None
Ingen
-
+
Title
Tittel
-
+
Chapter Number
Kapittelnummer
-
+
Chapter Number (Word)
Kapittelnummer (som ord)
-
+
Chapter Number (Upper Case Roman)
Kapittelnummer (store romertall)
-
+
Chapter Number (Lower Case Roman)
Kapittelnummer (små romertall)
-
+
Scene Number (In Chapter)
Scenenummer (i kapittel)
-
+
Scene Number (Absolute)
Scenenummer (absolutt)
-
+
Insert
Sett inn
-
+
Apply
Anvend
@@ -4593,27 +4633,27 @@
_PreviewWidget
-
+
Press the "Preview" button to generate ...
Trykk på "Forhåndsvisning"-knappen for å generere ...
-
+
Processing ...
Behandler ...
-
+
Done
Ferdig
-
+
Unknown
Ukjent
-
+
Built
Bygget
@@ -4754,12 +4794,12 @@
_ViewPanelBackRefs
-
+
Document
Dokument
-
+
First Heading
Første overskrift
@@ -4767,22 +4807,22 @@
_ViewPanelKeyWords
-
+
Tag
Knagg
-
+
Document
Dokument
-
+
Heading
Overskrift
-
+
Short Description
Kort beskrivelse
diff --git a/novelwriter/assets/i18n/project_es_419.json b/novelwriter/assets/i18n/project_es_419.json
index 44ca29c3..e0ac7caa 100644
--- a/novelwriter/assets/i18n/project_es_419.json
+++ b/novelwriter/assets/i18n/project_es_419.json
@@ -1,7 +1,18 @@
{
"Synopsis": "Sinopsis",
+ "Short Description": "Breve Descripción",
"Comment": "Comentario",
"Notes": "Notas",
+ "Tag": "Etiqueta",
+ "Point of View": "Punto de Vista",
+ "Focus": "Foco",
+ "Characters": "Personajes",
+ "Plot": "Argumento",
+ "Timeline": "LÃnea de Tiempo",
+ "Locations": "Lugares",
+ "Objects": "Objetos",
+ "Entities": "Entidades",
+ "Custom": "Otros",
"0": "Cero",
"1": "Uno",
"2": "Dos",
diff --git a/novelwriter/assets/i18n/project_fr_FR.json b/novelwriter/assets/i18n/project_fr_FR.json
index 5f81473a..8e134e0c 100644
--- a/novelwriter/assets/i18n/project_fr_FR.json
+++ b/novelwriter/assets/i18n/project_fr_FR.json
@@ -1,7 +1,18 @@
{
"Synopsis": "Synopsis",
+ "Short Description": "Description sommaire",
"Comment": "Commentaire",
"Notes": "Notes",
+ "Tag": "Étiquette",
+ "Point of View": "Point de vue",
+ "Focus": "Focus",
+ "Characters": "Personnages",
+ "Plot": "Intrigue",
+ "Timeline": "Chronologie",
+ "Locations": "Lieux",
+ "Objects": "Objets",
+ "Entities": "Entités",
+ "Custom": "Personnalisé",
"0": "Zero",
"1": "Un",
"2": "Deux",
diff --git a/novelwriter/assets/i18n/project_it_IT.json b/novelwriter/assets/i18n/project_it_IT.json
index e9f9bcaa..2de0c507 100644
--- a/novelwriter/assets/i18n/project_it_IT.json
+++ b/novelwriter/assets/i18n/project_it_IT.json
@@ -1,7 +1,18 @@
{
"Synopsis": "Sinossi",
+ "Short Description": "Breve descrizione",
"Comment": "Commento",
"Notes": "Note",
+ "Tag": "Etichetta",
+ "Point of View": "Punto di vista",
+ "Focus": "Focus",
+ "Characters": "Personaggi",
+ "Plot": "Trama",
+ "Timeline": "Sequenza temporale",
+ "Locations": "Luoghi",
+ "Objects": "Oggetti",
+ "Entities": "Enti",
+ "Custom": "Personalizzato",
"0": "Zero",
"1": "Uno",
"2": "Due",
From 9f1e2d322ec525e4cb08cc5d4bda28ba02e21699 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 17:55:12 +0100
Subject: [PATCH 06/12] Re-order formats menu to be consistent with toolbar
---
novelwriter/gui/mainmenu.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/novelwriter/gui/mainmenu.py b/novelwriter/gui/mainmenu.py
index 6d116596..a2a3f0e5 100644
--- a/novelwriter/gui/mainmenu.py
+++ b/novelwriter/gui/mainmenu.py
@@ -652,18 +652,18 @@ class GuiMainMenu(QMenuBar):
# Shortcodes
self.mShortcodes = self.fmtMenu.addMenu(self.tr("More Formats ..."))
- # Shortcode Italic
- self.aScItalic = self.mShortcodes.addAction(self.tr("Italics (Shortcode)"))
- self.aScItalic.triggered.connect(
- lambda: self.requestDocAction.emit(nwDocAction.SC_ITALIC)
- )
-
# Shortcode Bold
self.aScBold = self.mShortcodes.addAction(self.tr("Bold (Shortcode)"))
self.aScBold.triggered.connect(
lambda: self.requestDocAction.emit(nwDocAction.SC_BOLD)
)
+ # Shortcode Italic
+ self.aScItalic = self.mShortcodes.addAction(self.tr("Italics (Shortcode)"))
+ self.aScItalic.triggered.connect(
+ lambda: self.requestDocAction.emit(nwDocAction.SC_ITALIC)
+ )
+
# Shortcode Strikethrough
self.aScStrike = self.mShortcodes.addAction(self.tr("Strikethrough (Shortcode)"))
self.aScStrike.triggered.connect(
From 847d8ab72625c2885a9a7cacc2ecca3ac4ea0d76 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:15:16 +0100
Subject: [PATCH 07/12] Add importance column to document viewer panel (#1620)
---
novelwriter/gui/docviewerpanel.py | 33 +++++++++++++++++++------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py
index e601565a..df3196fa 100644
--- a/novelwriter/gui/docviewerpanel.py
+++ b/novelwriter/gui/docviewerpanel.py
@@ -334,13 +334,14 @@ class _ViewPanelBackRefs(QTreeWidget):
class _ViewPanelKeyWords(QTreeWidget):
- C_DATA = 0
- C_NAME = 0
- C_EDIT = 1
- C_VIEW = 2
- C_DOC = 3
- C_TITLE = 4
- C_SHORT = 5
+ C_DATA = 0
+ C_NAME = 0
+ C_EDIT = 1
+ C_VIEW = 2
+ C_IMPORT = 3
+ C_DOC = 4
+ C_TITLE = 5
+ C_SHORT = 6
D_TAG = Qt.ItemDataRole.UserRole
@@ -355,7 +356,7 @@ class _ViewPanelKeyWords(QTreeWidget):
cMg = CONFIG.pxInt(6)
self.setHeaderLabels([
- self.tr("Tag"), "", "", self.tr("Document"),
+ self.tr("Tag"), "", "", self.tr("Importance"), self.tr("Document"),
self.tr("Heading"), self.tr("Short Description")
])
self.setIndentation(0)
@@ -371,7 +372,6 @@ class _ViewPanelKeyWords(QTreeWidget):
treeHeader = self.header()
treeHeader.setStretchLastSection(True)
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
- treeHeader.setSectionResizeMode(self.C_NAME, QHeaderView.ResizeMode.ResizeToContents)
treeHeader.setSectionResizeMode(self.C_EDIT, QHeaderView.ResizeMode.Fixed)
treeHeader.setSectionResizeMode(self.C_VIEW, QHeaderView.ResizeMode.Fixed)
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
@@ -417,6 +417,7 @@ class _ViewPanelKeyWords(QTreeWidget):
nwItem.itemType, nwItem.itemClass,
nwItem.itemLayout, nwItem.mainHeading
)
+ impLabel, impIcon = nwItem.getImportStatus(incIcon=True)
iLevel = nwHeaders.H_LEVEL.get(hItem.level, 0) if nwItem.isDocumentLayout() else 5
hDec = SHARED.theme.getHeaderDecorationNarrow(iLevel)
@@ -424,10 +425,12 @@ class _ViewPanelKeyWords(QTreeWidget):
# instance of the QTreeWidgetItem, which has some weird side effects
trItem = self._treeMap[tag] if tag in self._treeMap else QTreeWidgetItem()
- trItem.setText(self.C_NAME, name)
trItem.setIcon(self.C_NAME, self._classIcon)
+ trItem.setText(self.C_NAME, name)
trItem.setIcon(self.C_EDIT, self._editIcon)
trItem.setIcon(self.C_VIEW, self._viewIcon)
+ trItem.setIcon(self.C_IMPORT, impIcon)
+ trItem.setText(self.C_IMPORT, impLabel)
trItem.setIcon(self.C_DOC, docIcon)
trItem.setText(self.C_DOC, nwItem.itemName)
trItem.setText(self.C_TITLE, hItem.title)
@@ -451,14 +454,18 @@ class _ViewPanelKeyWords(QTreeWidget):
def setColumnWidths(self, widths: list[int]) -> None:
"""Set the column widths."""
- if isinstance(widths, list) and len(widths) >= 2:
- self.setColumnWidth(self.C_DOC, CONFIG.pxInt(checkInt(widths[0], 100)))
- self.setColumnWidth(self.C_TITLE, CONFIG.pxInt(checkInt(widths[1], 100)))
+ if isinstance(widths, list) and len(widths) >= 4:
+ self.setColumnWidth(self.C_NAME, CONFIG.pxInt(checkInt(widths[0], 100)))
+ self.setColumnWidth(self.C_IMPORT, CONFIG.pxInt(checkInt(widths[1], 100)))
+ self.setColumnWidth(self.C_DOC, CONFIG.pxInt(checkInt(widths[2], 100)))
+ self.setColumnWidth(self.C_TITLE, CONFIG.pxInt(checkInt(widths[3], 100)))
return
def getColumnWidths(self) -> list[int]:
"""Get the widths of the user-adjustable columns."""
return [
+ CONFIG.rpxInt(self.columnWidth(self.C_NAME)),
+ CONFIG.rpxInt(self.columnWidth(self.C_IMPORT)),
CONFIG.rpxInt(self.columnWidth(self.C_DOC)),
CONFIG.rpxInt(self.columnWidth(self.C_TITLE)),
]
From cbb000a18f17f180dccb727bbfa87b56f9eaea6d Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:18:00 +0100
Subject: [PATCH 08/12] Drop the view column in the viewer panel
---
novelwriter/gui/docviewerpanel.py | 36 ++++++++-----------------------
1 file changed, 9 insertions(+), 27 deletions(-)
diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py
index df3196fa..24dc0559 100644
--- a/novelwriter/gui/docviewerpanel.py
+++ b/novelwriter/gui/docviewerpanel.py
@@ -201,8 +201,7 @@ class _ViewPanelBackRefs(QTreeWidget):
C_DATA = 0
C_DOC = 0
C_EDIT = 1
- C_VIEW = 2
- C_TITLE = 3
+ C_TITLE = 2
D_HANDLE = Qt.ItemDataRole.UserRole
@@ -215,7 +214,7 @@ class _ViewPanelBackRefs(QTreeWidget):
iPx = SHARED.theme.baseIconSize
cMg = CONFIG.pxInt(6)
- self.setHeaderLabels([self.tr("Document"), "", "", self.tr("First Heading")])
+ self.setHeaderLabels([self.tr("Document"), "", self.tr("First Heading")])
self.setIndentation(0)
self.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
self.setIconSize(QSize(iPx, iPx))
@@ -227,15 +226,12 @@ class _ViewPanelBackRefs(QTreeWidget):
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
treeHeader.setSectionResizeMode(self.C_DOC, QHeaderView.ResizeMode.ResizeToContents)
treeHeader.setSectionResizeMode(self.C_EDIT, QHeaderView.ResizeMode.Fixed)
- treeHeader.setSectionResizeMode(self.C_VIEW, QHeaderView.ResizeMode.Fixed)
treeHeader.setSectionResizeMode(self.C_TITLE, QHeaderView.ResizeMode.ResizeToContents)
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
- treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
treeHeader.setSectionsMovable(False)
# Cache Icons Locally
self._editIcon = SHARED.theme.getIcon("edit")
- self._viewIcon = SHARED.theme.getIcon("view")
# Signals
self.clicked.connect(self._treeItemClicked)
@@ -246,11 +242,9 @@ class _ViewPanelBackRefs(QTreeWidget):
def updateTheme(self) -> None:
"""Update theme elements."""
self._editIcon = SHARED.theme.getIcon("edit")
- self._viewIcon = SHARED.theme.getIcon("view")
for i in range(self.topLevelItemCount()):
if item := self.topLevelItem(i):
item.setIcon(self.C_EDIT, self._editIcon)
- item.setIcon(self.C_VIEW, self._viewIcon)
return
def clearContent(self) -> None:
@@ -286,15 +280,13 @@ class _ViewPanelBackRefs(QTreeWidget):
tHandle = index.siblingAtColumn(self.C_DATA).data(self.D_HANDLE)
if index.column() == self.C_EDIT:
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
- elif index.column() == self.C_VIEW:
- self._parent.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
return
@pyqtSlot("QModelIndex")
def _treeItemDoubleClicked(self, index: QModelIndex) -> None:
"""Emit follow tag signal on user double click."""
tHandle = index.siblingAtColumn(self.C_DATA).data(self.D_HANDLE)
- if index.column() == self.C_DOC:
+ if index.column() != self.C_EDIT:
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
return
@@ -318,7 +310,6 @@ class _ViewPanelBackRefs(QTreeWidget):
trItem.setIcon(self.C_DOC, docIcon)
trItem.setText(self.C_DOC, nwItem.itemName)
trItem.setIcon(self.C_EDIT, self._editIcon)
- trItem.setIcon(self.C_VIEW, self._viewIcon)
trItem.setText(self.C_TITLE, hItem.title)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
trItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
@@ -337,11 +328,10 @@ class _ViewPanelKeyWords(QTreeWidget):
C_DATA = 0
C_NAME = 0
C_EDIT = 1
- C_VIEW = 2
- C_IMPORT = 3
- C_DOC = 4
- C_TITLE = 5
- C_SHORT = 6
+ C_IMPORT = 2
+ C_DOC = 3
+ C_TITLE = 4
+ C_SHORT = 5
D_TAG = Qt.ItemDataRole.UserRole
@@ -356,7 +346,7 @@ class _ViewPanelKeyWords(QTreeWidget):
cMg = CONFIG.pxInt(6)
self.setHeaderLabels([
- self.tr("Tag"), "", "", self.tr("Importance"), self.tr("Document"),
+ self.tr("Tag"), "", self.tr("Importance"), self.tr("Document"),
self.tr("Heading"), self.tr("Short Description")
])
self.setIndentation(0)
@@ -373,15 +363,12 @@ class _ViewPanelKeyWords(QTreeWidget):
treeHeader.setStretchLastSection(True)
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
treeHeader.setSectionResizeMode(self.C_EDIT, QHeaderView.ResizeMode.Fixed)
- treeHeader.setSectionResizeMode(self.C_VIEW, QHeaderView.ResizeMode.Fixed)
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
- treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
treeHeader.setSectionsMovable(False)
# Cache Icons Locally
self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[itemClass])
self._editIcon = SHARED.theme.getIcon("edit")
- self._viewIcon = SHARED.theme.getIcon("view")
# Signals
self.clicked.connect(self._treeItemClicked)
@@ -393,11 +380,9 @@ class _ViewPanelKeyWords(QTreeWidget):
"""Update theme elements."""
self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[self._class])
self._editIcon = SHARED.theme.getIcon("edit")
- self._viewIcon = SHARED.theme.getIcon("view")
for i in range(self.topLevelItemCount()):
if item := self.topLevelItem(i):
item.setIcon(self.C_EDIT, self._editIcon)
- item.setIcon(self.C_VIEW, self._viewIcon)
return
def countEntries(self) -> int:
@@ -428,7 +413,6 @@ class _ViewPanelKeyWords(QTreeWidget):
trItem.setIcon(self.C_NAME, self._classIcon)
trItem.setText(self.C_NAME, name)
trItem.setIcon(self.C_EDIT, self._editIcon)
- trItem.setIcon(self.C_VIEW, self._viewIcon)
trItem.setIcon(self.C_IMPORT, impIcon)
trItem.setText(self.C_IMPORT, impLabel)
trItem.setIcon(self.C_DOC, docIcon)
@@ -480,15 +464,13 @@ class _ViewPanelKeyWords(QTreeWidget):
tag = index.siblingAtColumn(self.C_DATA).data(self.D_TAG)
if index.column() == self.C_EDIT:
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.EDIT)
- elif index.column() == self.C_VIEW:
- self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
return
@pyqtSlot("QModelIndex")
def _treeItemDoubleClicked(self, index: QModelIndex) -> None:
"""Emit follow tag signal on user double click."""
tag = index.siblingAtColumn(self.C_DATA).data(self.D_TAG)
- if index.column() == self.C_NAME:
+ if index.column() != self.C_EDIT:
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
return
From 99c00f8b93a992416f4a2c2b0f5a01390004e2a4 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:20:23 +0100
Subject: [PATCH 09/12] Update tests
---
tests/test_gui/test_gui_docviewerpanel.py | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/tests/test_gui/test_gui_docviewerpanel.py b/tests/test_gui/test_gui_docviewerpanel.py
index 5c3370de..3022bb5b 100644
--- a/tests/test_gui/test_gui_docviewerpanel.py
+++ b/tests/test_gui/test_gui_docviewerpanel.py
@@ -95,10 +95,8 @@ def testGuiViewerPanel_BackRefs(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
# Test Update Theme
tabBackRefs._editIcon = None
- tabBackRefs._viewIcon = None
tabBackRefs.updateTheme()
assert isinstance(tabBackRefs._editIcon, QIcon)
- assert isinstance(tabBackRefs._viewIcon, QIcon)
# Click the Edit Button
nwGUI.openDocument(C.hChapterDoc)
@@ -106,11 +104,6 @@ def testGuiViewerPanel_BackRefs(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
tabBackRefs._treeItemClicked(tabBackRefs.model().index(0, tabBackRefs.C_EDIT))
assert nwGUI.docEditor.docHandle == C.hSceneDoc
- # Click the View Button
- assert nwGUI.docViewer.docHandle == hJane
- tabBackRefs._treeItemClicked(tabBackRefs.model().index(0, tabBackRefs.C_VIEW))
- assert nwGUI.docViewer.docHandle == C.hSceneDoc
-
# Double-Click
nwGUI.viewDocument(hJane)
assert nwGUI.docViewer.docHandle == hJane
@@ -194,11 +187,9 @@ def testGuiViewerPanel_Tags(qtbot, monkeypatch, caplog, nwGUI, projPath, mockRnd
# Test Update Theme
charTab._classIcon = None
charTab._editIcon = None
- charTab._viewIcon = None
charTab.updateTheme()
assert isinstance(charTab._classIcon, QIcon)
assert isinstance(charTab._editIcon, QIcon)
- assert isinstance(charTab._viewIcon, QIcon)
# Remove Non-Existing Tag
caplog.clear()
@@ -211,8 +202,6 @@ def testGuiViewerPanel_Tags(qtbot, monkeypatch, caplog, nwGUI, projPath, mockRnd
charTab._treeItemClicked(charTab.model().index(1, charTab.C_EDIT))
assert nwGUI.docEditor.docHandle == hJohn
assert nwGUI.docViewer.docHandle == C.hSceneDoc
- charTab._treeItemClicked(charTab.model().index(1, charTab.C_VIEW))
- assert nwGUI.docViewer.docHandle == hJohn
charTab._treeItemDoubleClicked(charTab.model().index(0, charTab.C_NAME))
assert nwGUI.docViewer.docHandle == hJane
From 62a94850a6487167b96c976adb1f9db4a713f3f0 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:24:55 +0100
Subject: [PATCH 10/12] Add tooltips to all entries in the viewer panel and
update translation file
---
i18n/nw_base.ts | 1075 +++++++++++++++--------------
novelwriter/gui/docviewerpanel.py | 11 +-
2 files changed, 549 insertions(+), 537 deletions(-)
diff --git a/i18n/nw_base.ts b/i18n/nw_base.ts
index 94ce51df..e9653400 100644
--- a/i18n/nw_base.ts
+++ b/i18n/nw_base.ts
@@ -207,72 +207,72 @@
Common
-
+
in the future
-
+
just now
-
+
a minute ago
-
+
{0} minutes ago
-
+
an hour ago
-
+
{0} hours ago
-
+
a day ago
-
+
{0} days ago
-
+
a week ago
-
+
{0} weeks ago
-
+
a month ago
-
+
{0} months ago
-
+
a year ago
-
+
{0} years ago
@@ -626,7 +626,7 @@
GuiAbout
-
+
About novelWriter
@@ -652,27 +652,27 @@
-
+
Website: {0}
-
+
novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5.
-
+
novelWriter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
+
novelWriter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
+
See the Licence tab for the full licence text, or visit the GNU website at {0} for more details.
@@ -776,32 +776,32 @@
GuiDocEditFooter
-
+
Status
-
+
Line: {0} ({1})
-
+
Words: {0} ({1})
-
+
Document size is {0} bytes
-
+
Words: {0} selected
-
+
Character count: {0}
@@ -809,22 +809,22 @@
GuiDocEditHeader
-
+
Toggle Tool Bar
-
+
Search
-
+
Toggle Focus Mode
-
+
Close
@@ -832,58 +832,58 @@
GuiDocEditSearch
-
-
+
+
Search
-
+
Replace
-
+
Case Sensitive
-
+
Whole Words Only
-
+
RegEx Mode
-
+
Loop Search
-
+
Search Next File
-
+
Preserve Case
-
+
Close Search
-
+
Find in current document
-
+
Find and replace in current document
@@ -891,127 +891,127 @@
GuiDocEditor
-
+
Opened Document: {0}
-
+
This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?
-
+
Could not save document.
-
+
Saved Document: {0}
-
+
Spell checking requires the package PyEnchant. It does not appear to be installed.
-
+
Spell check complete
-
+
Document Details
-
+
Created: {0}
-
+
Updated: {0}
-
+
File Location: {0}
-
+
Set as Document Name
-
+
Follow Tag
-
+
Create Note for Tag
-
+
Cut
-
+
Copy
-
+
Paste
-
+
Select All
-
+
Select Word
-
+
Select Paragraph
-
+
Spelling Suggestion(s)
-
+
No Suggestions
-
+
Add Word to Dictionary
-
+
Please select some text before calling replace quotes.
-
+
Do you want to create a new project note for the tag '{0}'?
-
+
Could not create note in a root folder for '{0}'. If one doesn't exist, you must create one first.
@@ -1019,22 +1019,22 @@
GuiDocMerge
-
+
Merge Documents
-
+
Documents to Merge
-
+
Drag and drop items to change the order, or uncheck to exclude.
-
+
Move merged items to Trash
@@ -1042,52 +1042,52 @@
GuiDocSplit
-
+
Split Document
-
+
Document Headers
-
+
Select the maximum level to split into files.
-
+
Split on Header Level 1 (Title)
-
+
Split up to Header Level 2 (Chapter)
-
+
Split up to Header Level 3 (Scene)
-
+
Split up to Header Level 4 (Section)
-
+
Split into a new folder
-
+
Create document hierarchy
-
+
Move split document to Trash
@@ -1095,7 +1095,7 @@
GuiDocToolBar
-
+
Toggle Markdown or Shortcodes Mode
@@ -1103,27 +1103,27 @@
GuiDocViewFooter
-
+
Show/Hide Viewer Panel
-
+
Show Comments
-
+
Show Synopsis Comments
-
+
Comments
-
+
Synopsis
@@ -1131,22 +1131,22 @@
GuiDocViewHeader
-
+
Go Backward
-
+
Go Forward
-
+
Reload
-
+
Close
@@ -1190,12 +1190,12 @@
GuiEditLabel
-
+
Item Label
-
+
Label
@@ -1269,123 +1269,123 @@
GuiMain
-
+
novelWriter is ready ...
-
+
Cannot create a new project when another project is open.
-
+
A project already exists in that location. Please choose another folder.
-
+
Close the current project?
-
-
+
+
Changes are saved automatically.
-
+
Backup the current project?
-
+
The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway?
-
+
Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project.
-
+
The project was locked by the computer '{0}' ({1} {2}), last active on {3}.
-
+
The project index is outdated or broken. Rebuilding index.
-
+
Text files ({0})
-
+
Markdown files ({0})
-
+
novelWriter files ({0})
-
+
All files ({0})
-
+
Import File
-
+
Could not read file. The file must be an existing text file.
-
+
Please open a document to import the text file into.
-
+
Importing the file will overwrite the current content of the document. Do you want to proceed?
-
+
Indexing completed in {0} ms
-
+
The project index has been successfully rebuilt.
-
- Some changes will not be applied until novelWriter has been restarted.
-
-
-
-
+
Could not initialise the dialog.
-
+
Do you want to exit novelWriter?
-
+
+ Some changes will not be applied until novelWriter has been restarted.
+
+
+
+
Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.
@@ -1393,647 +1393,647 @@
GuiMainMenu
-
+
&Project
-
+
New Project
-
+
Open Project
-
+
Save Project
-
+
Close Project
-
+
Project Settings
-
+
Project Details
-
+
Rename Item
-
+
Delete Item
-
+
Empty Trash
-
+
Exit
-
+
&Document
-
+
Open Document
-
+
Save Document
-
+
Close Document
-
+
View Document
-
+
Close Document View
-
+
Show File Details
-
+
Import Text from File
-
+
&Edit
-
+
Undo
-
+
Redo
-
+
Cut
-
+
Copy
-
+
Paste
-
+
Select All
-
+
Select Paragraph
-
+
&View
-
+
Go to Project Tree
-
+
Go to Document Editor
-
+
Go to Outline
-
+
Navigate Backward
-
+
Navigate Forward
-
+
Focus Mode
-
+
Full Screen Mode
-
+
&Insert
-
+
Dashes
-
+
Short Dash
-
+
Long Dash
-
+
Horizontal Bar
-
+
Figure Dash
-
+
Quote Marks
-
+
Left Single Quote
-
+
Right Single Quote
-
+
Left Double Quote
-
+
Right Double Quote
-
+
Alternative Apostrophe
-
+
General Punctuation
-
+
Ellipsis
-
+
Prime
-
+
Double Prime
-
+
White Spaces
-
+
Non-Breaking Space
-
+
Thin Space
-
+
Thin Non-Breaking Space
-
+
Other Symbols
-
+
List Bullet
-
+
Hyphen Bullet
-
+
Flower Mark
-
+
Per Mille
-
+
Degree Symbol
-
+
Minus Sign
-
+
Times Sign
-
+
Division Sign
-
+
Tags and References
-
+
Special Comments
-
+
Synopsis Comment
-
+
Short Description Comment
-
+
Page Break and Space
-
+
Page Break
-
+
Vertical Space (Single)
-
+
Vertical Space (Multi)
-
+
Placeholder Text
-
+
&Format
-
+
Emphasis
-
+
Strong Emphasis
-
+
Strikethrough
-
+
Wrap Double Quotes
-
+
Wrap Single Quotes
-
+
More Formats ...
-
+
Italics (Shortcode)
-
+
Bold (Shortcode)
-
+
Strikethrough (Shortcode)
-
+
Underline
-
+
Superscript
-
+
Subscript
-
+
Header 1 (Partition)
-
+
Header 2 (Chapter)
-
+
Header 3 (Scene)
-
+
Header 4 (Section)
-
+
Novel Title
-
+
Unnumbered Chapter
-
+
Align Left
-
+
Align Centre
-
+
Align Right
-
+
Indent Left
-
+
Indent Right
-
+
Toggle Comment
-
+
Remove Block Format
-
+
Convert Single Quotes
-
+
Convert Double Quotes
-
+
Remove In-Paragraph Breaks
-
+
&Search
-
+
Find
-
+
Replace
-
+
Find Next
-
+
Find Previous
-
+
Replace Next
-
+
&Tools
-
+
Check Spelling
-
+
Spell Check Language
-
+
Default
-
+
Re-Run Spell Check
-
+
Project Word List
-
+
Add Dictionaries
-
+
Rebuild Index
-
+
Backup Project
-
+
Build Manuscript
-
+
Writing Statistics
-
+
Preferences
-
+
&Help
-
+
About novelWriter
-
+
About Qt5
-
+
User Manual (Online)
-
+
User Manual (PDF)
-
+
Report an Issue (GitHub)
-
+
Ask a Question (GitHub)
-
+
The novelWriter Website
-
+
Check for New Release
@@ -2041,38 +2041,38 @@
GuiMainStatus
-
-
+
+
None
-
+
Editor
-
+
Project
-
+
Session Time
-
+
Words: {0} ({1})
-
+
Project word count (session change)
-
+
Novel word count (session change)
@@ -2192,58 +2192,58 @@
GuiNovelToolBar
-
+
Outline of {0}
-
+
Novel Root
-
+
Refresh
-
+
Last Column
-
+
Hidden
-
+
Point of View Character
-
+
Focus Character
-
+
Novel Plot
-
-
+
+
Column Size
-
+
More Options
-
+
Maximum column size in %
@@ -2251,7 +2251,7 @@
GuiNovelTree
-
+
No meta data
@@ -2259,65 +2259,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+
Title
-
+
Chapter
-
+
Scene
-
+
Section
-
+
Document
-
+
Status
-
+
Characters
-
+
Words
-
+
Paragraphs
-
+
Synopsis
-
+
Title Details
-
+
Reference Tags
@@ -2325,7 +2325,7 @@
GuiOutlineHeaderMenu
-
+
Select Columns
@@ -2346,42 +2346,42 @@
GuiPreferences
-
+
Preferences
-
+
General
-
+
Projects
-
+
Documents
-
+
Editor
-
+
Highlighting
-
+
Automation
-
+
Quotes
@@ -2389,103 +2389,103 @@
GuiPreferencesAutomation
-
+
Automatic Features
-
+
Auto-select word under cursor
-
+
Apply formatting to word under cursor if no selection is made.
-
+
Auto-replace text as you type
-
+
Allow the editor to replace symbols as you type.
-
+
Replace as You Type
-
+
Auto-replace single quotes
-
-
+
+
Try to guess which is an opening or a closing quote.
-
+
Auto-replace double quotes
-
+
Auto-replace dashes
-
+
Double and triple hyphens become short and long dashes.
-
+
Auto-replace dots
-
+
Three consecutive dots become ellipsis.
-
+
Automatic Padding
-
+
Insert non-breaking space before
-
+
Automatically add space before any of these symbols.
-
+
Insert non-breaking space after
-
+
Automatically add space after any of these symbols.
-
+
Use thin space instead
-
+
Inserts a thin space instead of a regular space.
@@ -2493,93 +2493,93 @@
GuiPreferencesDocuments
-
+
Text Style
-
+
Font family
-
-
-
+
+
+
Applies to both document editor and viewer.
-
+
Font size
-
+
pt
-
+
Text Flow
-
+
Maximum text width in "Normal Mode"
-
+
Set to 0 to disable this feature.
-
-
+
+
px
-
+
Maximum text width in "Focus Mode"
-
+
The maximum width cannot be disabled.
-
+
Hide document footer in "Focus Mode"
-
+
Hide the information bar in the document editor.
-
+
Justify the text margins
-
+
Minimum text margin
-
+
Tab width
-
+
The width of a tab key press in the editor and viewer.
@@ -2587,92 +2587,92 @@
GuiPreferencesEditor
-
+
Spell Checking
-
+
None
-
+
Spell check language
-
+
Available languages are determined by your system.
-
+
Word Count
-
+
Word count interval
-
+
seconds
-
+
Include project notes in status bar word count
-
+
Writing Guides
-
+
Show tabs and spaces
-
+
Show line endings
-
+
Scroll Behaviour
-
+
Scroll past end of the document
-
+
Also centres the cursor when scrolling.
-
+
Typewriter style scrolling when you type
-
+
Keeps the cursor at a fixed vertical position.
-
+
Minimum position for Typewriter scrolling
-
+
Percentage of the editor height from the top.
@@ -2680,95 +2680,95 @@
GuiPreferencesGeneral
-
+
Look and Feel
-
+
Main GUI language
-
-
+
+
Requires restart to take effect.
-
+
Main GUI theme
-
+
General colour theme and icons.
-
+
Editor theme
-
+
Colour theme for the editor and viewer.
-
+
Font family
-
+
Font size
-
+
pt
-
+
GUI Settings
-
+
Emphasise partition and chapter labels
-
+
Makes them stand out in the project tree.
-
+
Show full path in document header
-
+
Add the parent folder names to the header.
-
+
Hide vertical scroll bars in main windows
-
-
+
+
Scrolling available with mouse wheel and keys only.
-
+
Hide horizontal scroll bars in main windows
@@ -2776,109 +2776,109 @@
GuiPreferencesProjects
-
+
Automatic Save
-
+
Save document interval
-
+
How often the document is automatically saved.
-
+
seconds
-
+
Save project interval
-
+
How often the project is automatically saved.
-
+
Project Backup
-
+
Browse
-
+
Backup storage location
-
-
+
+
Path: {0}
-
+
Run backup when the project is closed
-
+
Can be overridden for individual projects in Project Settings.
-
+
Ask before running backup
-
+
If off, backups will run in the background.
-
+
Session Timer
-
+
Pause the session timer when not writing
-
+
Also pauses when the application window does not have focus.
-
+
Editor inactive time before pausing timer
-
+
User activity includes typing and changing the content.
-
+
minutes
-
+
Backup Directory
@@ -2886,47 +2886,47 @@
GuiPreferencesQuotes
-
+
Quotation Style
-
+
Single quote open style
-
+
The symbol to use for a leading single quote.
-
+
Single quote close style
-
+
The symbol to use for a trailing single quote.
-
+
Double quote open style
-
+
The symbol to use for a leading double quote.
-
+
Double quote close style
-
+
The symbol to use for a trailing double quote.
@@ -2934,59 +2934,59 @@
GuiPreferencesSyntax
-
+
Quotes & Dialogue
-
+
Highlight text wrapped in quotes
-
-
+
+
Applies to the document editor only.
-
+
Allow open-ended single quotes
-
+
Highlight single-quoted line with no closing quote.
-
+
Allow open-ended double quotes
-
+
Highlight double-quoted line with no closing quote.
-
+
Text Emphasis
-
+
Add highlight colour to emphasised text
-
+
Text Errors
-
+
Highlight multiple or trailing spaces
@@ -3012,72 +3012,72 @@
GuiProjectDetailsContents
-
+
Table of Contents
-
+
Title
-
+
Words
-
+
Pages
-
+
Page
-
+
Progress
-
+
Typical word count for a 5 by 8 inch book page with 11 pt font is 350.
-
+
Start counting page numbers from this page.
-
+
Assume a new chapter or partition always start on an odd numbered page.
-
+
Words per page
-
+
Count pages from
-
+
Clear double pages
-
+
END
-
+
Untitled
@@ -3085,42 +3085,42 @@
GuiProjectDetailsMain
-
+
Words
-
+
Chapters
-
+
Scenes
-
+
Revisions
-
+
Editing Time
-
+
Path
-
+
Project: {0}
-
+
By {0}
@@ -3128,64 +3128,64 @@
GuiProjectEditMain
-
+
Project Settings
-
+
Project name
-
+
Should be set only once.
-
+
Novel title
-
-
+
+
Change whenever you want!
-
+
Author(s)
-
+
Project language
-
+
Used when building the manuscript.
-
+
Default
-
+
Spell check language
-
-
+
+
Overrides main preferences.
-
+
No backup on close
@@ -3193,27 +3193,27 @@
GuiProjectEditReplace
-
+
Text Replace List for Preview and Export
-
+
Keyword
-
+
Replace With
-
+
Select item to edit
-
+
Save
@@ -3221,67 +3221,67 @@
GuiProjectEditStatus
-
+
Novel File Status Levels
-
+
Note File Importance Levels
-
+
Label
-
+
Usage
-
+
Select item to edit
-
+
Colour
-
+
Save
-
+
Select Colour
-
+
New Item
-
+
Cannot delete a status item that is in use.
-
+
Not in use
-
+
Used once
-
+
Used by {0} items
@@ -3348,27 +3348,27 @@
GuiProjectSettings
-
+
Project Settings
-
+
Settings
-
+
Status
-
+
Importance
-
+
Auto-Replace
@@ -3543,37 +3543,37 @@
GuiSideBar
-
+
Project Tree View
-
+
Novel Tree View
-
+
Novel Outline View
-
+
Build Manuscript
-
+
Project Details
-
+
Writing Statistics
-
+
Settings
@@ -3615,18 +3615,18 @@
GuiWordList
-
-
+
+
Project Word List
-
+
Cannot add a blank word.
-
+
The word '{0}' is already in the word list.
@@ -3754,27 +3754,27 @@
-
+
JSON Data File
-
+
CSV Data File
-
+
Save Data As
-
+
{0} file successfully written to:
-
+
Failed to write {0} file.
@@ -4438,27 +4438,27 @@
_DetailsWidget
-
+
Setting
-
+
Value
-
+
Name
-
+
Selection
-
+
Title
@@ -4466,37 +4466,37 @@
_FilterTab
-
+
Included in manuscript
-
+
Excluded from manuscript
-
+
Always included
-
+
Always excluded
-
+
Reset to default
-
+
Mark selection as
-
+
Select Root Folders
@@ -4504,22 +4504,22 @@
_GuiAlert
-
+
Information
-
+
Warning
-
+
Error
-
+
Question
@@ -4527,65 +4527,65 @@
_HeadingsTab
-
-
+
+
Hide
-
-
+
+
Editing: {0}
-
-
+
+
None
-
+
Title
-
+
Chapter Number
-
+
Chapter Number (Word)
-
+
Chapter Number (Upper Case Roman)
-
+
Chapter Number (Lower Case Roman)
-
+
Scene Number (In Chapter)
-
+
Scene Number (Absolute)
-
+
Insert
-
+
Apply
@@ -4593,27 +4593,27 @@
_PreviewWidget
-
+
Press the "Preview" button to generate ...
-
+
Processing ...
-
+
Done
-
+
Unknown
-
+
Built
@@ -4754,12 +4754,12 @@
_ViewPanelBackRefs
-
+
Document
-
+
First Heading
@@ -4767,22 +4767,27 @@
_ViewPanelKeyWords
-
+
Tag
-
+
+ Importance
+
+
+
+
Document
-
+
Heading
-
+
Short Description
diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py
index 24dc0559..308d3aef 100644
--- a/novelwriter/gui/docviewerpanel.py
+++ b/novelwriter/gui/docviewerpanel.py
@@ -309,9 +309,11 @@ class _ViewPanelBackRefs(QTreeWidget):
trItem.setIcon(self.C_DOC, docIcon)
trItem.setText(self.C_DOC, nwItem.itemName)
+ trItem.setToolTip(self.C_DOC, nwItem.itemName)
trItem.setIcon(self.C_EDIT, self._editIcon)
- trItem.setText(self.C_TITLE, hItem.title)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
+ trItem.setText(self.C_TITLE, hItem.title)
+ trItem.setToolTip(self.C_TITLE, hItem.title)
trItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
if tKey not in self._treeMap:
@@ -412,14 +414,19 @@ class _ViewPanelKeyWords(QTreeWidget):
trItem.setIcon(self.C_NAME, self._classIcon)
trItem.setText(self.C_NAME, name)
+ trItem.setToolTip(self.C_NAME, name)
trItem.setIcon(self.C_EDIT, self._editIcon)
trItem.setIcon(self.C_IMPORT, impIcon)
trItem.setText(self.C_IMPORT, impLabel)
+ trItem.setToolTip(self.C_IMPORT, impLabel)
trItem.setIcon(self.C_DOC, docIcon)
trItem.setText(self.C_DOC, nwItem.itemName)
- trItem.setText(self.C_TITLE, hItem.title)
+ trItem.setToolTip(self.C_DOC, nwItem.itemName)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
+ trItem.setText(self.C_TITLE, hItem.title)
+ trItem.setToolTip(self.C_TITLE, hItem.title)
trItem.setText(self.C_SHORT, hItem.synopsis)
+ trItem.setToolTip(self.C_SHORT, hItem.synopsis)
trItem.setData(self.C_DATA, self.D_TAG, tag)
if tag not in self._treeMap:
From cb485c5c8626d41735c021030a6cdc76ccc78414 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:37:47 +0100
Subject: [PATCH 11/12] Revert deleting the view button in viewer panel, but
keep the double click change
---
novelwriter/gui/docviewerpanel.py | 36 +++++++++++++++++------
tests/test_gui/test_gui_docviewerpanel.py | 11 +++++++
2 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py
index 308d3aef..7837a3fd 100644
--- a/novelwriter/gui/docviewerpanel.py
+++ b/novelwriter/gui/docviewerpanel.py
@@ -201,7 +201,8 @@ class _ViewPanelBackRefs(QTreeWidget):
C_DATA = 0
C_DOC = 0
C_EDIT = 1
- C_TITLE = 2
+ C_VIEW = 2
+ C_TITLE = 3
D_HANDLE = Qt.ItemDataRole.UserRole
@@ -214,7 +215,7 @@ class _ViewPanelBackRefs(QTreeWidget):
iPx = SHARED.theme.baseIconSize
cMg = CONFIG.pxInt(6)
- self.setHeaderLabels([self.tr("Document"), "", self.tr("First Heading")])
+ self.setHeaderLabels([self.tr("Document"), "", "", self.tr("First Heading")])
self.setIndentation(0)
self.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
self.setIconSize(QSize(iPx, iPx))
@@ -226,12 +227,15 @@ class _ViewPanelBackRefs(QTreeWidget):
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
treeHeader.setSectionResizeMode(self.C_DOC, QHeaderView.ResizeMode.ResizeToContents)
treeHeader.setSectionResizeMode(self.C_EDIT, QHeaderView.ResizeMode.Fixed)
+ treeHeader.setSectionResizeMode(self.C_VIEW, QHeaderView.ResizeMode.Fixed)
treeHeader.setSectionResizeMode(self.C_TITLE, QHeaderView.ResizeMode.ResizeToContents)
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
+ treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
treeHeader.setSectionsMovable(False)
# Cache Icons Locally
self._editIcon = SHARED.theme.getIcon("edit")
+ self._viewIcon = SHARED.theme.getIcon("view")
# Signals
self.clicked.connect(self._treeItemClicked)
@@ -242,9 +246,11 @@ class _ViewPanelBackRefs(QTreeWidget):
def updateTheme(self) -> None:
"""Update theme elements."""
self._editIcon = SHARED.theme.getIcon("edit")
+ self._viewIcon = SHARED.theme.getIcon("view")
for i in range(self.topLevelItemCount()):
if item := self.topLevelItem(i):
item.setIcon(self.C_EDIT, self._editIcon)
+ item.setIcon(self.C_VIEW, self._viewIcon)
return
def clearContent(self) -> None:
@@ -280,13 +286,15 @@ class _ViewPanelBackRefs(QTreeWidget):
tHandle = index.siblingAtColumn(self.C_DATA).data(self.D_HANDLE)
if index.column() == self.C_EDIT:
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
+ elif index.column() == self.C_VIEW:
+ self._parent.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
return
@pyqtSlot("QModelIndex")
def _treeItemDoubleClicked(self, index: QModelIndex) -> None:
"""Emit follow tag signal on user double click."""
tHandle = index.siblingAtColumn(self.C_DATA).data(self.D_HANDLE)
- if index.column() != self.C_EDIT:
+ if index.column() not in (self.C_EDIT, self.C_VIEW):
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
return
@@ -311,6 +319,7 @@ class _ViewPanelBackRefs(QTreeWidget):
trItem.setText(self.C_DOC, nwItem.itemName)
trItem.setToolTip(self.C_DOC, nwItem.itemName)
trItem.setIcon(self.C_EDIT, self._editIcon)
+ trItem.setIcon(self.C_VIEW, self._viewIcon)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
trItem.setText(self.C_TITLE, hItem.title)
trItem.setToolTip(self.C_TITLE, hItem.title)
@@ -330,10 +339,11 @@ class _ViewPanelKeyWords(QTreeWidget):
C_DATA = 0
C_NAME = 0
C_EDIT = 1
- C_IMPORT = 2
- C_DOC = 3
- C_TITLE = 4
- C_SHORT = 5
+ C_VIEW = 2
+ C_IMPORT = 3
+ C_DOC = 4
+ C_TITLE = 5
+ C_SHORT = 6
D_TAG = Qt.ItemDataRole.UserRole
@@ -348,7 +358,7 @@ class _ViewPanelKeyWords(QTreeWidget):
cMg = CONFIG.pxInt(6)
self.setHeaderLabels([
- self.tr("Tag"), "", self.tr("Importance"), self.tr("Document"),
+ self.tr("Tag"), "", "", self.tr("Importance"), self.tr("Document"),
self.tr("Heading"), self.tr("Short Description")
])
self.setIndentation(0)
@@ -365,12 +375,15 @@ class _ViewPanelKeyWords(QTreeWidget):
treeHeader.setStretchLastSection(True)
treeHeader.setMinimumSectionSize(iPx + cMg) # See Issue #1627
treeHeader.setSectionResizeMode(self.C_EDIT, QHeaderView.ResizeMode.Fixed)
+ treeHeader.setSectionResizeMode(self.C_VIEW, QHeaderView.ResizeMode.Fixed)
treeHeader.resizeSection(self.C_EDIT, iPx + cMg)
+ treeHeader.resizeSection(self.C_VIEW, iPx + cMg)
treeHeader.setSectionsMovable(False)
# Cache Icons Locally
self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[itemClass])
self._editIcon = SHARED.theme.getIcon("edit")
+ self._viewIcon = SHARED.theme.getIcon("view")
# Signals
self.clicked.connect(self._treeItemClicked)
@@ -382,9 +395,11 @@ class _ViewPanelKeyWords(QTreeWidget):
"""Update theme elements."""
self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[self._class])
self._editIcon = SHARED.theme.getIcon("edit")
+ self._viewIcon = SHARED.theme.getIcon("view")
for i in range(self.topLevelItemCount()):
if item := self.topLevelItem(i):
item.setIcon(self.C_EDIT, self._editIcon)
+ item.setIcon(self.C_VIEW, self._viewIcon)
return
def countEntries(self) -> int:
@@ -416,6 +431,7 @@ class _ViewPanelKeyWords(QTreeWidget):
trItem.setText(self.C_NAME, name)
trItem.setToolTip(self.C_NAME, name)
trItem.setIcon(self.C_EDIT, self._editIcon)
+ trItem.setIcon(self.C_VIEW, self._viewIcon)
trItem.setIcon(self.C_IMPORT, impIcon)
trItem.setText(self.C_IMPORT, impLabel)
trItem.setToolTip(self.C_IMPORT, impLabel)
@@ -471,13 +487,15 @@ class _ViewPanelKeyWords(QTreeWidget):
tag = index.siblingAtColumn(self.C_DATA).data(self.D_TAG)
if index.column() == self.C_EDIT:
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.EDIT)
+ elif index.column() == self.C_VIEW:
+ self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
return
@pyqtSlot("QModelIndex")
def _treeItemDoubleClicked(self, index: QModelIndex) -> None:
"""Emit follow tag signal on user double click."""
tag = index.siblingAtColumn(self.C_DATA).data(self.D_TAG)
- if index.column() != self.C_EDIT:
+ if index.column() not in (self.C_EDIT, self.C_VIEW):
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
return
diff --git a/tests/test_gui/test_gui_docviewerpanel.py b/tests/test_gui/test_gui_docviewerpanel.py
index 3022bb5b..5c3370de 100644
--- a/tests/test_gui/test_gui_docviewerpanel.py
+++ b/tests/test_gui/test_gui_docviewerpanel.py
@@ -95,8 +95,10 @@ def testGuiViewerPanel_BackRefs(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
# Test Update Theme
tabBackRefs._editIcon = None
+ tabBackRefs._viewIcon = None
tabBackRefs.updateTheme()
assert isinstance(tabBackRefs._editIcon, QIcon)
+ assert isinstance(tabBackRefs._viewIcon, QIcon)
# Click the Edit Button
nwGUI.openDocument(C.hChapterDoc)
@@ -104,6 +106,11 @@ def testGuiViewerPanel_BackRefs(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
tabBackRefs._treeItemClicked(tabBackRefs.model().index(0, tabBackRefs.C_EDIT))
assert nwGUI.docEditor.docHandle == C.hSceneDoc
+ # Click the View Button
+ assert nwGUI.docViewer.docHandle == hJane
+ tabBackRefs._treeItemClicked(tabBackRefs.model().index(0, tabBackRefs.C_VIEW))
+ assert nwGUI.docViewer.docHandle == C.hSceneDoc
+
# Double-Click
nwGUI.viewDocument(hJane)
assert nwGUI.docViewer.docHandle == hJane
@@ -187,9 +194,11 @@ def testGuiViewerPanel_Tags(qtbot, monkeypatch, caplog, nwGUI, projPath, mockRnd
# Test Update Theme
charTab._classIcon = None
charTab._editIcon = None
+ charTab._viewIcon = None
charTab.updateTheme()
assert isinstance(charTab._classIcon, QIcon)
assert isinstance(charTab._editIcon, QIcon)
+ assert isinstance(charTab._viewIcon, QIcon)
# Remove Non-Existing Tag
caplog.clear()
@@ -202,6 +211,8 @@ def testGuiViewerPanel_Tags(qtbot, monkeypatch, caplog, nwGUI, projPath, mockRnd
charTab._treeItemClicked(charTab.model().index(1, charTab.C_EDIT))
assert nwGUI.docEditor.docHandle == hJohn
assert nwGUI.docViewer.docHandle == C.hSceneDoc
+ charTab._treeItemClicked(charTab.model().index(1, charTab.C_VIEW))
+ assert nwGUI.docViewer.docHandle == hJohn
charTab._treeItemDoubleClicked(charTab.model().index(0, charTab.C_NAME))
assert nwGUI.docViewer.docHandle == hJane
From 553b76cafce60e21799849f606e300e7b2f6b8b0 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 3 Dec 2023 18:58:01 +0100
Subject: [PATCH 12/12] Update en_US and nb_NO translations
---
i18n/nw_en_US.ts | 21 +++++++++++++--------
i18n/nw_nb_NO.ts | 21 +++++++++++++--------
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/i18n/nw_en_US.ts b/i18n/nw_en_US.ts
index 69efc0af..38b9191e 100644
--- a/i18n/nw_en_US.ts
+++ b/i18n/nw_en_US.ts
@@ -1834,13 +1834,13 @@
- Italics (Shortcode)
- Italics (Shortcode)
+ Bold (Shortcode)
+ Bold (Shortcode)
- Bold (Shortcode)
- Bold (Shortcode)
+ Italics (Shortcode)
+ Italics (Shortcode)
@@ -4807,22 +4807,27 @@
_ViewPanelKeyWords
-
+
Tag
Tag
-
+
+ Importance
+ Importance
+
+
+
Document
Document
-
+
Heading
Heading
-
+
Short Description
Short Description
diff --git a/i18n/nw_nb_NO.ts b/i18n/nw_nb_NO.ts
index f64e6c71..bc7ebf7c 100644
--- a/i18n/nw_nb_NO.ts
+++ b/i18n/nw_nb_NO.ts
@@ -1834,13 +1834,13 @@
- Italics (Shortcode)
- Kursiv (kortkode)
+ Bold (Shortcode)
+ Fet (kortkode)
- Bold (Shortcode)
- Fet (kortkode)
+ Italics (Shortcode)
+ Kursiv (kortkode)
@@ -4807,22 +4807,27 @@
_ViewPanelKeyWords
-
+
Tag
Knagg
-
+
+ Importance
+ Viktighet
+
+
+
Document
Dokument
-
+
Heading
Overskrift
-
+
Short Description
Kort beskrivelse