Collect all alignment flags into a new types module
This commit is contained in:
@@ -26,7 +26,6 @@ from __future__ import annotations
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5.QtGui import QCloseEvent, QColor
|
from PyQt5.QtGui import QCloseEvent, QColor
|
||||||
from PyQt5.QtCore import Qt
|
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QTextBrowser, QVBoxLayout,
|
QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QTextBrowser, QVBoxLayout,
|
||||||
QWidget
|
QWidget
|
||||||
@@ -36,6 +35,7 @@ from novelwriter import CONFIG, SHARED
|
|||||||
from novelwriter.common import readTextFile
|
from novelwriter.common import readTextFile
|
||||||
from novelwriter.extensions.configlayout import NColourLabel
|
from novelwriter.extensions.configlayout import NColourLabel
|
||||||
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
||||||
|
from novelwriter.types import QtAlignRightTop
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -100,10 +100,8 @@ class GuiAbout(QDialog):
|
|||||||
self.innerBox.addSpacing(hB)
|
self.innerBox.addSpacing(hB)
|
||||||
self.innerBox.addWidget(self.btnBox)
|
self.innerBox.addWidget(self.btnBox)
|
||||||
|
|
||||||
topRight = Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignRight
|
|
||||||
|
|
||||||
self.outerBox = QHBoxLayout()
|
self.outerBox = QHBoxLayout()
|
||||||
self.outerBox.addWidget(self.nwLogo, 0, topRight)
|
self.outerBox.addWidget(self.nwLogo, 0, QtAlignRightTop)
|
||||||
self.outerBox.addLayout(self.innerBox, 1)
|
self.outerBox.addLayout(self.innerBox, 1)
|
||||||
|
|
||||||
self.setLayout(self.outerBox)
|
self.setLayout(self.outerBox)
|
||||||
|
|||||||
@@ -37,10 +37,11 @@ from PyQt5.QtWidgets import (
|
|||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.constants import nwConst, nwUnicode
|
from novelwriter.constants import nwConst, nwUnicode
|
||||||
from novelwriter.dialogs.quotes import GuiQuoteSelect
|
from novelwriter.dialogs.quotes import GuiQuoteSelect
|
||||||
from novelwriter.extensions.switch import NSwitch
|
|
||||||
from novelwriter.extensions.modified import NComboBox, NDoubleSpinBox, NSpinBox
|
|
||||||
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
|
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
|
||||||
|
from novelwriter.extensions.modified import NComboBox, NDoubleSpinBox, NSpinBox
|
||||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||||
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.types import QtAlignCenter
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -679,7 +680,7 @@ class GuiPreferences(QDialog):
|
|||||||
self.quoteSym["SO"].setMaxLength(1)
|
self.quoteSym["SO"].setMaxLength(1)
|
||||||
self.quoteSym["SO"].setReadOnly(True)
|
self.quoteSym["SO"].setReadOnly(True)
|
||||||
self.quoteSym["SO"].setFixedWidth(qWidth)
|
self.quoteSym["SO"].setFixedWidth(qWidth)
|
||||||
self.quoteSym["SO"].setAlignment(Qt.AlignCenter)
|
self.quoteSym["SO"].setAlignment(QtAlignCenter)
|
||||||
self.quoteSym["SO"].setText(CONFIG.fmtSQuoteOpen)
|
self.quoteSym["SO"].setText(CONFIG.fmtSQuoteOpen)
|
||||||
self.btnSingleStyleO = QToolButton(self)
|
self.btnSingleStyleO = QToolButton(self)
|
||||||
self.btnSingleStyleO.setIcon(mIcon)
|
self.btnSingleStyleO.setIcon(mIcon)
|
||||||
@@ -695,7 +696,7 @@ class GuiPreferences(QDialog):
|
|||||||
self.quoteSym["SC"].setMaxLength(1)
|
self.quoteSym["SC"].setMaxLength(1)
|
||||||
self.quoteSym["SC"].setReadOnly(True)
|
self.quoteSym["SC"].setReadOnly(True)
|
||||||
self.quoteSym["SC"].setFixedWidth(qWidth)
|
self.quoteSym["SC"].setFixedWidth(qWidth)
|
||||||
self.quoteSym["SC"].setAlignment(Qt.AlignCenter)
|
self.quoteSym["SC"].setAlignment(QtAlignCenter)
|
||||||
self.quoteSym["SC"].setText(CONFIG.fmtSQuoteClose)
|
self.quoteSym["SC"].setText(CONFIG.fmtSQuoteClose)
|
||||||
self.btnSingleStyleC = QToolButton(self)
|
self.btnSingleStyleC = QToolButton(self)
|
||||||
self.btnSingleStyleC.setIcon(mIcon)
|
self.btnSingleStyleC.setIcon(mIcon)
|
||||||
@@ -712,7 +713,7 @@ class GuiPreferences(QDialog):
|
|||||||
self.quoteSym["DO"].setMaxLength(1)
|
self.quoteSym["DO"].setMaxLength(1)
|
||||||
self.quoteSym["DO"].setReadOnly(True)
|
self.quoteSym["DO"].setReadOnly(True)
|
||||||
self.quoteSym["DO"].setFixedWidth(qWidth)
|
self.quoteSym["DO"].setFixedWidth(qWidth)
|
||||||
self.quoteSym["DO"].setAlignment(Qt.AlignCenter)
|
self.quoteSym["DO"].setAlignment(QtAlignCenter)
|
||||||
self.quoteSym["DO"].setText(CONFIG.fmtDQuoteOpen)
|
self.quoteSym["DO"].setText(CONFIG.fmtDQuoteOpen)
|
||||||
self.btnDoubleStyleO = QToolButton(self)
|
self.btnDoubleStyleO = QToolButton(self)
|
||||||
self.btnDoubleStyleO.setIcon(mIcon)
|
self.btnDoubleStyleO.setIcon(mIcon)
|
||||||
@@ -728,7 +729,7 @@ class GuiPreferences(QDialog):
|
|||||||
self.quoteSym["DC"].setMaxLength(1)
|
self.quoteSym["DC"].setMaxLength(1)
|
||||||
self.quoteSym["DC"].setReadOnly(True)
|
self.quoteSym["DC"].setReadOnly(True)
|
||||||
self.quoteSym["DC"].setFixedWidth(qWidth)
|
self.quoteSym["DC"].setFixedWidth(qWidth)
|
||||||
self.quoteSym["DC"].setAlignment(Qt.AlignCenter)
|
self.quoteSym["DC"].setAlignment(QtAlignCenter)
|
||||||
self.quoteSym["DC"].setText(CONFIG.fmtDQuoteClose)
|
self.quoteSym["DC"].setText(CONFIG.fmtDQuoteClose)
|
||||||
self.btnDoubleStyleC = QToolButton(self)
|
self.btnDoubleStyleC = QToolButton(self)
|
||||||
self.btnDoubleStyleC.setIcon(mIcon)
|
self.btnDoubleStyleC.setIcon(mIcon)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ from PyQt5.QtWidgets import (
|
|||||||
|
|
||||||
from novelwriter import CONFIG
|
from novelwriter import CONFIG
|
||||||
from novelwriter.constants import trConst, nwQuotes
|
from novelwriter.constants import trConst, nwQuotes
|
||||||
|
from novelwriter.types import QtAlignCenter, QtAlignTop
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -68,7 +69,7 @@ class GuiQuoteSelect(QDialog):
|
|||||||
self.previewLabel = QLabel(current)
|
self.previewLabel = QLabel(current)
|
||||||
self.previewLabel.setFont(lblFont)
|
self.previewLabel.setFont(lblFont)
|
||||||
self.previewLabel.setFixedSize(QSize(pxW, pxH))
|
self.previewLabel.setFixedSize(QSize(pxW, pxH))
|
||||||
self.previewLabel.setAlignment(Qt.AlignCenter)
|
self.previewLabel.setAlignment(QtAlignCenter)
|
||||||
self.previewLabel.setFrameStyle(QFrame.Box | QFrame.Plain)
|
self.previewLabel.setFrameStyle(QFrame.Box | QFrame.Plain)
|
||||||
|
|
||||||
# Quote Symbols
|
# Quote Symbols
|
||||||
@@ -94,7 +95,7 @@ class GuiQuoteSelect(QDialog):
|
|||||||
self.buttonBox.rejected.connect(self.reject)
|
self.buttonBox.rejected.connect(self.reject)
|
||||||
|
|
||||||
# Assemble
|
# Assemble
|
||||||
self.labelBox.addWidget(self.previewLabel, 0, Qt.AlignTop)
|
self.labelBox.addWidget(self.previewLabel, 0, QtAlignTop)
|
||||||
self.labelBox.addStretch(1)
|
self.labelBox.addStretch(1)
|
||||||
|
|
||||||
self.innerBox.addLayout(self.labelBox)
|
self.innerBox.addLayout(self.labelBox)
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ class NWErrorMessage(QDialog):
|
|||||||
|
|
||||||
# Assemble
|
# Assemble
|
||||||
self.mainBox = QGridLayout()
|
self.mainBox = QGridLayout()
|
||||||
self.mainBox.addWidget(self.msgIcon, 0, 0, 2, 1, Qt.AlignTop)
|
self.mainBox.addWidget(self.msgIcon, 0, 0, 2, 1, Qt.AlignmentFlag.AlignTop)
|
||||||
self.mainBox.addWidget(self.msgHead, 0, 1, 1, 1, Qt.AlignTop)
|
self.mainBox.addWidget(self.msgHead, 0, 1, 1, 1, Qt.AlignmentFlag.AlignTop)
|
||||||
self.mainBox.addWidget(self.msgBody, 1, 1, 1, 1)
|
self.mainBox.addWidget(self.msgBody, 1, 1, 1, 1)
|
||||||
self.mainBox.addWidget(self.btnBox, 2, 0, 1, 2)
|
self.mainBox.addWidget(self.btnBox, 2, 0, 1, 2)
|
||||||
self.mainBox.setSpacing(16)
|
self.mainBox.setSpacing(16)
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ from PyQt5.QtGui import QBrush, QColor, QPaintEvent, QPainter, QPen
|
|||||||
from PyQt5.QtCore import QRect, Qt
|
from PyQt5.QtCore import QRect, Qt
|
||||||
from PyQt5.QtWidgets import QProgressBar, QSizePolicy, QWidget
|
from PyQt5.QtWidgets import QProgressBar, QSizePolicy, QWidget
|
||||||
|
|
||||||
|
from novelwriter.types import QtAlignCenter
|
||||||
|
|
||||||
|
|
||||||
class NProgressCircle(QProgressBar):
|
class NProgressCircle(QProgressBar):
|
||||||
"""Extension: Circular Progress Widget
|
"""Extension: Circular Progress Widget
|
||||||
@@ -94,7 +96,7 @@ class NProgressCircle(QProgressBar):
|
|||||||
painter.setPen(self._cPen)
|
painter.setPen(self._cPen)
|
||||||
painter.drawArc(self._cRect, 90*16, -angle)
|
painter.drawArc(self._cRect, 90*16, -angle)
|
||||||
painter.setPen(self._tColor)
|
painter.setPen(self._tColor)
|
||||||
painter.drawText(self._cRect, Qt.AlignCenter, self._text or f"{progress:.1f} %")
|
painter.drawText(self._cRect, QtAlignCenter, self._text or f"{progress:.1f} %")
|
||||||
return
|
return
|
||||||
|
|
||||||
# END Class NProgressCircle
|
# END Class NProgressCircle
|
||||||
|
|||||||
@@ -37,8 +37,6 @@ from PyQt5.QtWidgets import (
|
|||||||
from novelwriter import CONFIG
|
from novelwriter import CONFIG
|
||||||
|
|
||||||
DEFAULT_SCALE = 0.9
|
DEFAULT_SCALE = 0.9
|
||||||
RIGHT_TOP = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTop
|
|
||||||
LEFT_TOP = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop
|
|
||||||
|
|
||||||
|
|
||||||
class NFixedPage(QFrame):
|
class NFixedPage(QFrame):
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ from PyQt5.QtWidgets import (
|
|||||||
QStyleOptionToolButton, QToolBar, QToolButton, QWidget
|
QStyleOptionToolButton, QToolBar, QToolButton, QWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from novelwriter.types import QtAlignLeft
|
||||||
|
|
||||||
|
|
||||||
class NPagedSideBar(QToolBar):
|
class NPagedSideBar(QToolBar):
|
||||||
"""Extensions: Paged Side Bar
|
"""Extensions: Paged Side Bar
|
||||||
@@ -171,7 +173,7 @@ class _NPagedToolButton(QToolButton):
|
|||||||
|
|
||||||
paint.setPen(textCol)
|
paint.setPen(textCol)
|
||||||
paint.setOpacity(1.0)
|
paint.setOpacity(1.0)
|
||||||
paint.drawText(QRectF(self._lM, self._tM, tW, tH), Qt.AlignLeft, self.text())
|
paint.drawText(QRectF(self._lM, self._tM, tW, tH), QtAlignLeft, self.text())
|
||||||
|
|
||||||
tC = self.height()//2
|
tC = self.height()//2
|
||||||
tW = self.width() - self._aH - self._lM
|
tW = self.width() - self._aH - self._lM
|
||||||
@@ -223,7 +225,7 @@ class _NPagedToolLabel(QLabel):
|
|||||||
|
|
||||||
paint.setPen(self._textCol)
|
paint.setPen(self._textCol)
|
||||||
paint.setOpacity(1.0)
|
paint.setOpacity(1.0)
|
||||||
paint.drawText(QRectF(self._lM, self._tM, tW, tH), Qt.AlignLeft, self.text())
|
paint.drawText(QRectF(self._lM, self._tM, tW, tH), QtAlignLeft, self.text())
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -24,10 +24,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from PyQt5.QtGui import QIcon
|
from PyQt5.QtGui import QIcon
|
||||||
from PyQt5.QtCore import Qt, pyqtSignal
|
from PyQt5.QtCore import pyqtSignal
|
||||||
from PyQt5.QtWidgets import QGridLayout, QLabel, QScrollArea, QSizePolicy, QWidget
|
from PyQt5.QtWidgets import QGridLayout, QLabel, QScrollArea, QSizePolicy, QWidget
|
||||||
|
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.types import QtAlignLeft, QtAlignRight, QtAlignRightMiddle
|
||||||
|
|
||||||
|
|
||||||
class NSwitchBox(QScrollArea):
|
class NSwitchBox(QScrollArea):
|
||||||
@@ -72,7 +73,7 @@ class NSwitchBox(QScrollArea):
|
|||||||
font = label.font()
|
font = label.font()
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
label.setFont(font)
|
label.setFont(font)
|
||||||
self._content.addWidget(label, self._index, 0, 1, 3, Qt.AlignLeft)
|
self._content.addWidget(label, self._index, 0, 1, 3, QtAlignLeft)
|
||||||
self._widgets.append(label)
|
self._widgets.append(label)
|
||||||
self._bumpIndex()
|
self._bumpIndex()
|
||||||
return
|
return
|
||||||
@@ -80,17 +81,17 @@ class NSwitchBox(QScrollArea):
|
|||||||
def addItem(self, qIcon: QIcon, text: str, identifier: str, default: bool = False) -> None:
|
def addItem(self, qIcon: QIcon, text: str, identifier: str, default: bool = False) -> None:
|
||||||
"""Add an item to the content box."""
|
"""Add an item to the content box."""
|
||||||
icon = QLabel("")
|
icon = QLabel("")
|
||||||
icon.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
icon.setAlignment(QtAlignRightMiddle)
|
||||||
icon.setPixmap(qIcon.pixmap(self._sIcon, self._sIcon))
|
icon.setPixmap(qIcon.pixmap(self._sIcon, self._sIcon))
|
||||||
self._content.addWidget(icon, self._index, 0, Qt.AlignLeft)
|
self._content.addWidget(icon, self._index, 0, QtAlignLeft)
|
||||||
|
|
||||||
label = QLabel(text)
|
label = QLabel(text)
|
||||||
self._content.addWidget(label, self._index, 1, Qt.AlignLeft)
|
self._content.addWidget(label, self._index, 1, QtAlignLeft)
|
||||||
|
|
||||||
switch = NSwitch(self, height=self._hSwitch)
|
switch = NSwitch(self, height=self._hSwitch)
|
||||||
switch.setChecked(default)
|
switch.setChecked(default)
|
||||||
switch.toggled.connect(lambda state: self._emitSwitchSignal(identifier, state))
|
switch.toggled.connect(lambda state: self._emitSwitchSignal(identifier, state))
|
||||||
self._content.addWidget(switch, self._index, 2, Qt.AlignRight)
|
self._content.addWidget(switch, self._index, 2, QtAlignRight)
|
||||||
|
|
||||||
self._widgets.append(switch)
|
self._widgets.append(switch)
|
||||||
self._bumpIndex()
|
self._bumpIndex()
|
||||||
@@ -101,7 +102,7 @@ class NSwitchBox(QScrollArea):
|
|||||||
"""Add a blank entry in the content box."""
|
"""Add a blank entry in the content box."""
|
||||||
spacer = QWidget()
|
spacer = QWidget()
|
||||||
spacer.setFixedHeight(int(0.5*self._sIcon))
|
spacer.setFixedHeight(int(0.5*self._sIcon))
|
||||||
self._content.addWidget(spacer, self._index, 0, 1, 3, Qt.AlignLeft)
|
self._content.addWidget(spacer, self._index, 0, 1, 3, QtAlignLeft)
|
||||||
self._widgets.append(spacer)
|
self._widgets.append(spacer)
|
||||||
self._bumpIndex()
|
self._bumpIndex()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ from novelwriter.gui.editordocument import GuiTextDocument
|
|||||||
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
||||||
from novelwriter.text.counting import standardCounter
|
from novelwriter.text.counting import standardCounter
|
||||||
from novelwriter.tools.lipsum import GuiLipsum
|
from novelwriter.tools.lipsum import GuiLipsum
|
||||||
|
from novelwriter.types import (
|
||||||
|
QtAlignCenterTop, QtAlignJustify, QtAlignLeft, QtAlignLeftTop, QtAlignRight
|
||||||
|
)
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -339,7 +342,7 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
options = QTextOption()
|
options = QTextOption()
|
||||||
|
|
||||||
if CONFIG.doJustify:
|
if CONFIG.doJustify:
|
||||||
options.setAlignment(Qt.AlignmentFlag.AlignJustify)
|
options.setAlignment(QtAlignJustify)
|
||||||
if CONFIG.showTabsNSpaces:
|
if CONFIG.showTabsNSpaces:
|
||||||
options.setFlags(options.flags() | QTextOption.Flag.ShowTabsAndSpaces)
|
options.setFlags(options.flags() | QTextOption.Flag.ShowTabsAndSpaces)
|
||||||
if CONFIG.showLineEndings:
|
if CONFIG.showLineEndings:
|
||||||
@@ -2514,8 +2517,8 @@ class GuiDocEditSearch(QFrame):
|
|||||||
self.replaceButton.setToolTip(self.tr("Find and replace in current document"))
|
self.replaceButton.setToolTip(self.tr("Find and replace in current document"))
|
||||||
self.replaceButton.clicked.connect(self._doReplace)
|
self.replaceButton.clicked.connect(self._doReplace)
|
||||||
|
|
||||||
self.mainBox.addWidget(self.searchLabel, 0, 0, 1, 2, Qt.AlignmentFlag.AlignLeft)
|
self.mainBox.addWidget(self.searchLabel, 0, 0, 1, 2, QtAlignLeft)
|
||||||
self.mainBox.addWidget(self.searchOpt, 0, 2, 1, 3, Qt.AlignmentFlag.AlignRight)
|
self.mainBox.addWidget(self.searchOpt, 0, 2, 1, 3, QtAlignRight)
|
||||||
self.mainBox.addWidget(self.showReplace, 1, 0, 1, 1)
|
self.mainBox.addWidget(self.showReplace, 1, 0, 1, 1)
|
||||||
self.mainBox.addWidget(self.searchBox, 1, 1, 1, 2)
|
self.mainBox.addWidget(self.searchBox, 1, 1, 1, 2)
|
||||||
self.mainBox.addWidget(self.searchButton, 1, 3, 1, 1)
|
self.mainBox.addWidget(self.searchButton, 1, 3, 1, 1)
|
||||||
@@ -2830,7 +2833,7 @@ class GuiDocEditHeader(QWidget):
|
|||||||
self.itemTitle.setMargin(0)
|
self.itemTitle.setMargin(0)
|
||||||
self.itemTitle.setContentsMargins(0, 0, 0, 0)
|
self.itemTitle.setContentsMargins(0, 0, 0, 0)
|
||||||
self.itemTitle.setAutoFillBackground(True)
|
self.itemTitle.setAutoFillBackground(True)
|
||||||
self.itemTitle.setAlignment(Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignTop)
|
self.itemTitle.setAlignment(QtAlignCenterTop)
|
||||||
self.itemTitle.setFixedHeight(iPx)
|
self.itemTitle.setFixedHeight(iPx)
|
||||||
|
|
||||||
lblFont = self.itemTitle.font()
|
lblFont = self.itemTitle.font()
|
||||||
@@ -3053,13 +3056,11 @@ class GuiDocEditFooter(QWidget):
|
|||||||
self.setContentsMargins(0, 0, 0, 0)
|
self.setContentsMargins(0, 0, 0, 0)
|
||||||
self.setAutoFillBackground(True)
|
self.setAutoFillBackground(True)
|
||||||
|
|
||||||
alLeftTop = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop
|
|
||||||
|
|
||||||
# Status
|
# Status
|
||||||
self.statusIcon = QLabel("", self)
|
self.statusIcon = QLabel("", self)
|
||||||
self.statusIcon.setContentsMargins(0, 0, 0, 0)
|
self.statusIcon.setContentsMargins(0, 0, 0, 0)
|
||||||
self.statusIcon.setFixedHeight(iPx)
|
self.statusIcon.setFixedHeight(iPx)
|
||||||
self.statusIcon.setAlignment(alLeftTop)
|
self.statusIcon.setAlignment(QtAlignLeftTop)
|
||||||
|
|
||||||
self.statusText = QLabel(self.tr("Status"))
|
self.statusText = QLabel(self.tr("Status"))
|
||||||
self.statusText.setIndent(0)
|
self.statusText.setIndent(0)
|
||||||
@@ -3067,14 +3068,14 @@ class GuiDocEditFooter(QWidget):
|
|||||||
self.statusText.setContentsMargins(0, 0, 0, 0)
|
self.statusText.setContentsMargins(0, 0, 0, 0)
|
||||||
self.statusText.setAutoFillBackground(True)
|
self.statusText.setAutoFillBackground(True)
|
||||||
self.statusText.setFixedHeight(fPx)
|
self.statusText.setFixedHeight(fPx)
|
||||||
self.statusText.setAlignment(alLeftTop)
|
self.statusText.setAlignment(QtAlignLeftTop)
|
||||||
self.statusText.setFont(lblFont)
|
self.statusText.setFont(lblFont)
|
||||||
|
|
||||||
# Lines
|
# Lines
|
||||||
self.linesIcon = QLabel("", self)
|
self.linesIcon = QLabel("", self)
|
||||||
self.linesIcon.setContentsMargins(0, 0, 0, 0)
|
self.linesIcon.setContentsMargins(0, 0, 0, 0)
|
||||||
self.linesIcon.setFixedHeight(iPx)
|
self.linesIcon.setFixedHeight(iPx)
|
||||||
self.linesIcon.setAlignment(alLeftTop)
|
self.linesIcon.setAlignment(QtAlignLeftTop)
|
||||||
|
|
||||||
self.linesText = QLabel("", self)
|
self.linesText = QLabel("", self)
|
||||||
self.linesText.setIndent(0)
|
self.linesText.setIndent(0)
|
||||||
@@ -3082,14 +3083,14 @@ class GuiDocEditFooter(QWidget):
|
|||||||
self.linesText.setContentsMargins(0, 0, 0, 0)
|
self.linesText.setContentsMargins(0, 0, 0, 0)
|
||||||
self.linesText.setAutoFillBackground(True)
|
self.linesText.setAutoFillBackground(True)
|
||||||
self.linesText.setFixedHeight(fPx)
|
self.linesText.setFixedHeight(fPx)
|
||||||
self.linesText.setAlignment(alLeftTop)
|
self.linesText.setAlignment(QtAlignLeftTop)
|
||||||
self.linesText.setFont(lblFont)
|
self.linesText.setFont(lblFont)
|
||||||
|
|
||||||
# Words
|
# Words
|
||||||
self.wordsIcon = QLabel("", self)
|
self.wordsIcon = QLabel("", self)
|
||||||
self.wordsIcon.setContentsMargins(0, 0, 0, 0)
|
self.wordsIcon.setContentsMargins(0, 0, 0, 0)
|
||||||
self.wordsIcon.setFixedHeight(iPx)
|
self.wordsIcon.setFixedHeight(iPx)
|
||||||
self.wordsIcon.setAlignment(alLeftTop)
|
self.wordsIcon.setAlignment(QtAlignLeftTop)
|
||||||
|
|
||||||
self.wordsText = QLabel("", self)
|
self.wordsText = QLabel("", self)
|
||||||
self.wordsText.setIndent(0)
|
self.wordsText.setIndent(0)
|
||||||
@@ -3097,7 +3098,7 @@ class GuiDocEditFooter(QWidget):
|
|||||||
self.wordsText.setContentsMargins(0, 0, 0, 0)
|
self.wordsText.setContentsMargins(0, 0, 0, 0)
|
||||||
self.wordsText.setAutoFillBackground(True)
|
self.wordsText.setAutoFillBackground(True)
|
||||||
self.wordsText.setFixedHeight(fPx)
|
self.wordsText.setFixedHeight(fPx)
|
||||||
self.wordsText.setAlignment(alLeftTop)
|
self.wordsText.setAlignment(QtAlignLeftTop)
|
||||||
self.wordsText.setFont(lblFont)
|
self.wordsText.setFont(lblFont)
|
||||||
|
|
||||||
# Assemble Layout
|
# Assemble Layout
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ from novelwriter.error import logException
|
|||||||
from novelwriter.extensions.eventfilters import WheelEventFilter
|
from novelwriter.extensions.eventfilters import WheelEventFilter
|
||||||
from novelwriter.extensions.modified import NIconToolButton
|
from novelwriter.extensions.modified import NIconToolButton
|
||||||
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
||||||
|
from novelwriter.types import QtAlignCenterTop, QtAlignJustify
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -164,7 +165,7 @@ class GuiDocViewer(QTextBrowser):
|
|||||||
self.document().setDocumentMargin(0)
|
self.document().setDocumentMargin(0)
|
||||||
options = QTextOption()
|
options = QTextOption()
|
||||||
if CONFIG.doJustify:
|
if CONFIG.doJustify:
|
||||||
options.setAlignment(Qt.AlignmentFlag.AlignJustify)
|
options.setAlignment(QtAlignJustify)
|
||||||
self.document().setDefaultTextOption(options)
|
self.document().setDefaultTextOption(options)
|
||||||
|
|
||||||
# Scroll bars
|
# Scroll bars
|
||||||
@@ -639,7 +640,7 @@ class GuiDocViewHeader(QWidget):
|
|||||||
self.itemTitle.setMargin(0)
|
self.itemTitle.setMargin(0)
|
||||||
self.itemTitle.setContentsMargins(0, 0, 0, 0)
|
self.itemTitle.setContentsMargins(0, 0, 0, 0)
|
||||||
self.itemTitle.setAutoFillBackground(True)
|
self.itemTitle.setAutoFillBackground(True)
|
||||||
self.itemTitle.setAlignment(Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignTop)
|
self.itemTitle.setAlignment(QtAlignCenterTop)
|
||||||
self.itemTitle.setFixedHeight(iPx)
|
self.itemTitle.setFixedHeight(iPx)
|
||||||
|
|
||||||
lblFont = self.itemTitle.font()
|
lblFont = self.itemTitle.font()
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ from novelwriter.enum import nwDocMode, nwItemClass, nwOutline
|
|||||||
from novelwriter.extensions.modified import NIconToolButton
|
from novelwriter.extensions.modified import NIconToolButton
|
||||||
from novelwriter.extensions.novelselector import NovelSelector
|
from novelwriter.extensions.novelselector import NovelSelector
|
||||||
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
||||||
|
from novelwriter.types import QtAlignRight
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -676,7 +677,7 @@ class GuiNovelTree(QTreeWidget):
|
|||||||
newItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
|
newItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
|
||||||
newItem.setData(self.C_DATA, self.D_TITLE, sTitle)
|
newItem.setData(self.C_DATA, self.D_TITLE, sTitle)
|
||||||
newItem.setData(self.C_DATA, self.D_KEY, tKey)
|
newItem.setData(self.C_DATA, self.D_KEY, tKey)
|
||||||
newItem.setTextAlignment(self.C_WORDS, Qt.AlignmentFlag.AlignRight)
|
newItem.setTextAlignment(self.C_WORDS, QtAlignRight)
|
||||||
|
|
||||||
self._updateTreeItemValues(newItem, novIdx, tHandle, sTitle)
|
self._updateTreeItemValues(newItem, novIdx, tHandle, sTitle)
|
||||||
self._treeMap[tKey] = newItem
|
self._treeMap[tKey] = newItem
|
||||||
|
|||||||
+43
-45
@@ -48,6 +48,7 @@ from novelwriter.error import logException
|
|||||||
from novelwriter.common import checkInt, formatFileFilter, makeFileNameSafe
|
from novelwriter.common import checkInt, formatFileFilter, makeFileNameSafe
|
||||||
from novelwriter.constants import nwHeaders, trConst, nwKeyWords, nwLabels
|
from novelwriter.constants import nwHeaders, trConst, nwKeyWords, nwLabels
|
||||||
from novelwriter.extensions.novelselector import NovelSelector
|
from novelwriter.extensions.novelselector import NovelSelector
|
||||||
|
from novelwriter.types import QtAlignLeftTop, QtAlignRight, QtAlignRightTop
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -675,11 +676,11 @@ class GuiOutlineTree(QTreeWidget):
|
|||||||
headItem = self.headerItem()
|
headItem = self.headerItem()
|
||||||
if isinstance(headItem, QTreeWidgetItem):
|
if isinstance(headItem, QTreeWidgetItem):
|
||||||
headItem.setTextAlignment(
|
headItem.setTextAlignment(
|
||||||
self._colIdx[nwOutline.CCOUNT], Qt.AlignmentFlag.AlignRight)
|
self._colIdx[nwOutline.CCOUNT], QtAlignRight)
|
||||||
headItem.setTextAlignment(
|
headItem.setTextAlignment(
|
||||||
self._colIdx[nwOutline.WCOUNT], Qt.AlignmentFlag.AlignRight)
|
self._colIdx[nwOutline.WCOUNT], QtAlignRight)
|
||||||
headItem.setTextAlignment(
|
headItem.setTextAlignment(
|
||||||
self._colIdx[nwOutline.PCOUNT], Qt.AlignmentFlag.AlignRight)
|
self._colIdx[nwOutline.PCOUNT], QtAlignRight)
|
||||||
|
|
||||||
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, activeOnly=True)
|
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, activeOnly=True)
|
||||||
for _, tHandle, sTitle, novIdx in novStruct:
|
for _, tHandle, sTitle, novIdx in novStruct:
|
||||||
@@ -705,9 +706,9 @@ class GuiOutlineTree(QTreeWidget):
|
|||||||
trItem.setText(self._colIdx[nwOutline.CCOUNT], f"{novIdx.charCount:n}")
|
trItem.setText(self._colIdx[nwOutline.CCOUNT], f"{novIdx.charCount:n}")
|
||||||
trItem.setText(self._colIdx[nwOutline.WCOUNT], f"{novIdx.wordCount:n}")
|
trItem.setText(self._colIdx[nwOutline.WCOUNT], f"{novIdx.wordCount:n}")
|
||||||
trItem.setText(self._colIdx[nwOutline.PCOUNT], f"{novIdx.paraCount:n}")
|
trItem.setText(self._colIdx[nwOutline.PCOUNT], f"{novIdx.paraCount:n}")
|
||||||
trItem.setTextAlignment(self._colIdx[nwOutline.CCOUNT], Qt.AlignmentFlag.AlignRight)
|
trItem.setTextAlignment(self._colIdx[nwOutline.CCOUNT], QtAlignRight)
|
||||||
trItem.setTextAlignment(self._colIdx[nwOutline.WCOUNT], Qt.AlignmentFlag.AlignRight)
|
trItem.setTextAlignment(self._colIdx[nwOutline.WCOUNT], QtAlignRight)
|
||||||
trItem.setTextAlignment(self._colIdx[nwOutline.PCOUNT], Qt.AlignmentFlag.AlignRight)
|
trItem.setTextAlignment(self._colIdx[nwOutline.PCOUNT], QtAlignRight)
|
||||||
|
|
||||||
refs = SHARED.project.index.getReferences(tHandle, sTitle)
|
refs = SHARED.project.index.getReferences(tHandle, sTitle)
|
||||||
trItem.setText(self._colIdx[nwOutline.POV], ", ".join(refs[nwKeyWords.POV_KEY]))
|
trItem.setText(self._colIdx[nwOutline.POV], ", ".join(refs[nwKeyWords.POV_KEY]))
|
||||||
@@ -834,9 +835,9 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
self.cCValue.setMinimumWidth(wCount)
|
self.cCValue.setMinimumWidth(wCount)
|
||||||
self.wCValue.setMinimumWidth(wCount)
|
self.wCValue.setMinimumWidth(wCount)
|
||||||
self.pCValue.setMinimumWidth(wCount)
|
self.pCValue.setMinimumWidth(wCount)
|
||||||
self.cCValue.setAlignment(Qt.AlignRight)
|
self.cCValue.setAlignment(QtAlignRight)
|
||||||
self.wCValue.setAlignment(Qt.AlignRight)
|
self.wCValue.setAlignment(QtAlignRight)
|
||||||
self.pCValue.setAlignment(Qt.AlignRight)
|
self.pCValue.setAlignment(QtAlignRight)
|
||||||
|
|
||||||
# Synopsis
|
# Synopsis
|
||||||
self.synopLabel = QLabel(self.tr("Synopsis"))
|
self.synopLabel = QLabel(self.tr("Synopsis"))
|
||||||
@@ -844,7 +845,7 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
|
|
||||||
self.synopValue = QLabel("")
|
self.synopValue = QLabel("")
|
||||||
self.synopValue.setWordWrap(True)
|
self.synopValue.setWordWrap(True)
|
||||||
self.synopValue.setAlignment(Qt.AlignTop | Qt.AlignLeft)
|
self.synopValue.setAlignment(QtAlignLeftTop)
|
||||||
|
|
||||||
self.synopLWrap = QHBoxLayout()
|
self.synopLWrap = QHBoxLayout()
|
||||||
self.synopLWrap.addWidget(self.synopValue, 1)
|
self.synopLWrap.addWidget(self.synopValue, 1)
|
||||||
@@ -925,23 +926,20 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
self.mainForm = QGridLayout()
|
self.mainForm = QGridLayout()
|
||||||
self.mainGroup.setLayout(self.mainForm)
|
self.mainGroup.setLayout(self.mainForm)
|
||||||
|
|
||||||
topLeft = Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft
|
self.mainForm.addWidget(self.titleLabel, 0, 0, 1, 1, QtAlignLeftTop)
|
||||||
topRight = Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignRight
|
self.mainForm.addWidget(self.titleValue, 0, 1, 1, 1, QtAlignLeftTop)
|
||||||
|
self.mainForm.addWidget(self.cCLabel, 0, 2, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.titleLabel, 0, 0, 1, 1, topLeft)
|
self.mainForm.addWidget(self.cCValue, 0, 3, 1, 1, QtAlignRightTop)
|
||||||
self.mainForm.addWidget(self.titleValue, 0, 1, 1, 1, topLeft)
|
self.mainForm.addWidget(self.fileLabel, 1, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.cCLabel, 0, 2, 1, 1, topLeft)
|
self.mainForm.addWidget(self.fileValue, 1, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.cCValue, 0, 3, 1, 1, topRight)
|
self.mainForm.addWidget(self.wCLabel, 1, 2, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.fileLabel, 1, 0, 1, 1, topLeft)
|
self.mainForm.addWidget(self.wCValue, 1, 3, 1, 1, QtAlignRightTop)
|
||||||
self.mainForm.addWidget(self.fileValue, 1, 1, 1, 1, topLeft)
|
self.mainForm.addWidget(self.itemLabel, 2, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.wCLabel, 1, 2, 1, 1, topLeft)
|
self.mainForm.addWidget(self.itemValue, 2, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.wCValue, 1, 3, 1, 1, topRight)
|
self.mainForm.addWidget(self.pCLabel, 2, 2, 1, 1, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.itemLabel, 2, 0, 1, 1, topLeft)
|
self.mainForm.addWidget(self.pCValue, 2, 3, 1, 1, QtAlignRightTop)
|
||||||
self.mainForm.addWidget(self.itemValue, 2, 1, 1, 1, topLeft)
|
self.mainForm.addWidget(self.synopLabel, 3, 0, 1, 4, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.pCLabel, 2, 2, 1, 1, topLeft)
|
self.mainForm.addLayout(self.synopLWrap, 4, 0, 1, 4, QtAlignLeftTop)
|
||||||
self.mainForm.addWidget(self.pCValue, 2, 3, 1, 1, topRight)
|
|
||||||
self.mainForm.addWidget(self.synopLabel, 3, 0, 1, 4, topLeft)
|
|
||||||
self.mainForm.addLayout(self.synopLWrap, 4, 0, 1, 4, topLeft)
|
|
||||||
|
|
||||||
self.mainForm.setColumnStretch(1, 1)
|
self.mainForm.setColumnStretch(1, 1)
|
||||||
self.mainForm.setRowStretch(4, 1)
|
self.mainForm.setRowStretch(4, 1)
|
||||||
@@ -953,24 +951,24 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
self.tagsForm = QGridLayout()
|
self.tagsForm = QGridLayout()
|
||||||
self.tagsGroup.setLayout(self.tagsForm)
|
self.tagsGroup.setLayout(self.tagsForm)
|
||||||
|
|
||||||
self.tagsForm.addWidget(self.povKeyLabel, 0, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.povKeyLabel, 0, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.povKeyLWrap, 0, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.povKeyLWrap, 0, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.focKeyLabel, 1, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.focKeyLabel, 1, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.focKeyLWrap, 1, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.focKeyLWrap, 1, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.chrKeyLabel, 2, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.chrKeyLabel, 2, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.chrKeyLWrap, 2, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.chrKeyLWrap, 2, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.pltKeyLabel, 3, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.pltKeyLabel, 3, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.pltKeyLWrap, 3, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.pltKeyLWrap, 3, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.timKeyLabel, 4, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.timKeyLabel, 4, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.timKeyLWrap, 4, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.timKeyLWrap, 4, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.wldKeyLabel, 5, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.wldKeyLabel, 5, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.wldKeyLWrap, 5, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.wldKeyLWrap, 5, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.objKeyLabel, 6, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.objKeyLabel, 6, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.objKeyLWrap, 6, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.objKeyLWrap, 6, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.entKeyLabel, 7, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.entKeyLabel, 7, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.entKeyLWrap, 7, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.entKeyLWrap, 7, 1, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addWidget(self.cstKeyLabel, 8, 0, 1, 1, topLeft)
|
self.tagsForm.addWidget(self.cstKeyLabel, 8, 0, 1, 1, QtAlignLeftTop)
|
||||||
self.tagsForm.addLayout(self.cstKeyLWrap, 8, 1, 1, 1, topLeft)
|
self.tagsForm.addLayout(self.cstKeyLWrap, 8, 1, 1, 1, QtAlignLeftTop)
|
||||||
|
|
||||||
self.tagsForm.setColumnStretch(1, 1)
|
self.tagsForm.setColumnStretch(1, 1)
|
||||||
self.tagsForm.setRowStretch(8, 1)
|
self.tagsForm.setRowStretch(8, 1)
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ from novelwriter.dialogs.projectsettings import GuiProjectSettings
|
|||||||
from novelwriter.enum import nwDocMode, nwItemType, nwItemClass, nwItemLayout
|
from novelwriter.enum import nwDocMode, nwItemType, nwItemClass, nwItemLayout
|
||||||
from novelwriter.extensions.modified import NIconToolButton
|
from novelwriter.extensions.modified import NIconToolButton
|
||||||
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
from novelwriter.gui.theme import STYLES_MIN_TOOLBUTTON
|
||||||
|
from novelwriter.types import QtAlignLeft, QtAlignRight
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -1585,10 +1586,10 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
newItem.setText(self.C_ACTIVE, "")
|
newItem.setText(self.C_ACTIVE, "")
|
||||||
newItem.setText(self.C_STATUS, "")
|
newItem.setText(self.C_STATUS, "")
|
||||||
|
|
||||||
newItem.setTextAlignment(self.C_NAME, Qt.AlignmentFlag.AlignLeft)
|
newItem.setTextAlignment(self.C_NAME, QtAlignLeft)
|
||||||
newItem.setTextAlignment(self.C_COUNT, Qt.AlignmentFlag.AlignRight)
|
newItem.setTextAlignment(self.C_COUNT, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_ACTIVE, Qt.AlignmentFlag.AlignLeft)
|
newItem.setTextAlignment(self.C_ACTIVE, QtAlignLeft)
|
||||||
newItem.setTextAlignment(self.C_STATUS, Qt.AlignmentFlag.AlignLeft)
|
newItem.setTextAlignment(self.C_STATUS, QtAlignLeft)
|
||||||
|
|
||||||
newItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
|
newItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
|
||||||
newItem.setData(self.C_DATA, self.D_WORDS, 0)
|
newItem.setData(self.C_DATA, self.D_WORDS, 0)
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ from novelwriter import CONFIG, SHARED
|
|||||||
from novelwriter.common import checkInt, cssCol
|
from novelwriter.common import checkInt, cssCol
|
||||||
from novelwriter.core.coretools import DocSearch
|
from novelwriter.core.coretools import DocSearch
|
||||||
from novelwriter.core.item import NWItem
|
from novelwriter.core.item import NWItem
|
||||||
|
from novelwriter.types import QtAlignMiddle, QtAlignRight
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -124,7 +125,7 @@ class GuiProjectSearch(QWidget):
|
|||||||
# Assemble
|
# Assemble
|
||||||
self.headerBox = QHBoxLayout()
|
self.headerBox = QHBoxLayout()
|
||||||
self.headerBox.addWidget(self.viewLabel, 1)
|
self.headerBox.addWidget(self.viewLabel, 1)
|
||||||
self.headerBox.addWidget(self.searchOpt, 0, Qt.AlignmentFlag.AlignVCenter)
|
self.headerBox.addWidget(self.searchOpt, 0, QtAlignMiddle)
|
||||||
self.headerBox.setContentsMargins(0, 0, 0, 0)
|
self.headerBox.setContentsMargins(0, 0, 0, 0)
|
||||||
self.headerBox.setSpacing(0)
|
self.headerBox.setSpacing(0)
|
||||||
|
|
||||||
@@ -328,7 +329,7 @@ class GuiProjectSearch(QWidget):
|
|||||||
tItem.setIcon(self.C_NAME, docIcon)
|
tItem.setIcon(self.C_NAME, docIcon)
|
||||||
tItem.setData(self.C_NAME, self.D_HANDLE, tHandle)
|
tItem.setData(self.C_NAME, self.D_HANDLE, tHandle)
|
||||||
tItem.setText(self.C_COUNT, f"({len(results):n}{ext})")
|
tItem.setText(self.C_COUNT, f"({len(results):n}{ext})")
|
||||||
tItem.setTextAlignment(self.C_COUNT, Qt.AlignmentFlag.AlignRight)
|
tItem.setTextAlignment(self.C_COUNT, QtAlignRight)
|
||||||
tItem.setForeground(self.C_COUNT, self.palette().highlight())
|
tItem.setForeground(self.C_COUNT, self.palette().highlight())
|
||||||
|
|
||||||
index = self._map.get(tHandle, (self.searchResult.topLevelItemCount(), 0.0))[0]
|
index = self._map.get(tHandle, (self.searchResult.topLevelItemCount(), 0.0))[0]
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ from PyQt5.QtWidgets import (
|
|||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.common import readTextFile
|
from novelwriter.common import readTextFile
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.types import QtAlignLeft, QtAlignRight
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -82,11 +83,11 @@ class GuiLipsum(QDialog):
|
|||||||
self.randSwitch = NSwitch(self)
|
self.randSwitch = NSwitch(self)
|
||||||
|
|
||||||
self.formBox = QGridLayout()
|
self.formBox = QGridLayout()
|
||||||
self.formBox.addWidget(self.headLabel, 0, 0, 1, 2, Qt.AlignLeft)
|
self.formBox.addWidget(self.headLabel, 0, 0, 1, 2, QtAlignLeft)
|
||||||
self.formBox.addWidget(self.paraLabel, 1, 0, 1, 1, Qt.AlignLeft)
|
self.formBox.addWidget(self.paraLabel, 1, 0, 1, 1, QtAlignLeft)
|
||||||
self.formBox.addWidget(self.paraCount, 1, 1, 1, 1, Qt.AlignRight)
|
self.formBox.addWidget(self.paraCount, 1, 1, 1, 1, QtAlignRight)
|
||||||
self.formBox.addWidget(self.randLabel, 2, 0, 1, 1, Qt.AlignLeft)
|
self.formBox.addWidget(self.randLabel, 2, 0, 1, 1, QtAlignLeft)
|
||||||
self.formBox.addWidget(self.randSwitch, 2, 1, 1, 1, Qt.AlignRight)
|
self.formBox.addWidget(self.randSwitch, 2, 1, 1, 1, QtAlignRight)
|
||||||
self.formBox.setVerticalSpacing(vSp)
|
self.formBox.setVerticalSpacing(vSp)
|
||||||
self.formBox.setRowStretch(3, 1)
|
self.formBox.setRowStretch(3, 1)
|
||||||
self.innerBox.addLayout(self.formBox)
|
self.innerBox.addLayout(self.formBox)
|
||||||
|
|||||||
@@ -36,13 +36,14 @@ from PyQt5.QtWidgets import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.enum import nwBuildFmt
|
|
||||||
from novelwriter.common import makeFileNameSafe, openExternalPath
|
from novelwriter.common import makeFileNameSafe, openExternalPath
|
||||||
from novelwriter.constants import nwLabels
|
from novelwriter.constants import nwLabels
|
||||||
from novelwriter.core.item import NWItem
|
|
||||||
from novelwriter.core.docbuild import NWBuildDocument
|
|
||||||
from novelwriter.core.buildsettings import BuildSettings
|
from novelwriter.core.buildsettings import BuildSettings
|
||||||
|
from novelwriter.core.docbuild import NWBuildDocument
|
||||||
|
from novelwriter.core.item import NWItem
|
||||||
|
from novelwriter.enum import nwBuildFmt
|
||||||
from novelwriter.extensions.simpleprogress import NProgressSimple
|
from novelwriter.extensions.simpleprogress import NProgressSimple
|
||||||
|
from novelwriter.types import QtAlignCenter
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -199,7 +200,7 @@ class GuiManuscriptBuild(QDialog):
|
|||||||
])
|
])
|
||||||
|
|
||||||
self.outerBox = QVBoxLayout()
|
self.outerBox = QVBoxLayout()
|
||||||
self.outerBox.addWidget(self.lblMain, 0, Qt.AlignCenter)
|
self.outerBox.addWidget(self.lblMain, 0, QtAlignCenter)
|
||||||
self.outerBox.addSpacing(sp16)
|
self.outerBox.addSpacing(sp16)
|
||||||
self.outerBox.addWidget(self.mainSplit, 1)
|
self.outerBox.addWidget(self.mainSplit, 1)
|
||||||
self.outerBox.addSpacing(sp4)
|
self.outerBox.addSpacing(sp4)
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ from novelwriter.extensions.modified import NIconToolButton
|
|||||||
from novelwriter.gui.theme import STYLES_FLAT_TABS, STYLES_MIN_TOOLBUTTON
|
from novelwriter.gui.theme import STYLES_FLAT_TABS, STYLES_MIN_TOOLBUTTON
|
||||||
from novelwriter.tools.manusbuild import GuiManuscriptBuild
|
from novelwriter.tools.manusbuild import GuiManuscriptBuild
|
||||||
from novelwriter.tools.manussettings import GuiBuildSettings
|
from novelwriter.tools.manussettings import GuiBuildSettings
|
||||||
|
from novelwriter.types import (
|
||||||
|
QtAlignAbsolute, QtAlignCenter, QtAlignJustify, QtAlignRight, QtAlignTop
|
||||||
|
)
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -777,7 +780,7 @@ class _PreviewWidget(QTextBrowser):
|
|||||||
self.ageLabel.setFont(aFont)
|
self.ageLabel.setFont(aFont)
|
||||||
self.ageLabel.setPalette(aPalette)
|
self.ageLabel.setPalette(aPalette)
|
||||||
self.ageLabel.setAutoFillBackground(True)
|
self.ageLabel.setAutoFillBackground(True)
|
||||||
self.ageLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
self.ageLabel.setAlignment(QtAlignCenter)
|
||||||
self.ageLabel.setFixedHeight(int(2.1*SHARED.theme.fontPixelSize))
|
self.ageLabel.setFixedHeight(int(2.1*SHARED.theme.fontPixelSize))
|
||||||
|
|
||||||
# Progress
|
# Progress
|
||||||
@@ -816,9 +819,9 @@ class _PreviewWidget(QTextBrowser):
|
|||||||
"""Enable/disable the justify text option."""
|
"""Enable/disable the justify text option."""
|
||||||
pOptions = self.document().defaultTextOption()
|
pOptions = self.document().defaultTextOption()
|
||||||
if state:
|
if state:
|
||||||
pOptions.setAlignment(Qt.AlignmentFlag.AlignJustify)
|
pOptions.setAlignment(QtAlignJustify)
|
||||||
else:
|
else:
|
||||||
pOptions.setAlignment(Qt.AlignmentFlag.AlignAbsolute)
|
pOptions.setAlignment(QtAlignAbsolute)
|
||||||
self.document().setDefaultTextOption(pOptions)
|
self.document().setDefaultTextOption(pOptions)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -993,8 +996,8 @@ class _StatsWidget(QWidget):
|
|||||||
self.mainStack.addWidget(self.maxWidget)
|
self.mainStack.addWidget(self.maxWidget)
|
||||||
|
|
||||||
self.outerBox = QHBoxLayout()
|
self.outerBox = QHBoxLayout()
|
||||||
self.outerBox.addWidget(self.toggleButton, 0, Qt.AlignmentFlag.AlignTop)
|
self.outerBox.addWidget(self.toggleButton, 0, QtAlignTop)
|
||||||
self.outerBox.addWidget(self.mainStack, 1, Qt.AlignmentFlag.AlignTop)
|
self.outerBox.addWidget(self.mainStack, 1, QtAlignTop)
|
||||||
self.outerBox.setContentsMargins(0, 0, 0, 0)
|
self.outerBox.setContentsMargins(0, 0, 0, 0)
|
||||||
|
|
||||||
self.setLayout(self.outerBox)
|
self.setLayout(self.outerBox)
|
||||||
@@ -1083,8 +1086,6 @@ class _StatsWidget(QWidget):
|
|||||||
hPx = CONFIG.pxInt(12)
|
hPx = CONFIG.pxInt(12)
|
||||||
vPx = CONFIG.pxInt(4)
|
vPx = CONFIG.pxInt(4)
|
||||||
|
|
||||||
alignRight = Qt.AlignmentFlag.AlignRight
|
|
||||||
|
|
||||||
# Left Column
|
# Left Column
|
||||||
self.maxTotalWords = QLabel(self)
|
self.maxTotalWords = QLabel(self)
|
||||||
self.maxHeaderWords = QLabel(self)
|
self.maxHeaderWords = QLabel(self)
|
||||||
@@ -1092,11 +1093,11 @@ class _StatsWidget(QWidget):
|
|||||||
self.maxTitleCount = QLabel(self)
|
self.maxTitleCount = QLabel(self)
|
||||||
self.maxParCount = QLabel(self)
|
self.maxParCount = QLabel(self)
|
||||||
|
|
||||||
self.maxTotalWords.setAlignment(alignRight)
|
self.maxTotalWords.setAlignment(QtAlignRight)
|
||||||
self.maxHeaderWords.setAlignment(alignRight)
|
self.maxHeaderWords.setAlignment(QtAlignRight)
|
||||||
self.maxTextWords.setAlignment(alignRight)
|
self.maxTextWords.setAlignment(QtAlignRight)
|
||||||
self.maxTitleCount.setAlignment(alignRight)
|
self.maxTitleCount.setAlignment(QtAlignRight)
|
||||||
self.maxParCount.setAlignment(alignRight)
|
self.maxParCount.setAlignment(QtAlignRight)
|
||||||
|
|
||||||
self.leftForm = QFormLayout()
|
self.leftForm = QFormLayout()
|
||||||
self.leftForm.addRow(self.tr("Words"), self.maxTotalWords)
|
self.leftForm.addRow(self.tr("Words"), self.maxTotalWords)
|
||||||
@@ -1117,13 +1118,13 @@ class _StatsWidget(QWidget):
|
|||||||
self.maxHeaderWordChars = QLabel(self)
|
self.maxHeaderWordChars = QLabel(self)
|
||||||
self.maxTextWordChars = QLabel(self)
|
self.maxTextWordChars = QLabel(self)
|
||||||
|
|
||||||
self.maxTotalChars.setAlignment(alignRight)
|
self.maxTotalChars.setAlignment(QtAlignRight)
|
||||||
self.maxHeaderChars.setAlignment(alignRight)
|
self.maxHeaderChars.setAlignment(QtAlignRight)
|
||||||
self.maxTextChars.setAlignment(alignRight)
|
self.maxTextChars.setAlignment(QtAlignRight)
|
||||||
|
|
||||||
self.maxTotalWordChars.setAlignment(alignRight)
|
self.maxTotalWordChars.setAlignment(QtAlignRight)
|
||||||
self.maxHeaderWordChars.setAlignment(alignRight)
|
self.maxHeaderWordChars.setAlignment(QtAlignRight)
|
||||||
self.maxTextWordChars.setAlignment(alignRight)
|
self.maxTextWordChars.setAlignment(QtAlignRight)
|
||||||
|
|
||||||
self.rightForm = QFormLayout()
|
self.rightForm = QFormLayout()
|
||||||
self.rightForm.addRow(self.tr("Characters"), self.maxTotalChars)
|
self.rightForm.addRow(self.tr("Characters"), self.maxTotalChars)
|
||||||
|
|||||||
@@ -39,13 +39,14 @@ from PyQt5.QtWidgets import (
|
|||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, trConst
|
from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, trConst
|
||||||
from novelwriter.core.buildsettings import BuildSettings, FilterMode
|
from novelwriter.core.buildsettings import BuildSettings, FilterMode
|
||||||
from novelwriter.extensions.switch import NSwitch
|
|
||||||
from novelwriter.extensions.modified import NComboBox, NDoubleSpinBox, NSpinBox
|
|
||||||
from novelwriter.extensions.switchbox import NSwitchBox
|
|
||||||
from novelwriter.extensions.configlayout import (
|
from novelwriter.extensions.configlayout import (
|
||||||
NColourLabel, NFixedPage, NScrollableForm, NScrollablePage
|
NColourLabel, NFixedPage, NScrollableForm, NScrollablePage
|
||||||
)
|
)
|
||||||
|
from novelwriter.extensions.modified import NComboBox, NDoubleSpinBox, NSpinBox
|
||||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||||
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.extensions.switchbox import NSwitchBox
|
||||||
|
from novelwriter.types import QtAlignLeft
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -473,7 +474,7 @@ class _FilterTab(NFixedPage):
|
|||||||
trItem.setData(self.C_DATA, self.D_FILE, isFile)
|
trItem.setData(self.C_DATA, self.D_FILE, isFile)
|
||||||
trItem.setIcon(self.C_ACTIVE, SHARED.theme.getIcon(iconName))
|
trItem.setIcon(self.C_ACTIVE, SHARED.theme.getIcon(iconName))
|
||||||
|
|
||||||
trItem.setTextAlignment(self.C_NAME, Qt.AlignLeft)
|
trItem.setTextAlignment(self.C_NAME, QtAlignLeft)
|
||||||
|
|
||||||
if pHandle is None and nwItem.isRootType():
|
if pHandle is None and nwItem.isRootType():
|
||||||
self.optTree.addTopLevelItem(trItem)
|
self.optTree.addTopLevelItem(trItem)
|
||||||
|
|||||||
@@ -37,10 +37,11 @@ from PyQt5.QtWidgets import (
|
|||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.common import formatTime, numberToRoman
|
from novelwriter.common import formatTime, numberToRoman
|
||||||
from novelwriter.constants import nwUnicode
|
from novelwriter.constants import nwUnicode
|
||||||
from novelwriter.extensions.switch import NSwitch
|
|
||||||
from novelwriter.extensions.configlayout import NColourLabel, NFixedPage, NScrollablePage
|
from novelwriter.extensions.configlayout import NColourLabel, NFixedPage, NScrollablePage
|
||||||
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
|
||||||
from novelwriter.extensions.novelselector import NovelSelector
|
from novelwriter.extensions.novelselector import NovelSelector
|
||||||
|
from novelwriter.extensions.pagedsidebar import NPagedSideBar
|
||||||
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.types import QtAlignRight
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -337,10 +338,10 @@ class _ContentsPage(NFixedPage):
|
|||||||
|
|
||||||
treeHeadItem = self.tocTree.headerItem()
|
treeHeadItem = self.tocTree.headerItem()
|
||||||
if treeHeadItem:
|
if treeHeadItem:
|
||||||
treeHeadItem.setTextAlignment(self.C_WORDS, Qt.AlignmentFlag.AlignRight)
|
treeHeadItem.setTextAlignment(self.C_WORDS, QtAlignRight)
|
||||||
treeHeadItem.setTextAlignment(self.C_PAGES, Qt.AlignmentFlag.AlignRight)
|
treeHeadItem.setTextAlignment(self.C_PAGES, QtAlignRight)
|
||||||
treeHeadItem.setTextAlignment(self.C_PAGE, Qt.AlignmentFlag.AlignRight)
|
treeHeadItem.setTextAlignment(self.C_PAGE, QtAlignRight)
|
||||||
treeHeadItem.setTextAlignment(self.C_PROG, Qt.AlignmentFlag.AlignRight)
|
treeHeadItem.setTextAlignment(self.C_PROG, QtAlignRight)
|
||||||
|
|
||||||
treeHeader = self.tocTree.header()
|
treeHeader = self.tocTree.header()
|
||||||
treeHeader.setStretchLastSection(True)
|
treeHeader.setStretchLastSection(True)
|
||||||
@@ -490,10 +491,10 @@ class _ContentsPage(NFixedPage):
|
|||||||
newItem.setText(self.C_PAGE, progPage)
|
newItem.setText(self.C_PAGE, progPage)
|
||||||
newItem.setText(self.C_PROG, progText)
|
newItem.setText(self.C_PROG, progText)
|
||||||
|
|
||||||
newItem.setTextAlignment(self.C_WORDS, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_WORDS, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_PAGES, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_PAGES, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_PAGE, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_PAGE, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_PROG, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_PROG, QtAlignRight)
|
||||||
|
|
||||||
# Make pages and titles/partitions stand out
|
# Make pages and titles/partitions stand out
|
||||||
if tLevel < 2:
|
if tLevel < 2:
|
||||||
|
|||||||
@@ -41,14 +41,15 @@ from PyQt5.QtWidgets import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.enum import nwItemClass
|
|
||||||
from novelwriter.common import cssCol, formatInt, makeFileNameSafe
|
from novelwriter.common import cssCol, formatInt, makeFileNameSafe
|
||||||
from novelwriter.constants import nwFiles
|
from novelwriter.constants import nwFiles
|
||||||
from novelwriter.core.coretools import ProjectBuilder
|
from novelwriter.core.coretools import ProjectBuilder
|
||||||
|
from novelwriter.enum import nwItemClass
|
||||||
from novelwriter.extensions.configlayout import NWrappedWidgetBox
|
from novelwriter.extensions.configlayout import NWrappedWidgetBox
|
||||||
from novelwriter.extensions.switch import NSwitch
|
|
||||||
from novelwriter.extensions.modified import NSpinBox
|
from novelwriter.extensions.modified import NSpinBox
|
||||||
|
from novelwriter.extensions.switch import NSwitch
|
||||||
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
from novelwriter.extensions.versioninfo import VersionInfoWidget
|
||||||
|
from novelwriter.types import QtAlignLeft, QtAlignRightTop
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -153,10 +154,8 @@ class GuiWelcome(QDialog):
|
|||||||
self.innerBox.addSpacing(hB)
|
self.innerBox.addSpacing(hB)
|
||||||
self.innerBox.addLayout(self.btnBox)
|
self.innerBox.addLayout(self.btnBox)
|
||||||
|
|
||||||
topRight = Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignRight
|
|
||||||
|
|
||||||
self.outerBox = QHBoxLayout()
|
self.outerBox = QHBoxLayout()
|
||||||
self.outerBox.addWidget(self.nwLogo, 3, topRight)
|
self.outerBox.addWidget(self.nwLogo, 3, QtAlignRightTop)
|
||||||
self.outerBox.addLayout(self.innerBox, 9)
|
self.outerBox.addLayout(self.innerBox, 9)
|
||||||
self.outerBox.setContentsMargins(hF, hE, hC, hE)
|
self.outerBox.setContentsMargins(hF, hE, hC, hE)
|
||||||
|
|
||||||
@@ -621,7 +620,7 @@ class _NewProjectForm(QWidget):
|
|||||||
|
|
||||||
# Project Form
|
# Project Form
|
||||||
self.projectForm = QFormLayout()
|
self.projectForm = QFormLayout()
|
||||||
self.projectForm.setAlignment(Qt.AlignmentFlag.AlignLeft)
|
self.projectForm.setAlignment(QtAlignLeft)
|
||||||
self.projectForm.addRow(self.tr("Project Name"), self.projName)
|
self.projectForm.addRow(self.tr("Project Name"), self.projName)
|
||||||
self.projectForm.addRow(self.tr("Author"), self.projAuthor)
|
self.projectForm.addRow(self.tr("Author"), self.projAuthor)
|
||||||
self.projectForm.addRow(self.tr("Project Path"), self.pathBox)
|
self.projectForm.addRow(self.tr("Project Path"), self.pathBox)
|
||||||
@@ -672,7 +671,7 @@ class _NewProjectForm(QWidget):
|
|||||||
self.addNotes.setChecked(False)
|
self.addNotes.setChecked(False)
|
||||||
|
|
||||||
self.notesForm = QFormLayout()
|
self.notesForm = QFormLayout()
|
||||||
self.notesForm.setAlignment(Qt.AlignmentFlag.AlignLeft)
|
self.notesForm.setAlignment(QtAlignLeft)
|
||||||
self.notesForm.addRow(self.tr("Add a folder for plot notes"), self.addPlot)
|
self.notesForm.addRow(self.tr("Add a folder for plot notes"), self.addPlot)
|
||||||
self.notesForm.addRow(self.tr("Add a folder for character notes"), self.addChar)
|
self.notesForm.addRow(self.tr("Add a folder for character notes"), self.addChar)
|
||||||
self.notesForm.addRow(self.tr("Add a folder for location notes"), self.addWorld)
|
self.notesForm.addRow(self.tr("Add a folder for location notes"), self.addWorld)
|
||||||
|
|||||||
@@ -37,10 +37,11 @@ from PyQt5.QtWidgets import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.error import formatException
|
|
||||||
from novelwriter.common import formatTime, checkInt, checkIntTuple, minmax
|
from novelwriter.common import formatTime, checkInt, checkIntTuple, minmax
|
||||||
from novelwriter.constants import nwConst
|
from novelwriter.constants import nwConst
|
||||||
|
from novelwriter.error import formatException
|
||||||
from novelwriter.extensions.switch import NSwitch
|
from novelwriter.extensions.switch import NSwitch
|
||||||
|
from novelwriter.types import QtAlignLeftMiddle, QtAlignRight, QtAlignRightMiddle
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
if TYPE_CHECKING: # pragma: no cover
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.guimain import GuiMain
|
||||||
@@ -116,9 +117,9 @@ class GuiWritingStats(QDialog):
|
|||||||
|
|
||||||
hHeader = self.listBox.headerItem()
|
hHeader = self.listBox.headerItem()
|
||||||
if hHeader is not None:
|
if hHeader is not None:
|
||||||
hHeader.setTextAlignment(self.C_LENGTH, Qt.AlignRight)
|
hHeader.setTextAlignment(self.C_LENGTH, QtAlignRight)
|
||||||
hHeader.setTextAlignment(self.C_IDLE, Qt.AlignRight)
|
hHeader.setTextAlignment(self.C_IDLE, QtAlignRight)
|
||||||
hHeader.setTextAlignment(self.C_COUNT, Qt.AlignRight)
|
hHeader.setTextAlignment(self.C_COUNT, QtAlignRight)
|
||||||
|
|
||||||
sortCol = minmax(pOptions.getInt("GuiWritingStats", "sortCol", 0), 0, 2)
|
sortCol = minmax(pOptions.getInt("GuiWritingStats", "sortCol", 0), 0, 2)
|
||||||
sortOrder = checkIntTuple(
|
sortOrder = checkIntTuple(
|
||||||
@@ -141,27 +142,27 @@ class GuiWritingStats(QDialog):
|
|||||||
|
|
||||||
self.labelTotal = QLabel(formatTime(0))
|
self.labelTotal = QLabel(formatTime(0))
|
||||||
self.labelTotal.setFont(SHARED.theme.guiFontFixed)
|
self.labelTotal.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.labelTotal.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.labelTotal.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
self.labelIdleT = QLabel(formatTime(0))
|
self.labelIdleT = QLabel(formatTime(0))
|
||||||
self.labelIdleT.setFont(SHARED.theme.guiFontFixed)
|
self.labelIdleT.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.labelIdleT.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.labelIdleT.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
self.labelFilter = QLabel(formatTime(0))
|
self.labelFilter = QLabel(formatTime(0))
|
||||||
self.labelFilter.setFont(SHARED.theme.guiFontFixed)
|
self.labelFilter.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.labelFilter.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.labelFilter.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
self.novelWords = QLabel("0")
|
self.novelWords = QLabel("0")
|
||||||
self.novelWords.setFont(SHARED.theme.guiFontFixed)
|
self.novelWords.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.novelWords.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.novelWords.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
self.notesWords = QLabel("0")
|
self.notesWords = QLabel("0")
|
||||||
self.notesWords.setFont(SHARED.theme.guiFontFixed)
|
self.notesWords.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.notesWords.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.notesWords.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
self.totalWords = QLabel("0")
|
self.totalWords = QLabel("0")
|
||||||
self.totalWords.setFont(SHARED.theme.guiFontFixed)
|
self.totalWords.setFont(SHARED.theme.guiFontFixed)
|
||||||
self.totalWords.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
|
self.totalWords.setAlignment(QtAlignRightMiddle)
|
||||||
|
|
||||||
lblTTime = QLabel(self.tr("Total Time:"))
|
lblTTime = QLabel(self.tr("Total Time:"))
|
||||||
lblITime = QLabel(self.tr("Idle Time:"))
|
lblITime = QLabel(self.tr("Idle Time:"))
|
||||||
@@ -593,10 +594,10 @@ class GuiWritingStats(QDialog):
|
|||||||
)
|
)
|
||||||
newItem.setData(self.C_BAR, Qt.DecorationRole, wBar)
|
newItem.setData(self.C_BAR, Qt.DecorationRole, wBar)
|
||||||
|
|
||||||
newItem.setTextAlignment(self.C_LENGTH, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_LENGTH, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_IDLE, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_IDLE, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_COUNT, QtAlignRight)
|
||||||
newItem.setTextAlignment(self.C_BAR, Qt.AlignLeft | Qt.AlignVCenter)
|
newItem.setTextAlignment(self.C_BAR, QtAlignLeftMiddle)
|
||||||
|
|
||||||
newItem.setFont(self.C_TIME, SHARED.theme.guiFontFixed)
|
newItem.setFont(self.C_TIME, SHARED.theme.guiFontFixed)
|
||||||
newItem.setFont(self.C_LENGTH, SHARED.theme.guiFontFixed)
|
newItem.setFont(self.C_LENGTH, SHARED.theme.guiFontFixed)
|
||||||
|
|||||||
+14
-3
@@ -1,6 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
novelWriter – Typings
|
novelWriter – Types and Flags
|
||||||
=====================
|
=============================
|
||||||
|
|
||||||
File History:
|
File History:
|
||||||
Created: 2024-04-01 [2.4rc1]
|
Created: 2024-04-01 [2.4rc1]
|
||||||
@@ -25,8 +25,19 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
|
|
||||||
|
# Qt Alignment Flags
|
||||||
|
|
||||||
|
QtAlignAbsolute = Qt.AlignmentFlag.AlignAbsolute
|
||||||
|
QtAlignCenter = Qt.AlignmentFlag.AlignCenter
|
||||||
|
QtAlignCenterTop = Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignTop
|
||||||
|
QtAlignJustify = Qt.AlignmentFlag.AlignJustify
|
||||||
QtAlignLeft = Qt.AlignmentFlag.AlignLeft
|
QtAlignLeft = Qt.AlignmentFlag.AlignLeft
|
||||||
QtAlignRight = Qt.AlignmentFlag.AlignRight
|
|
||||||
QtAlignLeftBase = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignBaseline
|
QtAlignLeftBase = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignBaseline
|
||||||
|
QtAlignLeftMiddle = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter
|
||||||
|
QtAlignLeftTop = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop
|
||||||
|
QtAlignMiddle = Qt.AlignmentFlag.AlignVCenter
|
||||||
|
QtAlignRight = Qt.AlignmentFlag.AlignRight
|
||||||
QtAlignRightBase = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignBaseline
|
QtAlignRightBase = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignBaseline
|
||||||
QtAlignRightMiddle = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
|
QtAlignRightMiddle = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
|
||||||
|
QtAlignRightTop = Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTop
|
||||||
|
QtAlignTop = Qt.AlignmentFlag.AlignTop
|
||||||
|
|||||||
@@ -30,13 +30,14 @@ from PyQt5.QtCore import QThreadPool, Qt
|
|||||||
from PyQt5.QtWidgets import QAction, QMenu, qApp
|
from PyQt5.QtWidgets import QAction, QMenu, qApp
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
|
from novelwriter.constants import nwKeyWords, nwUnicode
|
||||||
|
from novelwriter.dialogs.editlabel import GuiEditLabel
|
||||||
from novelwriter.enum import (
|
from novelwriter.enum import (
|
||||||
nwDocAction, nwDocInsert, nwItemClass, nwItemLayout, nwTrinary, nwWidget
|
nwDocAction, nwDocInsert, nwItemClass, nwItemLayout, nwTrinary, nwWidget
|
||||||
)
|
)
|
||||||
from novelwriter.constants import nwKeyWords, nwUnicode
|
|
||||||
from novelwriter.gui.doceditor import GuiDocEditor, GuiDocToolBar
|
from novelwriter.gui.doceditor import GuiDocEditor, GuiDocToolBar
|
||||||
from novelwriter.text.counting import standardCounter
|
from novelwriter.text.counting import standardCounter
|
||||||
from novelwriter.dialogs.editlabel import GuiEditLabel
|
from novelwriter.types import QtAlignJustify, QtAlignLeft
|
||||||
|
|
||||||
KEY_DELAY = 1
|
KEY_DELAY = 1
|
||||||
|
|
||||||
@@ -53,7 +54,7 @@ def testGuiEditor_Init(qtbot, nwGUI, projPath, ipsumText, mockRnd):
|
|||||||
|
|
||||||
# Check Defaults
|
# Check Defaults
|
||||||
qDoc = nwGUI.docEditor.document()
|
qDoc = nwGUI.docEditor.document()
|
||||||
assert qDoc.defaultTextOption().alignment() == Qt.AlignLeft
|
assert qDoc.defaultTextOption().alignment() == QtAlignLeft
|
||||||
assert nwGUI.docEditor.verticalScrollBarPolicy() == Qt.ScrollBarAsNeeded
|
assert nwGUI.docEditor.verticalScrollBarPolicy() == Qt.ScrollBarAsNeeded
|
||||||
assert nwGUI.docEditor.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded
|
assert nwGUI.docEditor.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded
|
||||||
assert nwGUI.docEditor._typPadChar == nwUnicode.U_NBSP
|
assert nwGUI.docEditor._typPadChar == nwUnicode.U_NBSP
|
||||||
@@ -76,7 +77,7 @@ def testGuiEditor_Init(qtbot, nwGUI, projPath, ipsumText, mockRnd):
|
|||||||
|
|
||||||
qDoc = nwGUI.docEditor.document()
|
qDoc = nwGUI.docEditor.document()
|
||||||
assert CONFIG.textFont == qDoc.defaultFont().family()
|
assert CONFIG.textFont == qDoc.defaultFont().family()
|
||||||
assert qDoc.defaultTextOption().alignment() == Qt.AlignJustify
|
assert qDoc.defaultTextOption().alignment() == QtAlignJustify
|
||||||
assert qDoc.defaultTextOption().flags() & QTextOption.ShowTabsAndSpaces
|
assert qDoc.defaultTextOption().flags() & QTextOption.ShowTabsAndSpaces
|
||||||
assert qDoc.defaultTextOption().flags() & QTextOption.ShowLineAndParagraphSeparators
|
assert qDoc.defaultTextOption().flags() & QTextOption.ShowLineAndParagraphSeparators
|
||||||
assert nwGUI.docEditor.verticalScrollBarPolicy() == Qt.ScrollBarAlwaysOff
|
assert nwGUI.docEditor.verticalScrollBarPolicy() == Qt.ScrollBarAlwaysOff
|
||||||
|
|||||||
@@ -20,26 +20,27 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
"""
|
"""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
import pytest
|
import pytest
|
||||||
|
import sys
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from pytestqt.qtbot import QtBot
|
from pytestqt.qtbot import QtBot
|
||||||
|
|
||||||
from novelwriter.constants import nwHeadFmt
|
|
||||||
from tools import C, buildTestProject
|
|
||||||
from mocked import causeOSError
|
from mocked import causeOSError
|
||||||
|
from tools import C, buildTestProject
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, pyqtSlot
|
from PyQt5.QtCore import pyqtSlot
|
||||||
from PyQt5.QtWidgets import QAction, QDialogButtonBox, QListWidgetItem
|
|
||||||
from PyQt5.QtPrintSupport import QPrintPreviewDialog
|
from PyQt5.QtPrintSupport import QPrintPreviewDialog
|
||||||
|
from PyQt5.QtWidgets import QAction, QDialogButtonBox, QListWidgetItem
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.guimain import GuiMain
|
from novelwriter.constants import nwHeadFmt
|
||||||
from novelwriter.core.buildsettings import BuildSettings
|
from novelwriter.core.buildsettings import BuildSettings
|
||||||
from novelwriter.tools.manuscript import GuiManuscript
|
from novelwriter.guimain import GuiMain
|
||||||
from novelwriter.tools.manusbuild import GuiManuscriptBuild
|
from novelwriter.tools.manusbuild import GuiManuscriptBuild
|
||||||
|
from novelwriter.tools.manuscript import GuiManuscript
|
||||||
from novelwriter.tools.manussettings import GuiBuildSettings
|
from novelwriter.tools.manussettings import GuiBuildSettings
|
||||||
|
from novelwriter.types import QtAlignAbsolute, QtAlignJustify
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gui
|
@pytest.mark.gui
|
||||||
@@ -262,11 +263,11 @@ def testManuscript_Features(monkeypatch, qtbot, nwGUI, projPath, mockRnd):
|
|||||||
assert manus.docStats.maxTotalChars.text() == "117"
|
assert manus.docStats.maxTotalChars.text() == "117"
|
||||||
|
|
||||||
# Toggle justify
|
# Toggle justify
|
||||||
assert manus.docPreview.document().defaultTextOption().alignment() == Qt.AlignAbsolute
|
assert manus.docPreview.document().defaultTextOption().alignment() == QtAlignAbsolute
|
||||||
manus.docPreview.setJustify(True)
|
manus.docPreview.setJustify(True)
|
||||||
assert manus.docPreview.document().defaultTextOption().alignment() == Qt.AlignJustify
|
assert manus.docPreview.document().defaultTextOption().alignment() == QtAlignJustify
|
||||||
manus.docPreview.setJustify(False)
|
manus.docPreview.setJustify(False)
|
||||||
assert manus.docPreview.document().defaultTextOption().alignment() == Qt.AlignAbsolute
|
assert manus.docPreview.document().defaultTextOption().alignment() == QtAlignAbsolute
|
||||||
|
|
||||||
# Tests are too fast to trigger this one, so we trigger it manually to ensure it isn't failing
|
# Tests are too fast to trigger this one, so we trigger it manually to ensure it isn't failing
|
||||||
manus.docPreview._hideProgress()
|
manus.docPreview._hideProgress()
|
||||||
|
|||||||
Reference in New Issue
Block a user