Move GUI theme instance to the config object (after app creation)

This commit is contained in:
Veronica Berglyd Olsen
2023-08-08 14:35:55 +02:00
parent c50c8ee73a
commit 94c95d6f67
30 changed files with 319 additions and 390 deletions
+12 -15
View File
@@ -1,7 +1,6 @@
"""
novelWriter GUI About Box
===========================
The about novelWriter dialog box
File History:
Created: 2020-05-21 [0.5.2]
@@ -22,6 +21,7 @@ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
from __future__ import annotations
import logging
import novelwriter
@@ -31,8 +31,8 @@ from datetime import datetime
from PyQt5.QtGui import QCursor
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
qApp, QDialog, QHBoxLayout, QVBoxLayout, QDialogButtonBox, QTabWidget,
QTextBrowser, QLabel
qApp, QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QTabWidget,
QTextBrowser, QVBoxLayout, QWidget
)
from novelwriter import CONFIG
@@ -44,15 +44,12 @@ logger = logging.getLogger(__name__)
class GuiAbout(QDialog):
def __init__(self, mainGui):
super().__init__(parent=mainGui)
def __init__(self, parent: QWidget):
super().__init__(parent=parent)
logger.debug("Create: GuiAbout")
self.setObjectName("GuiAbout")
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
self.outerBox = QVBoxLayout()
self.innerBox = QHBoxLayout()
self.innerBox.setSpacing(CONFIG.pxInt(16))
@@ -63,7 +60,7 @@ class GuiAbout(QDialog):
nPx = CONFIG.pxInt(96)
self.nwIcon = QLabel()
self.nwIcon.setPixmap(self.mainGui.mainTheme.getPixmap("novelwriter", (nPx, nPx)))
self.nwIcon.setPixmap(CONFIG.theme.getPixmap("novelwriter", (nPx, nPx)))
self.lblName = QLabel("<b>novelWriter</b>")
self.lblVers = QLabel(f"v{novelwriter.__version__}")
self.lblDate = QLabel(datetime.strptime(novelwriter.__date__, "%Y-%m-%d").strftime("%x"))
@@ -231,12 +228,12 @@ class GuiAbout(QDialog):
" color: rgb({kColR},{kColG},{kColB});"
"}}\n"
).format(
hColR=self.mainGui.mainTheme.colHead[0],
hColG=self.mainGui.mainTheme.colHead[1],
hColB=self.mainGui.mainTheme.colHead[2],
kColR=self.mainTheme.colKey[0],
kColG=self.mainTheme.colKey[1],
kColB=self.mainTheme.colKey[2],
hColR=CONFIG.theme.colHead[0],
hColG=CONFIG.theme.colHead[1],
hColB=CONFIG.theme.colHead[2],
kColR=CONFIG.theme.colKey[0],
kColG=CONFIG.theme.colKey[1],
kColB=CONFIG.theme.colKey[2],
)
self.pageAbout.document().setDefaultStyleSheet(styleSheet)
self.pageNotes.document().setDefaultStyleSheet(styleSheet)
+3 -4
View File
@@ -50,7 +50,6 @@ class GuiDocMerge(QDialog):
self.setObjectName("GuiDocMerge")
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
self.theProject = mainGui.theProject
self._data = {}
@@ -60,9 +59,9 @@ class GuiDocMerge(QDialog):
self.headLabel = QLabel("<b>{0}</b>".format(self.tr("Documents to Merge")))
self.helpLabel = NHelpLabel(self.tr(
"Drag and drop items to change the order, or uncheck to exclude."
), self.mainTheme.helpText)
), CONFIG.theme.helpText)
iPx = self.mainTheme.baseIconSize
iPx = CONFIG.theme.baseIconSize
hSp = CONFIG.pxInt(12)
vSp = CONFIG.pxInt(8)
bSp = CONFIG.pxInt(12)
@@ -161,7 +160,7 @@ class GuiDocMerge(QDialog):
if nwItem is None or not nwItem.isFileType():
continue
itemIcon = self.mainTheme.getItemIcon(
itemIcon = CONFIG.theme.getItemIcon(
nwItem.itemType, nwItem.itemClass, nwItem.itemLayout, nwItem.mainHeading
)
+2 -3
View File
@@ -52,7 +52,6 @@ class GuiDocSplit(QDialog):
self.setObjectName("GuiDocSplit")
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
self.theProject = mainGui.theProject
self._data = {}
@@ -63,11 +62,11 @@ class GuiDocSplit(QDialog):
self.headLabel = QLabel("<b>{0}</b>".format(self.tr("Document Headers")))
self.helpLabel = NHelpLabel(
self.tr("Select the maximum level to split into files."),
self.mainGui.mainTheme.helpText
CONFIG.theme.helpText
)
# Values
iPx = self.mainTheme.baseIconSize
iPx = CONFIG.theme.baseIconSize
hSp = CONFIG.pxInt(12)
vSp = CONFIG.pxInt(8)
bSp = CONFIG.pxInt(12)
+15 -32
View File
@@ -160,13 +160,11 @@ class GuiPreferencesGeneral(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.prefsGui = prefsGui
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
self.prefsGui = prefsGui
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Look and Feel
@@ -193,7 +191,7 @@ class GuiPreferencesGeneral(QWidget):
# Select Theme
self.guiTheme = QComboBox()
self.guiTheme.setMinimumWidth(minWidth)
self.theThemes = self.mainTheme.listThemes()
self.theThemes = CONFIG.theme.listThemes()
for themeDir, themeName in self.theThemes:
self.guiTheme.addItem(themeName, themeDir)
themeIdx = self.guiTheme.findData(CONFIG.guiTheme)
@@ -209,7 +207,7 @@ class GuiPreferencesGeneral(QWidget):
# Editor Theme
self.guiSyntax = QComboBox()
self.guiSyntax.setMinimumWidth(CONFIG.pxInt(200))
self.theSyntaxes = self.mainTheme.listSyntax()
self.theSyntaxes = CONFIG.theme.listSyntax()
for syntaxFile, syntaxName in self.theSyntaxes:
self.guiSyntax.addItem(syntaxName, syntaxFile)
syntaxIdx = self.guiSyntax.findData(CONFIG.guiSyntax)
@@ -228,7 +226,7 @@ class GuiPreferencesGeneral(QWidget):
self.guiFont.setFixedWidth(CONFIG.pxInt(162))
self.guiFont.setText(CONFIG.guiFont)
self.fontButton = QPushButton("...")
self.fontButton.setMaximumWidth(int(2.5*self.mainTheme.getTextWidth("...")))
self.fontButton.setMaximumWidth(int(2.5*CONFIG.theme.getTextWidth("...")))
self.fontButton.clicked.connect(self._selectFont)
self.mainForm.addRow(
self.tr("Font family"),
@@ -342,12 +340,9 @@ class GuiPreferencesProjects(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Automatic Save
@@ -497,12 +492,9 @@ class GuiPreferencesDocuments(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Text Style
@@ -515,7 +507,7 @@ class GuiPreferencesDocuments(QWidget):
self.textFont.setFixedWidth(CONFIG.pxInt(162))
self.textFont.setText(CONFIG.textFont)
self.fontButton = QPushButton("...")
self.fontButton.setMaximumWidth(int(2.5*self.mainTheme.getTextWidth("...")))
self.fontButton.setMaximumWidth(int(2.5*CONFIG.theme.getTextWidth("...")))
self.fontButton.clicked.connect(self._selectFont)
self.mainForm.addRow(
self.tr("Font family"),
@@ -654,12 +646,11 @@ class GuiPreferencesEditor(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
self.mainGui = prefsGui.mainGui
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
mW = CONFIG.pxInt(250)
@@ -825,13 +816,11 @@ class GuiPreferencesSyntax(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.prefsGui = prefsGui
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
self.prefsGui = prefsGui
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Quotes & Dialogue
@@ -931,12 +920,9 @@ class GuiPreferencesAutomation(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Automatic Features
@@ -1085,12 +1071,9 @@ class GuiPreferencesQuotes(QWidget):
def __init__(self, prefsGui):
super().__init__(parent=prefsGui)
self.mainGui = prefsGui.mainGui
self.mainTheme = prefsGui.mainGui.mainTheme
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
# Quotation Style
@@ -1098,7 +1081,7 @@ class GuiPreferencesQuotes(QWidget):
self.mainForm.addGroupLabel(self.tr("Quotation Style"))
qWidth = CONFIG.pxInt(40)
bWidth = int(2.5*self.mainTheme.getTextWidth("..."))
bWidth = int(2.5*CONFIG.theme.getTextWidth("..."))
self.quoteSym = {}
# Single Quote Style
+4 -6
View File
@@ -149,10 +149,9 @@ class GuiProjectDetailsMain(QWidget):
self.theProject = theProject
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
fPx = self.mainTheme.fontPixelSize
fPt = self.mainTheme.fontPointSize
fPx = CONFIG.theme.fontPixelSize
fPt = CONFIG.theme.fontPointSize
vPx = CONFIG.pxInt(4)
hPx = CONFIG.pxInt(12)
@@ -282,13 +281,12 @@ class GuiProjectDetailsContents(QWidget):
self.theProject = theProject
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
# Internal
self._theToC = []
self._currentRoot = None
iPx = self.mainTheme.baseIconSize
iPx = CONFIG.theme.baseIconSize
hPx = CONFIG.pxInt(12)
vPx = CONFIG.pxInt(4)
pOptions = self.theProject.options
@@ -500,7 +498,7 @@ class GuiProjectDetailsContents(QWidget):
progPage = f"{cPage:n}"
progText = f"{pgProg:.1f}{nwUnicode.U_THSP}%"
hDec = self.mainTheme.getHeaderDecoration(tLevel)
hDec = CONFIG.theme.getHeaderDecoration(tLevel)
if tTitle.strip() == "":
tTitle = self.tr("Untitled")
+5 -6
View File
@@ -62,13 +62,12 @@ class GuiProjectLoad(QDialog):
self.setObjectName("GuiProjectLoad")
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
self.openState = self.NONE_STATE
self.openPath = None
sPx = CONFIG.pxInt(16)
nPx = CONFIG.pxInt(96)
iPx = self.mainTheme.baseIconSize
iPx = CONFIG.theme.baseIconSize
self.outerBox = QVBoxLayout()
self.innerBox = QHBoxLayout()
@@ -80,7 +79,7 @@ class GuiProjectLoad(QDialog):
self.setMinimumHeight(CONFIG.pxInt(400))
self.nwIcon = QLabel()
self.nwIcon.setPixmap(self.mainGui.mainTheme.getPixmap("novelwriter", (nPx, nPx)))
self.nwIcon.setPixmap(CONFIG.theme.getPixmap("novelwriter", (nPx, nPx)))
self.innerBox.addWidget(self.nwIcon, 0, Qt.AlignTop)
self.projectForm = QGridLayout()
@@ -110,7 +109,7 @@ class GuiProjectLoad(QDialog):
self.selPath.setReadOnly(True)
self.browseButton = QPushButton("...")
self.browseButton.setMaximumWidth(int(2.5*self.mainTheme.getTextWidth("...")))
self.browseButton.setMaximumWidth(int(2.5*CONFIG.theme.getTextWidth("...")))
self.browseButton.clicked.connect(self._doBrowse)
self.projectForm.addWidget(self.lblRecent, 0, 0, 1, 3)
@@ -268,7 +267,7 @@ class GuiProjectLoad(QDialog):
self.listBox.clear()
dataList = CONFIG.recentProjects.listEntries()
sortList = sorted(dataList, key=lambda x: x[3], reverse=True)
nwxIcon = self.mainGui.mainTheme.getIcon("proj_nwx")
nwxIcon = CONFIG.theme.getIcon("proj_nwx")
for path, title, words, time in sortList:
newItem = QTreeWidgetItem([""]*4)
newItem.setIcon(self.C_NAME, nwxIcon)
@@ -279,7 +278,7 @@ class GuiProjectLoad(QDialog):
newItem.setTextAlignment(self.C_NAME, Qt.AlignLeft | Qt.AlignVCenter)
newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight | Qt.AlignVCenter)
newItem.setTextAlignment(self.C_TIME, Qt.AlignRight | Qt.AlignVCenter)
newItem.setFont(self.C_TIME, self.mainTheme.guiFontFixed)
newItem.setFont(self.C_TIME, CONFIG.theme.guiFontFixed)
self.listBox.addTopLevelItem(newItem)
if self.listBox.topLevelItemCount() > 0:
+8 -10
View File
@@ -206,7 +206,7 @@ class GuiProjectEditMain(QWidget):
# The Form
self.mainForm = NConfigLayout()
self.mainForm.setHelpTextStyle(self.mainGui.mainTheme.helpText)
self.mainForm.setHelpTextStyle(CONFIG.theme.helpText)
self.setLayout(self.mainForm)
self.mainForm.addGroupLabel(self.tr("Project Settings"))
@@ -291,7 +291,6 @@ class GuiProjectEditStatus(QWidget):
self.mainGui = projGui.mainGui
self.theProject = projGui.theProject
self.mainTheme = projGui.mainGui.mainTheme
if isStatus:
self.theStatus = self.theProject.data.itemStatus
@@ -310,7 +309,7 @@ class GuiProjectEditStatus(QWidget):
self.colChanged = False
self.selColour = QColor(100, 100, 100)
self.iPx = self.mainTheme.baseIconSize
self.iPx = CONFIG.theme.baseIconSize
# The List
# ========
@@ -329,16 +328,16 @@ class GuiProjectEditStatus(QWidget):
# List Controls
# =============
self.addButton = QPushButton(self.mainTheme.getIcon("add"), "")
self.addButton = QPushButton(CONFIG.theme.getIcon("add"), "")
self.addButton.clicked.connect(self._newItem)
self.delButton = QPushButton(self.mainTheme.getIcon("remove"), "")
self.delButton = QPushButton(CONFIG.theme.getIcon("remove"), "")
self.delButton.clicked.connect(self._delItem)
self.upButton = QPushButton(self.mainTheme.getIcon("up"), "")
self.upButton = QPushButton(CONFIG.theme.getIcon("up"), "")
self.upButton.clicked.connect(lambda: self._moveItem(-1))
self.dnButton = QPushButton(self.mainTheme.getIcon("down"), "")
self.dnButton = QPushButton(CONFIG.theme.getIcon("down"), "")
self.dnButton.clicked.connect(lambda: self._moveItem(1))
# Edit Form
@@ -578,7 +577,6 @@ class GuiProjectEditReplace(QWidget):
super().__init__(parent=projGui)
self.mainGui = projGui.mainGui
self.mainTheme = projGui.mainGui.mainTheme
self.theProject = projGui.theProject
self.arChanged = False
@@ -609,10 +607,10 @@ class GuiProjectEditReplace(QWidget):
# List Controls
# =============
self.addButton = QPushButton(self.mainTheme.getIcon("add"), "")
self.addButton = QPushButton(CONFIG.theme.getIcon("add"), "")
self.addButton.clicked.connect(self._addEntry)
self.delButton = QPushButton(self.mainTheme.getIcon("remove"), "")
self.delButton = QPushButton(CONFIG.theme.getIcon("remove"), "")
self.delButton.clicked.connect(self._delEntry)
# Edit Form
+1 -4
View File
@@ -49,9 +49,6 @@ class GuiUpdates(QDialog):
logger.debug("Create: GuiUpdates")
self.setObjectName("GuiUpdates")
self.mainGui = mainGui
self.setWindowTitle(self.tr("Check for Updates"))
nPx = CONFIG.pxInt(96)
@@ -61,7 +58,7 @@ class GuiUpdates(QDialog):
# Left Box
self.nwIcon = QLabel()
self.nwIcon.setPixmap(self.mainGui.mainTheme.getPixmap("novelwriter", (nPx, nPx)))
self.nwIcon.setPixmap(CONFIG.theme.getPixmap("novelwriter", (nPx, nPx)))
self.leftBox = QVBoxLayout()
self.leftBox.addWidget(self.nwIcon)
+2 -3
View File
@@ -52,7 +52,6 @@ class GuiWordList(QDialog):
self.setObjectName("GuiWordList")
self.mainGui = mainGui
self.mainTheme = mainGui.mainTheme
self.theProject = mainGui.theProject
self.setWindowTitle(self.tr("Project Word List"))
@@ -80,10 +79,10 @@ class GuiWordList(QDialog):
self.newEntry = QLineEdit()
self.addButton = QPushButton(self.mainTheme.getIcon("add"), "")
self.addButton = QPushButton(CONFIG.theme.getIcon("add"), "")
self.addButton.clicked.connect(self._doAdd)
self.delButton = QPushButton(self.mainTheme.getIcon("remove"), "")
self.delButton = QPushButton(CONFIG.theme.getIcon("remove"), "")
self.delButton.clicked.connect(self._doDelete)
self.editBox = QHBoxLayout()