From a96ccf84222a944b7a24a5265ee4de00fd83e486 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Wed, 13 Nov 2024 23:16:54 +0100
Subject: [PATCH] Add icons for text margins
---
.../assets/icons/typicons_dark/icons.conf | 6 +++
.../typicons_dark/mixed_margin-bottom.svg | 6 +++
.../icons/typicons_dark/mixed_margin-left.svg | 6 +++
.../typicons_dark/mixed_margin-right.svg | 6 +++
.../icons/typicons_dark/mixed_margin-top.svg | 6 +++
.../icons/typicons_dark/mixed_size-height.svg | 6 +++
.../icons/typicons_dark/mixed_size-width.svg | 6 +++
.../assets/icons/typicons_light/icons.conf | 6 +++
.../typicons_light/mixed_margin-bottom.svg | 6 +++
.../typicons_light/mixed_margin-left.svg | 6 +++
.../typicons_light/mixed_margin-right.svg | 6 +++
.../icons/typicons_light/mixed_margin-top.svg | 6 +++
.../typicons_light/mixed_size-height.svg | 6 +++
.../icons/typicons_light/mixed_size-width.svg | 6 +++
novelwriter/extensions/configlayout.py | 8 +++-
novelwriter/gui/theme.py | 3 +-
novelwriter/tools/manussettings.py | 43 +++++++++++--------
17 files changed, 116 insertions(+), 22 deletions(-)
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_size-height.svg
create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_size-width.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_margin-left.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_margin-right.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_margin-top.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_size-height.svg
create mode 100644 novelwriter/assets/icons/typicons_light/mixed_size-width.svg
diff --git a/novelwriter/assets/icons/typicons_dark/icons.conf b/novelwriter/assets/icons/typicons_dark/icons.conf
index b70c1da5..c9f7a546 100644
--- a/novelwriter/assets/icons/typicons_dark/icons.conf
+++ b/novelwriter/assets/icons/typicons_dark/icons.conf
@@ -64,6 +64,10 @@ font = nw_font.svg
forward = typ_chevron-right.svg
import = mixed_import.svg
list = typ_th-list.svg
+margin_bottom = mixed_margin-bottom.svg
+margin_left = mixed_margin-left.svg
+margin_right = mixed_margin-right.svg
+margin_top = mixed_margin-top.svg
maximise = typ_arrow-maximise.svg
menu = typ_th-dot-menu.svg
minimise = typ_arrow-minimise.svg
@@ -94,6 +98,8 @@ search_regex = nw_search-regex.svg
search_replace = mixed_search-replace.svg
search_word = nw_search-word.svg
settings = typ_cog.svg
+size_height = mixed_size-height.svg
+size_width = mixed_size-width.svg
star = typ_star.svg
status_idle = typ_media-pause-grey.svg
status_lang = typ_globe-grey.svg
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg b/novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg
new file mode 100644
index 00000000..986b19e2
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_margin-bottom.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg b/novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg
new file mode 100644
index 00000000..84358b19
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_margin-left.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg b/novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg
new file mode 100644
index 00000000..a828f7c2
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_margin-right.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg b/novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg
new file mode 100644
index 00000000..a7e3933c
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_margin-top.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_size-height.svg b/novelwriter/assets/icons/typicons_dark/mixed_size-height.svg
new file mode 100644
index 00000000..0c05bcff
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_size-height.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/mixed_size-width.svg b/novelwriter/assets/icons/typicons_dark/mixed_size-width.svg
new file mode 100644
index 00000000..6c8c7622
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/mixed_size-width.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/icons.conf b/novelwriter/assets/icons/typicons_light/icons.conf
index cf18d966..c3cc9b76 100644
--- a/novelwriter/assets/icons/typicons_light/icons.conf
+++ b/novelwriter/assets/icons/typicons_light/icons.conf
@@ -64,6 +64,10 @@ font = nw_font.svg
forward = typ_chevron-right.svg
import = mixed_import.svg
list = typ_th-list.svg
+margin_bottom = mixed_margin-bottom.svg
+margin_left = mixed_margin-left.svg
+margin_right = mixed_margin-right.svg
+margin_top = mixed_margin-top.svg
maximise = typ_arrow-maximise.svg
menu = typ_th-dot-menu.svg
minimise = typ_arrow-minimise.svg
@@ -94,6 +98,8 @@ search_regex = nw_search-regex.svg
search_replace = mixed_search-replace.svg
search_word = nw_search-word.svg
settings = typ_cog.svg
+size_height = mixed_size-height.svg
+size_width = mixed_size-width.svg
star = typ_star.svg
status_idle = typ_media-pause-grey.svg
status_lang = typ_globe-grey.svg
diff --git a/novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg b/novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg
new file mode 100644
index 00000000..86347296
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_margin-bottom.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/mixed_margin-left.svg b/novelwriter/assets/icons/typicons_light/mixed_margin-left.svg
new file mode 100644
index 00000000..436f8f8d
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_margin-left.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/mixed_margin-right.svg b/novelwriter/assets/icons/typicons_light/mixed_margin-right.svg
new file mode 100644
index 00000000..4462801c
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_margin-right.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/mixed_margin-top.svg b/novelwriter/assets/icons/typicons_light/mixed_margin-top.svg
new file mode 100644
index 00000000..4eb684f9
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_margin-top.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/mixed_size-height.svg b/novelwriter/assets/icons/typicons_light/mixed_size-height.svg
new file mode 100644
index 00000000..4deb1a4c
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_size-height.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/mixed_size-width.svg b/novelwriter/assets/icons/typicons_light/mixed_size-width.svg
new file mode 100644
index 00000000..b63fe98d
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/mixed_size-width.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/novelwriter/extensions/configlayout.py b/novelwriter/extensions/configlayout.py
index a34b7cde..2bd48032 100644
--- a/novelwriter/extensions/configlayout.py
+++ b/novelwriter/extensions/configlayout.py
@@ -27,7 +27,7 @@ along with this program. If not, see .
"""
from __future__ import annotations
-from PyQt5.QtGui import QColor, QFont, QPalette
+from PyQt5.QtGui import QColor, QFont, QPalette, QPixmap
from PyQt5.QtWidgets import (
QAbstractButton, QFrame, QHBoxLayout, QLabel, QLayout, QScrollArea,
QVBoxLayout, QWidget
@@ -183,7 +183,7 @@ class NScrollableForm(QScrollArea):
def addRow(
self,
label: str | None,
- widget: QWidget | list[QWidget | str | int],
+ widget: QWidget | list[QWidget | QPixmap | str | int],
helpText: str = "",
unit: str | None = None,
button: QWidget | None = None,
@@ -200,6 +200,10 @@ class NScrollableForm(QScrollArea):
for item in widget:
if isinstance(item, QWidget):
wBox.addWidget(item)
+ elif isinstance(item, QPixmap):
+ icon = QLabel(self)
+ icon.setPixmap(item)
+ wBox.addWidget(icon)
elif isinstance(item, str):
wBox.addWidget(QLabel(item, self))
elif isinstance(item, int):
diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py
index 340951cf..b4ef5056 100644
--- a/novelwriter/gui/theme.py
+++ b/novelwriter/gui/theme.py
@@ -500,7 +500,8 @@ class GuiIcons:
# Format Icons
"fmt_bold", "fmt_bold-md", "fmt_italic", "fmt_italic-md", "fmt_mark", "fmt_strike",
- "fmt_strike-md", "fmt_subscript", "fmt_superscript", "fmt_underline",
+ "fmt_strike-md", "fmt_subscript", "fmt_superscript", "fmt_underline", "margin_bottom",
+ "margin_left", "margin_right", "margin_top", "size_height", "size_width",
# General Button Icons
"add", "add_document", "backward", "bookmark", "browse", "checked", "close", "copy",
diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py
index 098b1ce7..f4c658e7 100644
--- a/novelwriter/tools/manussettings.py
+++ b/novelwriter/tools/manussettings.py
@@ -964,15 +964,6 @@ class _FormattingTab(NScrollableForm):
spW = 6*SHARED.theme.textNWidth
dbW = 8*SHARED.theme.textNWidth
- # Common Translations
-
- trW = self.tr("W:") # Width
- trH = self.tr("H:") # Height
- trT = self.tr("T:") # Top
- trB = self.tr("B:") # Bottom
- trL = self.tr("L:") # Left
- trR = self.tr("R:") # Right
-
# Text Content
# ============
@@ -1084,6 +1075,13 @@ class _FormattingTab(NScrollableForm):
self._sidebar.addButton(title, section)
self.addGroupLabel(title, section)
+ pixT = SHARED.theme.getPixmap("margin_top", (iPx, iPx))
+ pixB = SHARED.theme.getPixmap("margin_bottom", (iPx, iPx))
+ pixL = SHARED.theme.getPixmap("margin_left", (iPx, iPx))
+ pixR = SHARED.theme.getPixmap("margin_right", (iPx, iPx))
+ pixH = SHARED.theme.getPixmap("size_height", (iPx, iPx))
+ pixW = SHARED.theme.getPixmap("size_width", (iPx, iPx))
+
# Title
self.titleMarginT = NDoubleSpinBox(self)
self.titleMarginT.setFixedWidth(dbW)
@@ -1093,7 +1091,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["H0"]),
- [trT, self.titleMarginT, 6, trB, self.titleMarginB],
+ [pixT, self.titleMarginT, 6, pixB, self.titleMarginB],
+ unit="em",
)
# Heading 1
@@ -1105,7 +1104,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["H1"]),
- [trT, self.h1MarginT, 6, trB, self.h1MarginB],
+ [pixT, self.h1MarginT, 6, pixB, self.h1MarginB],
+ unit="em",
)
# Heading 2
@@ -1117,7 +1117,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["H2"]),
- [trT, self.h2MarginT, 6, trB, self.h2MarginB],
+ [pixT, self.h2MarginT, 6, pixB, self.h2MarginB],
+ unit="em",
)
# Heading 3
@@ -1129,7 +1130,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["H3"]),
- [trT, self.h3MarginT, 6, trB, self.h3MarginB],
+ [pixT, self.h3MarginT, 6, pixB, self.h3MarginB],
+ unit="em",
)
# Heading 4
@@ -1141,7 +1143,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["H4"]),
- [trT, self.h4MarginT, 6, trB, self.h4MarginB],
+ [pixT, self.h4MarginT, 6, pixB, self.h4MarginB],
+ unit="em",
)
# Text
@@ -1153,7 +1156,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["TT"]),
- [trT, self.textMarginT, 6, trB, self.textMarginB],
+ [pixT, self.textMarginT, 6, pixB, self.textMarginB],
+ unit="em",
)
# Separator
@@ -1165,7 +1169,8 @@ class _FormattingTab(NScrollableForm):
self.addRow(
trConst(nwStyles.T_LABEL["SP"]),
- [trT, self.sepMarginT, 6, trB, self.sepMarginB],
+ [pixT, self.sepMarginT, 6, pixB, self.sepMarginB],
+ unit="em",
)
# Page Layout
@@ -1198,7 +1203,7 @@ class _FormattingTab(NScrollableForm):
self.addRow(
self._build.getLabel("format.pageSize"),
- [self.pageSize, 6, trW, self.pageWidth, 6, trH, self.pageHeight],
+ [self.pageSize, 6, pixW, self.pageWidth, 6, pixH, self.pageHeight],
)
# Page Margins
@@ -1216,11 +1221,11 @@ class _FormattingTab(NScrollableForm):
self.addRow(
self._build.getLabel("format.pageMargins"),
- [trT, self.topMargin, 6, trB, self.bottomMargin],
+ [pixT, self.topMargin, 6, pixB, self.bottomMargin],
)
self.addRow(
"",
- [trL, self.leftMargin, 6, trR, self.rightMargin],
+ [pixL, self.leftMargin, 6, pixR, self.rightMargin],
)
# Open Document