From 7be78f6e1e7e071378eb5dc05b3a408b09bd118f Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 17 May 2020 18:04:48 +0200 Subject: [PATCH] Cleaned up the split and merge dialogs --- nw/assets/graphics/export.svg | 44 ----------------------------- nw/assets/graphics/merge.svg | 31 --------------------- nw/assets/graphics/split.svg | 31 --------------------- nw/gui/additions/__init__.py | 2 ++ nw/gui/additions/qconfiglayout.py | 32 +++++++++++++++------ nw/gui/dialogs/docmerge.py | 46 +++++++++++++++---------------- nw/gui/dialogs/docsplit.py | 44 ++++++++++++++--------------- nw/gui/icons.py | 3 -- 8 files changed, 69 insertions(+), 164 deletions(-) delete mode 100644 nw/assets/graphics/export.svg delete mode 100644 nw/assets/graphics/merge.svg delete mode 100644 nw/assets/graphics/split.svg diff --git a/nw/assets/graphics/export.svg b/nw/assets/graphics/export.svg deleted file mode 100644 index 9594a980..00000000 --- a/nw/assets/graphics/export.svg +++ /dev/null @@ -1,44 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/nw/assets/graphics/merge.svg b/nw/assets/graphics/merge.svg deleted file mode 100644 index 1b4c6ae9..00000000 --- a/nw/assets/graphics/merge.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/nw/assets/graphics/split.svg b/nw/assets/graphics/split.svg deleted file mode 100644 index c427eea6..00000000 --- a/nw/assets/graphics/split.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/nw/gui/additions/__init__.py b/nw/gui/additions/__init__.py index 32af81f6..dbacd16e 100644 --- a/nw/gui/additions/__init__.py +++ b/nw/gui/additions/__init__.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- from nw.gui.additions.pageddialog import PagedDialog from nw.gui.additions.qconfiglayout import QConfigLayout +from nw.gui.additions.qconfiglayout import QHelpLabel from nw.gui.additions.qswitch import QSwitch __all__ = [ "PagedDialog", "QConfigLayout", + "QHelpLabel", "QSwitch", ] diff --git a/nw/gui/additions/qconfiglayout.py b/nw/gui/additions/qconfiglayout.py index 51face15..032d0e6b 100644 --- a/nw/gui/additions/qconfiglayout.py +++ b/nw/gui/additions/qconfiglayout.py @@ -130,17 +130,9 @@ class QConfigLayout(QGridLayout): qLabel.setIndent(8) if helpText is not None: - qHelp = QLabel(str(helpText)) + qHelp = QHelpLabel(str(helpText), self._helpCol, self._fontScale) qHelp.setIndent(8) - lblCol = qHelp.palette() - lblCol.setColor(QPalette.WindowText, self._helpCol) - qHelp.setPalette(lblCol) - - lblFont = qHelp.font() - lblFont.setPointSizeF(self._fontScale*lblFont.pointSizeF()) - qHelp.setFont(lblFont) - labelBox = QVBoxLayout() labelBox.addWidget(qLabel) labelBox.addWidget(qHelp) @@ -176,3 +168,25 @@ class QConfigLayout(QGridLayout): return self._nextRow - 1 # END Class QConfigLayout + +class QHelpLabel(QLabel): + + def __init__(self, theText, textCol, fontSize=0.9): + QLabel.__init__(self, theText) + + if isinstance(textCol, QColor): + qCol = textCol + else: + qCol = QColor(*textCol) + + lblCol = self.palette() + lblCol.setColor(QPalette.WindowText, qCol) + self.setPalette(lblCol) + + lblFont = self.font() + lblFont.setPointSizeF(fontSize*lblFont.pointSizeF()) + self.setFont(lblFont) + + return + +# END Class QHelpLabel diff --git a/nw/gui/dialogs/docmerge.py b/nw/gui/dialogs/docmerge.py index 1094fb78..47391a72 100644 --- a/nw/gui/dialogs/docmerge.py +++ b/nw/gui/dialogs/docmerge.py @@ -29,11 +29,14 @@ import logging import nw from PyQt5.QtCore import Qt +from PyQt5.QtGui import QColor, QPalette from PyQt5.QtWidgets import ( - QDialog, QHBoxLayout, QVBoxLayout, QGridLayout, QPushButton, - QListWidget, QAbstractItemView, QListWidgetItem + QDialog, QHBoxLayout, QVBoxLayout, QGridLayout, QPushButton, QLabel, + QListWidget, QAbstractItemView, QListWidgetItem, QDialogButtonBox ) + from nw.constants import nwAlert, nwItemType +from nw.gui.additions import QHelpLabel from nw.core import NWDoc logger = logging.getLogger(__name__) @@ -50,34 +53,31 @@ class GuiDocMerge(QDialog): self.theProject = theProject self.sourceItem = None - self.outerBox = QHBoxLayout() - self.innerBox = QVBoxLayout() - self.setLayout(self.outerBox) - + self.outerBox = QVBoxLayout() self.setWindowTitle("Merge Documents") - self.guiDeco = self.theParent.theTheme.loadDecoration("merge",(64,64)) - self.outerBox.setSpacing(16) - self.outerBox.addWidget(self.guiDeco, 0, Qt.AlignTop) - self.outerBox.addLayout(self.innerBox) - - self.doMergeForm = QGridLayout() - self.doMergeForm.setContentsMargins(0,0,0,0) + self.headLabel = QLabel("Documents to Merge") + self.helpLabel = QHelpLabel( + "Drag and drop items to change the order.", self.theParent.theTheme.helpText + ) self.listBox = QListWidget() self.listBox.setDragDropMode(QAbstractItemView.InternalMove) + self.listBox.setMinimumWidth(400) + self.listBox.setMinimumHeight(180) - self.mergeButton = QPushButton("Merge") - self.mergeButton.clicked.connect(self._doMerge) + self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + self.buttonBox.accepted.connect(self._doMerge) + self.buttonBox.rejected.connect(self._doClose) - self.closeButton = QPushButton("Close") - self.closeButton.clicked.connect(self._doClose) - - self.doMergeForm.addWidget(self.listBox, 0, 0, 1, 3) - self.doMergeForm.addWidget(self.mergeButton, 1, 1) - self.doMergeForm.addWidget(self.closeButton, 1, 2) - - self.innerBox.addLayout(self.doMergeForm) + self.outerBox.setSpacing(0) + self.outerBox.addWidget(self.headLabel) + self.outerBox.addWidget(self.helpLabel) + self.outerBox.addSpacing(8) + self.outerBox.addWidget(self.listBox) + self.outerBox.addSpacing(12) + self.outerBox.addWidget(self.buttonBox) + self.setLayout(self.outerBox) self.rejected.connect(self._doClose) self.show() diff --git a/nw/gui/dialogs/docsplit.py b/nw/gui/dialogs/docsplit.py index dc795c77..7e2e80cd 100644 --- a/nw/gui/dialogs/docsplit.py +++ b/nw/gui/dialogs/docsplit.py @@ -31,9 +31,10 @@ import nw from PyQt5.QtCore import Qt from PyQt5.QtWidgets import ( QDialog, QHBoxLayout, QVBoxLayout, QGridLayout, QPushButton, QComboBox, - QListWidget, QAbstractItemView, QListWidgetItem + QListWidget, QAbstractItemView, QListWidgetItem, QDialogButtonBox, QLabel ) from nw.constants import nwAlert, nwItemType, nwItemClass, nwItemLayout +from nw.gui.additions import QHelpLabel from nw.core import NWDoc logger = logging.getLogger(__name__) @@ -51,22 +52,18 @@ class GuiDocSplit(QDialog): self.optState = self.theProject.optState self.sourceItem = None - self.outerBox = QHBoxLayout() - self.innerBox = QVBoxLayout() - self.setLayout(self.outerBox) - + self.outerBox = QVBoxLayout() self.setWindowTitle("Split Document") - self.guiDeco = self.theParent.theTheme.loadDecoration("split",(64,64)) - self.outerBox.setSpacing(16) - self.outerBox.addWidget(self.guiDeco, 0, Qt.AlignTop) - self.outerBox.addLayout(self.innerBox) - - self.doMergeForm = QGridLayout() - self.doMergeForm.setContentsMargins(0,0,0,0) + self.headLabel = QLabel("Document Headers") + self.helpLabel = QHelpLabel( + "Select the maximum level to split into files at.", self.theParent.theTheme.helpText + ) self.listBox = QListWidget() self.listBox.setDragDropMode(QAbstractItemView.NoDragDrop) + self.listBox.setMinimumWidth(400) + self.listBox.setMinimumHeight(180) self.splitLevel = QComboBox(self) self.splitLevel.addItem("Split on Header Level 1 (Title)", 1) @@ -80,18 +77,19 @@ class GuiDocSplit(QDialog): self.splitLevel.setCurrentIndex(spIndex) self.splitLevel.currentIndexChanged.connect(self._populateList) - self.splitButton = QPushButton("Split") - self.splitButton.clicked.connect(self._doSplit) + self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + self.buttonBox.accepted.connect(self._doSplit) + self.buttonBox.rejected.connect(self._doClose) - self.closeButton = QPushButton("Close") - self.closeButton.clicked.connect(self._doClose) - - self.doMergeForm.addWidget(self.listBox, 0, 0, 1, 3) - self.doMergeForm.addWidget(self.splitLevel, 1, 0, 1, 3) - self.doMergeForm.addWidget(self.splitButton, 2, 1) - self.doMergeForm.addWidget(self.closeButton, 2, 2) - - self.innerBox.addLayout(self.doMergeForm) + self.outerBox.setSpacing(0) + self.outerBox.addWidget(self.headLabel) + self.outerBox.addWidget(self.helpLabel) + self.outerBox.addSpacing(8) + self.outerBox.addWidget(self.listBox) + self.outerBox.addWidget(self.splitLevel) + self.outerBox.addSpacing(12) + self.outerBox.addWidget(self.buttonBox) + self.setLayout(self.outerBox) self.rejected.connect(self._doClose) self.show() diff --git a/nw/gui/icons.py b/nw/gui/icons.py index 8457ea90..9340d900 100644 --- a/nw/gui/icons.py +++ b/nw/gui/icons.py @@ -99,10 +99,7 @@ class GuiIcons: DECO_MAP = { "nwicon" : ["icons", "novelWriter.svg"], - "export" : ["graphics", "export.svg"], - "merge" : ["graphics", "merge.svg"], "settings" : ["graphics", "gear.svg"], - "split" : ["graphics", "split.svg"], } def __init__(self, theParent):