Use a frame for page break marker in manuscript preview
This commit is contained in:
@@ -30,7 +30,7 @@ from pathlib import Path
|
|||||||
from PyQt5.QtCore import QMarginsF, QSizeF
|
from PyQt5.QtCore import QMarginsF, QSizeF
|
||||||
from PyQt5.QtGui import (
|
from PyQt5.QtGui import (
|
||||||
QColor, QFont, QFontDatabase, QPageSize, QTextBlockFormat, QTextCharFormat,
|
QColor, QFont, QFontDatabase, QPageSize, QTextBlockFormat, QTextCharFormat,
|
||||||
QTextCursor, QTextDocument
|
QTextCursor, QTextDocument, QTextFrameFormat
|
||||||
)
|
)
|
||||||
from PyQt5.QtPrintSupport import QPrinter
|
from PyQt5.QtPrintSupport import QPrinter
|
||||||
|
|
||||||
@@ -432,17 +432,22 @@ class ToQTextDocument(Tokenizer):
|
|||||||
def _insertNewPageMarker(self, cursor: QTextCursor) -> None:
|
def _insertNewPageMarker(self, cursor: QTextCursor) -> None:
|
||||||
"""Insert a new page marker."""
|
"""Insert a new page marker."""
|
||||||
if self._newPage:
|
if self._newPage:
|
||||||
cursor.insertHtml("<hr width='100%'>")
|
bgCol = QColor(self._theme.text)
|
||||||
|
bgCol.setAlphaF(0.1)
|
||||||
|
fgCol = QColor(self._theme.text)
|
||||||
|
fgCol.setAlphaF(0.8)
|
||||||
|
|
||||||
hFmt = cursor.blockFormat()
|
fFmt = QTextFrameFormat()
|
||||||
hFmt.setBottomMargin(0.0)
|
fFmt.setBorderStyle(QTextFrameFormat.BorderStyle.BorderStyle_None)
|
||||||
hFmt.setLineHeight(75.0, QtPropLineHeight)
|
fFmt.setBackground(bgCol)
|
||||||
cursor.setBlockFormat(hFmt)
|
fFmt.setTopMargin(self._mSep[0])
|
||||||
|
fFmt.setBottomMargin(self._mSep[1])
|
||||||
|
|
||||||
bFmt = QTextBlockFormat(self._blockFmt)
|
bFmt = QTextBlockFormat(self._blockFmt)
|
||||||
bFmt.setAlignment(QtAlignCenter)
|
bFmt.setAlignment(QtAlignCenter)
|
||||||
bFmt.setTopMargin(0.0)
|
bFmt.setTopMargin(0.0)
|
||||||
bFmt.setLineHeight(75.0, QtPropLineHeight)
|
bFmt.setBottomMargin(0.0)
|
||||||
|
bFmt.setLineHeight(100.0, QtPropLineHeight)
|
||||||
|
|
||||||
cFmt = QTextCharFormat(self._charFmt)
|
cFmt = QTextCharFormat(self._charFmt)
|
||||||
cFmt.setFontItalic(False)
|
cFmt.setFontItalic(False)
|
||||||
@@ -450,10 +455,13 @@ class ToQTextDocument(Tokenizer):
|
|||||||
cFmt.setFontStrikeOut(False)
|
cFmt.setFontStrikeOut(False)
|
||||||
cFmt.setFontWeight(QFont.Weight.Normal)
|
cFmt.setFontWeight(QFont.Weight.Normal)
|
||||||
cFmt.setFontPointSize(0.75*self._textFont.pointSizeF())
|
cFmt.setFontPointSize(0.75*self._textFont.pointSizeF())
|
||||||
cFmt.setForeground(self._theme.comment)
|
cFmt.setForeground(fgCol)
|
||||||
|
|
||||||
newBlock(cursor, bFmt)
|
cursor.insertFrame(fFmt)
|
||||||
|
cursor.setBlockFormat(bFmt)
|
||||||
cursor.insertText(self._project.localLookup("New Page"), cFmt)
|
cursor.insertText(self._project.localLookup("New Page"), cFmt)
|
||||||
|
cursor.swap(self._document.rootFrame().lastCursorPosition())
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def _genHeadStyle(self, hType: BlockTyp, hKey: str, rFmt: QTextBlockFormat) -> T_TextStyle:
|
def _genHeadStyle(self, hType: BlockTyp, hKey: str, rFmt: QTextBlockFormat) -> T_TextStyle:
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ def testToolManuscript_Init(monkeypatch, qtbot, nwGUI, projPath, mockRnd):
|
|||||||
buildTestProject(nwGUI, projPath)
|
buildTestProject(nwGUI, projPath)
|
||||||
nwGUI.openProject(projPath)
|
nwGUI.openProject(projPath)
|
||||||
SHARED.project.storage.getDocument(C.hChapterDoc).writeDocument("## A Chapter\n\n\t\tHi")
|
SHARED.project.storage.getDocument(C.hChapterDoc).writeDocument("## A Chapter\n\n\t\tHi")
|
||||||
allText = "New Novel\nBy Jane Doe\n\nNew Page\nA Chapter\n\t\tHi"
|
allText = "New Novel\nBy Jane Doe\nNew Page\n\nA Chapter\n\t\tHi"
|
||||||
|
|
||||||
nwGUI.mainMenu.aBuildManuscript.activate(QAction.ActionEvent.Trigger)
|
nwGUI.mainMenu.aBuildManuscript.activate(QAction.ActionEvent.Trigger)
|
||||||
qtbot.waitUntil(lambda: SHARED.findTopLevelWidget(GuiManuscript) is not None, timeout=1000)
|
qtbot.waitUntil(lambda: SHARED.findTopLevelWidget(GuiManuscript) is not None, timeout=1000)
|
||||||
|
|||||||
Reference in New Issue
Block a user