Update dialog buttons on all dialogs and tools

This commit is contained in:
Veronica Berglyd Olsen
2025-10-25 23:38:19 +02:00
parent 1b0c339845
commit c9c2b35455
16 changed files with 193 additions and 130 deletions
+7 -3
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import readTextFile
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.versioninfo import VersionInfoWidget
from novelwriter.types import QtAlignRightTop, QtDialogClose, QtHexArgb
from novelwriter.types import QtAlignRightTop, QtHexArgb
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -82,8 +83,11 @@ class GuiAbout(NDialog):
self.txtCredits.setViewportMargins(0, 8, 8, 0)
# Buttons
self.btnBox = QDialogButtonBox(QtDialogClose, self)
self.btnBox.rejected.connect(self.reject)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.innerBox = QVBoxLayout()
+15 -8
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
)
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtDialogReset, QtUserRole
from novelwriter.types import QtAccepted, QtUserRole
logger = logging.getLogger(__name__)
@@ -85,13 +86,19 @@ class GuiDocMerge(NDialog):
self.optBox.setColumnStretch(2, 1)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.resetButton = self.buttonBox.addButton(QtDialogReset)
if self.resetButton:
self.resetButton.clicked.connect(self._resetList)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnReset = SHARED.theme.getStandardButton(nwStandardButton.RESET, self)
self.btnReset.clicked.connect(self._resetList)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
self.btnBox.addButton(self.btnReset, QDialogButtonBox.ButtonRole.ResetRole)
# Assemble
self.outerBox = QVBoxLayout()
@@ -103,7 +110,7 @@ class GuiDocMerge(NDialog):
self.outerBox.addSpacing(8)
self.outerBox.addLayout(self.optBox)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
# Load Content
+12 -5
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
)
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NComboBox, NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtUserRole
from novelwriter.types import QtAccepted, QtUserRole
logger = logging.getLogger(__name__)
@@ -117,9 +118,15 @@ class GuiDocSplit(NDialog):
self.optBox.setColumnStretch(3, 1)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.outerBox = QVBoxLayout()
@@ -132,7 +139,7 @@ class GuiDocSplit(NDialog):
self.outerBox.addSpacing(8)
self.outerBox.addLayout(self.optBox)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
# Load Content
+13 -5
View File
@@ -27,8 +27,10 @@ import logging
from PyQt6.QtWidgets import QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QVBoxLayout, QWidget
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NDialog
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk
from novelwriter.types import QtAccepted
logger = logging.getLogger(__name__)
@@ -54,9 +56,15 @@ class GuiEditLabel(NDialog):
self.lblValue.setBuddy(self.lblValue)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.innerBox = QHBoxLayout()
@@ -67,7 +75,7 @@ class GuiEditLabel(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.setSpacing(12)
self.outerBox.addLayout(self.innerBox, 1)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.setLayout(self.outerBox)
+12 -5
View File
@@ -38,13 +38,14 @@ from novelwriter.common import compact, describeFont, processDialogSymbols, uniq
from novelwriter.config import DEF_GUI_DARK, DEF_GUI_LIGHT, DEF_ICONS, DEF_TREECOL
from novelwriter.constants import nwLabels, nwQuotes, nwUnicode, trConst
from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel, NScrollableForm
from novelwriter.extensions.modified import (
NComboBox, NDialog, NDoubleSpinBox, NIconToolButton, NSpinBox
)
from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAlignCenter, QtDialogCancel, QtDialogSave
from novelwriter.types import QtAlignCenter
logger = logging.getLogger(__name__)
@@ -89,9 +90,15 @@ class GuiPreferences(NDialog):
self.mainForm.setHelpTextStyle(SHARED.theme.helpText)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogCancel, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.searchBox = QHBoxLayout()
@@ -107,7 +114,7 @@ class GuiPreferences(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.searchBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(8)
self.setLayout(self.outerBox)
+12 -9
View File
@@ -41,15 +41,12 @@ from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter, qtAddAction, qtLambda, simplified
from novelwriter.constants import nwLabels, trConst
from novelwriter.core.status import CUSTOM_COL, NWStatus, StatusEntry
from novelwriter.enum import nwStatusShape
from novelwriter.enum import nwStandardButton, nwStatusShape
from novelwriter.extensions.configlayout import NColorLabel, NFixedPage, NScrollableForm
from novelwriter.extensions.modified import NComboBox, NDialog, NIconToolButton
from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import (
QtDialogCancel, QtDialogSave, QtSizeMinimum, QtSizeMinimumExpanding,
QtUserRole
)
from novelwriter.types import QtSizeMinimum, QtSizeMinimumExpanding, QtUserRole
logger = logging.getLogger(__name__)
@@ -95,9 +92,15 @@ class GuiProjectSettings(NDialog):
self.sidebar.buttonClicked.connect(self._sidebarClicked)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogCancel, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
# Content
SHARED.project.countStatus()
@@ -126,7 +129,7 @@ class GuiProjectSettings(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.topBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(8)
self.setLayout(self.outerBox)
+13 -8
View File
@@ -32,12 +32,11 @@ from PyQt6.QtWidgets import (
QListWidgetItem, QVBoxLayout, QWidget
)
from novelwriter import SHARED
from novelwriter.constants import nwQuotes, trConst
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NDialog
from novelwriter.types import (
QtAccepted, QtAlignCenter, QtAlignTop, QtDialogCancel, QtDialogOk,
QtUserRole
)
from novelwriter.types import QtAccepted, QtAlignCenter, QtAlignTop, QtUserRole
logger = logging.getLogger(__name__)
@@ -91,9 +90,15 @@ class GuiQuoteSelect(NDialog):
self.listBox.setMinimumHeight(150)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.labelBox.addWidget(self.previewLabel, 0, QtAlignTop)
@@ -103,7 +108,7 @@ class GuiQuoteSelect(NDialog):
self.innerBox.addWidget(self.listBox)
self.outerBox.addLayout(self.innerBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
+11 -5
View File
@@ -37,9 +37,9 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter
from novelwriter.core.spellcheck import UserDictionary
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog, NIconToolButton
from novelwriter.types import QtDialogClose, QtDialogSave
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -110,9 +110,15 @@ class GuiWordList(NDialog):
self.editBox.addWidget(self.delButton, 0)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogClose, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.outerBox = QVBoxLayout()
@@ -120,7 +126,7 @@ class GuiWordList(NDialog):
self.outerBox.addWidget(self.listBox, 1)
self.outerBox.addLayout(self.editBox, 0)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.outerBox.setSpacing(4)
self.setLayout(self.outerBox)
+9 -3
View File
@@ -59,15 +59,21 @@ STYLES_BIG_TOOLBUTTON = "bigToolButton"
STANDARD_BUTTONS = {
nwStandardButton.OK: (QT_TRANSLATE_NOOP("Button", "OK"), "btn_ok", "blue"),
nwStandardButton.CANCEL: (QT_TRANSLATE_NOOP("Button", "Cancel"), "btn_cancel", "red"),
nwStandardButton.YES: (QT_TRANSLATE_NOOP("Button", "Yes"), "btn_yes", "green"),
nwStandardButton.NO: (QT_TRANSLATE_NOOP("Button", "No"), "btn_no", "red"),
nwStandardButton.YES: (QT_TRANSLATE_NOOP("Button", "&Yes"), "btn_yes", "green"),
nwStandardButton.NO: (QT_TRANSLATE_NOOP("Button", "&No"), "btn_no", "red"),
nwStandardButton.OPEN: (QT_TRANSLATE_NOOP("Button", "Open"), "btn_open", "blue"),
nwStandardButton.CLOSE: (QT_TRANSLATE_NOOP("Button", "Close"), "btn_close", "red"),
nwStandardButton.CLOSE: (QT_TRANSLATE_NOOP("Button", "Close"), "btn_close", "faded"),
nwStandardButton.SAVE: (QT_TRANSLATE_NOOP("Button", "Save"), "btn_save", "blue"),
nwStandardButton.BROWSE: (QT_TRANSLATE_NOOP("Button", "Browse"), "btn_browse", "yellow"),
nwStandardButton.LIST: (QT_TRANSLATE_NOOP("Button", "List"), "btn_list", "blue"),
nwStandardButton.NEW: (QT_TRANSLATE_NOOP("Button", "New"), "btn_new", "green"),
nwStandardButton.CREATE: (QT_TRANSLATE_NOOP("Button", "Create"), "btn_create", "yellow"),
nwStandardButton.RESET: (QT_TRANSLATE_NOOP("Button", "Reset"), "btn_reset", "green"),
nwStandardButton.INSERT: (QT_TRANSLATE_NOOP("Button", "Insert"), "btn_insert", "blue"),
nwStandardButton.APPLY: (QT_TRANSLATE_NOOP("Button", "Apply"), "btn_apply", "blue"),
nwStandardButton.BUILD: (QT_TRANSLATE_NOOP("Button", "Build"), "btn_build", "blue"),
nwStandardButton.PRINT: (QT_TRANSLATE_NOOP("Button", "Print"), "btn_print", "blue"),
nwStandardButton.PREVIEW: (QT_TRANSLATE_NOOP("Button", "Preview"), "btn_preview", "blue"),
}
+8 -4
View File
@@ -37,9 +37,10 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter, formatInt, getFileSize, openExternalPath
from novelwriter.enum import nwStandardButton
from novelwriter.error import formatException
from novelwriter.extensions.modified import NIconToolButton, NNonBlockingDialog
from novelwriter.types import QtDialogClose, QtHexArgb
from novelwriter.types import QtHexArgb
logger = logging.getLogger(__name__)
@@ -110,8 +111,11 @@ class GuiDictionaries(NNonBlockingDialog):
self.infoBox.setFrameStyle(QFrame.Shape.NoFrame)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogClose, self)
self.buttonBox.rejected.connect(self.reject)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.AcceptRole)
# Assemble
self.outerBox = QVBoxLayout()
@@ -123,7 +127,7 @@ class GuiDictionaries(NNonBlockingDialog):
self.outerBox.addLayout(self.inBox, 0)
self.outerBox.addWidget(self.infoBox, 1)
self.outerBox.addSpacing(8)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.setLayout(self.outerBox)
+12 -11
View File
@@ -34,9 +34,10 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import readTextFile
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAlignLeft, QtAlignRight, QtDialogClose, QtRoleAction
from novelwriter.types import QtAlignLeft, QtAlignRight
logger = logging.getLogger(__name__)
@@ -91,22 +92,22 @@ class GuiLipsum(NDialog):
self.innerBox.addLayout(self.formBox)
# Buttons
self.buttonBox = QDialogButtonBox(self)
self.buttonBox.rejected.connect(self.reject)
self.btnClose = self.buttonBox.addButton(QtDialogClose)
if self.btnClose:
self.btnClose.setAutoDefault(False)
self.btnInsert = self.buttonBox.addButton(self.tr("Insert"), QtRoleAction)
if self.btnInsert:
self.btnInsert = SHARED.theme.getStandardButton(nwStandardButton.INSERT, self)
self.btnInsert.clicked.connect(self._doInsert)
self.btnInsert.setAutoDefault(False)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnClose.setAutoDefault(False)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnInsert, QDialogButtonBox.ButtonRole.ApplyRole)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.innerBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(16)
self.setLayout(self.outerBox)
+15 -21
View File
@@ -32,7 +32,7 @@ from PyQt6.QtCore import QTimer, pyqtSlot
from PyQt6.QtWidgets import (
QAbstractButton, QAbstractItemView, QDialogButtonBox, QFileDialog,
QGridLayout, QHBoxLayout, QLabel, QLineEdit, QListWidget, QListWidgetItem,
QPushButton, QSplitter, QVBoxLayout, QWidget
QSplitter, QVBoxLayout, QWidget
)
from novelwriter import SHARED
@@ -40,10 +40,10 @@ from novelwriter.common import makeFileNameSafe, openExternalPath
from novelwriter.constants import nwLabels
from novelwriter.core.docbuild import NWBuildDocument
from novelwriter.core.item import NWItem
from novelwriter.enum import nwBuildFmt
from novelwriter.extensions.modified import NDialog, NIconToolButton
from novelwriter.enum import nwBuildFmt, nwStandardButton
from novelwriter.extensions.modified import NDialog, NIconToolButton, NPushButton
from novelwriter.extensions.progressbars import NProgressSimple
from novelwriter.types import QtAlignCenter, QtDialogClose, QtRoleAction, QtRoleReject, QtUserRole
from novelwriter.types import QtAlignCenter, QtRoleAction, QtRoleReject, QtUserRole
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -178,26 +178,20 @@ class GuiManuscriptBuild(NDialog):
self.buildBox.setVerticalSpacing(4)
# Dialog Buttons
self.buttonBox = QDialogButtonBox(self)
self.btnOpen = QPushButton(
SHARED.theme.getIcon("browse", "yellow"), self.tr("Open Folder"), self
)
self.btnOpen.setIconSize(bSz)
self.btnOpen = NPushButton(self, self.tr("Open Folder"), bSz, "browse", "yellow")
self.btnOpen.setAutoDefault(False)
self.buttonBox.addButton(self.btnOpen, QtRoleAction)
self.btnBuild = QPushButton(
SHARED.theme.getIcon("sb_build", "blue"), self.tr("&Build"), self
)
self.btnBuild.setIconSize(bSz)
self.btnBuild = SHARED.theme.getStandardButton(nwStandardButton.BUILD, self)
self.btnBuild.setAutoDefault(True)
self.buttonBox.addButton(self.btnBuild, QtRoleAction)
self.btnClose = self.buttonBox.addButton(QtDialogClose)
if self.btnClose:
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.setAutoDefault(False)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOpen, QtRoleAction)
self.btnBox.addButton(self.btnBuild, QtRoleAction)
self.btnBox.addButton(self.btnClose, QtRoleReject)
# Assemble GUI
# ============
@@ -223,7 +217,7 @@ class GuiManuscriptBuild(NDialog):
self.outerBox.addSpacing(4)
self.outerBox.addLayout(self.buildBox, 0)
self.outerBox.addSpacing(16)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.outerBox.setSpacing(0)
self.setLayout(self.outerBox)
@@ -239,7 +233,7 @@ class GuiManuscriptBuild(NDialog):
# Signals
self.btnReset.clicked.connect(self._doResetBuildName)
self.btnBrowse.clicked.connect(self._doSelectPath)
self.buttonBox.clicked.connect(self._dialogButtonClicked)
self.btnBox.clicked.connect(self._dialogButtonClicked)
self.listFormats.itemSelectionChanged.connect(self._resetProgress)
logger.debug("Ready: GuiManuscriptBuild")
@@ -266,7 +260,7 @@ class GuiManuscriptBuild(NDialog):
@pyqtSlot("QAbstractButton*")
def _dialogButtonClicked(self, button: QAbstractButton) -> None:
"""Handle button clicks from the dialog button box."""
role = self.buttonBox.buttonRole(button)
role = self.btnBox.buttonRole(button)
if role == QtRoleAction:
if button == self.btnBuild:
self._runBuild()
+8 -7
View File
@@ -36,9 +36,9 @@ from PyQt6.QtGui import (
from PyQt6.QtPrintSupport import QPrinter, QPrintPreviewDialog
from PyQt6.QtWidgets import (
QAbstractItemView, QApplication, QFormLayout, QGridLayout, QHBoxLayout,
QLabel, QListWidget, QListWidgetItem, QPushButton, QSplitter,
QStackedWidget, QTabWidget, QTextBrowser, QTreeWidget, QTreeWidgetItem,
QVBoxLayout, QWidget
QLabel, QListWidget, QListWidgetItem, QSplitter, QStackedWidget,
QTabWidget, QTextBrowser, QTreeWidget, QTreeWidgetItem, QVBoxLayout,
QWidget
)
from novelwriter import CONFIG, SHARED
@@ -46,6 +46,7 @@ from novelwriter.common import fuzzyTime, qtLambda
from novelwriter.constants import nwHeadFmt, nwLabels, nwStats, nwUnicode, trStats
from novelwriter.core.buildsettings import BuildCollection, BuildSettings
from novelwriter.core.docbuild import NWBuildDocument
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NIconToggleButton, NIconToolButton, NToolDialog
from novelwriter.extensions.progressbars import NProgressCircle
from novelwriter.extensions.switch import NSwitch
@@ -171,16 +172,16 @@ class GuiManuscript(NToolDialog):
# Process Controls
# ================
self.btnPreview = QPushButton(self.tr("Preview"), self)
self.btnPreview = SHARED.theme.getStandardButton(nwStandardButton.PREVIEW, self)
self.btnPreview.clicked.connect(self._generatePreview)
self.btnPrint = QPushButton(self.tr("Print"), self)
self.btnPrint = SHARED.theme.getStandardButton(nwStandardButton.PRINT, self)
self.btnPrint.clicked.connect(self._printDocument)
self.btnBuild = QPushButton(self.tr("Build"), self)
self.btnBuild = SHARED.theme.getStandardButton(nwStandardButton.BUILD, self)
self.btnBuild.clicked.connect(self._buildManuscript)
self.btnClose = QPushButton(self.tr("Close"), self)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(qtLambda(self.close))
self.processBox = QGridLayout()
+14 -7
View File
@@ -40,6 +40,7 @@ from novelwriter import CONFIG, SHARED
from novelwriter.common import describeFont, fontMatcher, qtAddAction, qtLambda
from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwUnicode, trConst
from novelwriter.core.buildsettings import BuildSettings, FilterMode
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import (
NColorLabel, NFixedPage, NScrollableForm, NScrollablePage
)
@@ -50,9 +51,8 @@ from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.extensions.switchbox import NSwitchBox
from novelwriter.types import (
QtAlignCenter, QtAlignLeft, QtDialogApply, QtDialogClose, QtDialogSave,
QtHeaderFixed, QtHeaderStretch, QtRoleAccept, QtRoleApply, QtRoleReject,
QtUserRole
QtAlignCenter, QtAlignLeft, QtHeaderFixed, QtHeaderStretch, QtRoleAccept,
QtRoleApply, QtRoleReject, QtUserRole
)
if TYPE_CHECKING:
@@ -125,8 +125,15 @@ class GuiBuildSettings(NToolDialog):
self.toolStack.addWidget(self.optTabFormatting)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogApply | QtDialogSave | QtDialogClose, self)
self.buttonBox.clicked.connect(self._dialogButtonClicked)
self.btnApply = SHARED.theme.getStandardButton(nwStandardButton.APPLY, self)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnApply, QDialogButtonBox.ButtonRole.ApplyRole)
self.btnBox.addButton(self.btnSave, QDialogButtonBox.ButtonRole.AcceptRole)
self.btnBox.addButton(self.btnCancel, QDialogButtonBox.ButtonRole.RejectRole)
self.btnBox.clicked.connect(self._dialogButtonClicked)
# Assemble
self.topBox = QHBoxLayout()
@@ -143,7 +150,7 @@ class GuiBuildSettings(NToolDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.topBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(12)
self.setLayout(self.outerBox)
@@ -205,7 +212,7 @@ class GuiBuildSettings(NToolDialog):
@pyqtSlot("QAbstractButton*")
def _dialogButtonClicked(self, button: QAbstractButton) -> None:
"""Handle button clicks from the dialog button box."""
role = self.buttonBox.buttonRole(button)
role = self.btnBox.buttonRole(button)
if role == QtRoleApply:
self._applyChanges()
self._emitBuildData()
+8 -4
View File
@@ -38,12 +38,13 @@ from PyQt6.QtWidgets import (
from novelwriter import SHARED
from novelwriter.common import formatTime, numberToRoman
from novelwriter.constants import nwUnicode
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel, NFixedPage, NScrollablePage
from novelwriter.extensions.modified import NNonBlockingDialog
from novelwriter.extensions.novelselector import NovelSelector
from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAlignRight, QtDecoration, QtDialogClose
from novelwriter.types import QtAlignRight, QtDecoration
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -102,8 +103,11 @@ class GuiNovelDetails(NNonBlockingDialog):
self.mainStack.addWidget(self.contentsPage)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogClose, self)
self.buttonBox.rejected.connect(self.reject)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.RejectRole)
# Assemble
self.topBox = QHBoxLayout()
@@ -119,7 +123,7 @@ class GuiNovelDetails(NNonBlockingDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.topBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(8)
self.setLayout(self.outerBox)
+14 -15
View File
@@ -39,13 +39,11 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import checkInt, checkIntTuple, formatTime, minmax, qtLambda
from novelwriter.constants import nwConst
from novelwriter.enum import nwStandardButton
from novelwriter.error import formatException
from novelwriter.extensions.modified import NToolDialog
from novelwriter.extensions.modified import NPushButton, NToolDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import (
QtAlignLeftMiddle, QtAlignRight, QtAlignRightMiddle, QtDecoration,
QtDialogClose, QtRoleAction
)
from novelwriter.types import QtAlignLeftMiddle, QtAlignRight, QtAlignRightMiddle, QtDecoration
if TYPE_CHECKING:
from novelwriter.guimain import GuiMain
@@ -182,6 +180,7 @@ class GuiWritingStats(NToolDialog):
# Filter Options
iPx = SHARED.theme.baseIconHeight
bSz = SHARED.theme.buttonIconSize
self.filterForm = QGridLayout(self)
self.filterForm.setRowStretch(6, 1)
@@ -276,6 +275,10 @@ class GuiWritingStats(NToolDialog):
self.optsBox.addWidget(self.histMax, 0)
# Buttons
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self._doClose)
self.btnClose.setAutoDefault(False)
self.saveJSON = QAction(self.tr("JSON Data File (.json)"), self)
self.saveJSON.triggered.connect(qtLambda(self._saveData, self.FMT_JSON))
@@ -286,25 +289,21 @@ class GuiWritingStats(NToolDialog):
self.saveMenu.addAction(self.saveJSON)
self.saveMenu.addAction(self.saveCSV)
self.buttonBox = QDialogButtonBox(self)
self.buttonBox.rejected.connect(self._doClose)
self.btnClose = self.buttonBox.addButton(QtDialogClose)
if self.btnClose:
self.btnClose.setAutoDefault(False)
self.btnSave = self.buttonBox.addButton(self.tr("Save As"), QtRoleAction)
if self.btnSave:
self.btnSave = NPushButton(self, self.tr("Save As"), bSz, "btn_save", "blue")
self.btnSave.setAutoDefault(False)
self.btnSave.setMenu(self.saveMenu)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnClose, QDialogButtonBox.ButtonRole.RejectRole)
self.btnBox.addButton(self.btnSave, QDialogButtonBox.ButtonRole.ActionRole)
# Assemble
self.outerBox = QGridLayout()
self.outerBox.addWidget(self.listBox, 0, 0, 1, 2)
self.outerBox.addLayout(self.optsBox, 1, 0, 1, 2)
self.outerBox.addWidget(self.infoBox, 2, 0)
self.outerBox.addWidget(self.filterBox, 2, 1)
self.outerBox.addWidget(self.buttonBox, 3, 0, 1, 2)
self.outerBox.addWidget(self.btnBox, 3, 0, 1, 2)
self.outerBox.setRowStretch(0, 1)
self.setLayout(self.outerBox)