pdf generation is working, needs debuged qt-webkit for right doc size
This commit is contained in:
+10
-1
@@ -40,6 +40,10 @@ class Core():
|
||||
self.initDeamons()
|
||||
else:
|
||||
self.initDeamons()
|
||||
head, tail = os.path.split(self.cwd)
|
||||
print('tail', tail)
|
||||
self.projectname = tail
|
||||
|
||||
|
||||
|
||||
def initDeamons(self):
|
||||
@@ -114,10 +118,15 @@ class Core():
|
||||
def changeCWD(self, cwd):
|
||||
if not cwd == self.cwd:
|
||||
self.cwd = cwd
|
||||
self._mw.setWindowTitle("Cascade – "+self.cwd)
|
||||
self.server.reload()
|
||||
self.sasscompiler.reload()
|
||||
self.contentcompiler.reload()
|
||||
|
||||
if not self.tempcwd:
|
||||
self._mw.setWindowTitle("Cascade – "+self.cwd)
|
||||
head, tail = os.path.split(self.cwd)
|
||||
print('tail', projectname)
|
||||
self.projectname = tail
|
||||
self._mw.designstack.refresh()
|
||||
self._mw.contentstack.refresh()
|
||||
|
||||
|
||||
+43
-14
@@ -4,7 +4,7 @@
|
||||
import os, re
|
||||
# sys,
|
||||
from PyQt5 import QtCore
|
||||
from PyQt5.QtCore import QUrl, QSettings
|
||||
from PyQt5.QtCore import QUrl, QSettings, QSizeF
|
||||
from PyQt5.QtGui import QKeySequence, QFont
|
||||
from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox
|
||||
from PyQt5.QtWebKit import QWebSettings
|
||||
@@ -13,26 +13,54 @@ from PyQt5.QtPrintSupport import QPrintPreviewDialog, QPrinter
|
||||
|
||||
|
||||
class WebkitView(QWebView):
|
||||
def __init__(self, parent, port):
|
||||
self.port = port
|
||||
def __init__(self, parent, core):
|
||||
self.parent = parent
|
||||
self.core = core
|
||||
self.port = core.server.port
|
||||
self.view = QWebView.__init__(self, parent)
|
||||
self.setZoomFactor(1)
|
||||
self.load(QUrl('http://localhost:'+str(self.port)))
|
||||
self.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
|
||||
# self.settings().setAttribute(QWebSettings.PluginsEnabled, True)
|
||||
|
||||
self.printer = QPrinter()
|
||||
self.printer.setPageSize(QPrinter.A4)
|
||||
self.printer.setOrientation(QPrinter.Portrait)
|
||||
self.printer.setPageMargins(10,10,10,10,QPrinter.Millimeter)
|
||||
self.setFixedWidth(1000)
|
||||
self.initPDF()
|
||||
# self.mainframe = self.page.mainFrame()
|
||||
# print(self.mainframe)
|
||||
|
||||
def initPDF(self):
|
||||
self.printer = QPrinter(QPrinter.HighResolution)
|
||||
self.printer.setFullPage(True)
|
||||
# self.printer.setPageMargins(0,0,0,0,QPrinter.Millimeter)
|
||||
self.printer.setFontEmbeddingEnabled(True)
|
||||
self.printer.setColorMode(QPrinter.Color)
|
||||
# TODO: set the page size and orientation from doc settings
|
||||
# (need to do doc settings before that)
|
||||
# self.printer.setPageSize(QPrinter.A4)
|
||||
self.printer.setPaperSize(QSizeF(210, 300), QPrinter.Millimeter)
|
||||
# self.printer.setOrientation(QPrinter.Portrait)
|
||||
self.printer.setOutputFormat(QPrinter.PdfFormat)
|
||||
self.printer.setCreator('Cascade')
|
||||
self.printer.setDocName(self.core.projectname)
|
||||
self.printer.setOutputFileName(self.core.projectname+".pdf")
|
||||
# self.setFixedWidth(1000)
|
||||
|
||||
|
||||
def onPrint(self):
|
||||
dialog = QPrintPreviewDialog(self.printer)
|
||||
def ongenPDF(self):
|
||||
# QPrinter::Custom
|
||||
# dialog = QPrintPreviewDialog(self.printer)
|
||||
# dialog.setWindowState(Qt.WindowMaximized)
|
||||
dialog.paintRequested.connect(self.print_)
|
||||
# dialog.paintRequested.connect(self.print_)
|
||||
# dialog.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowContextHelpButtonHint)
|
||||
dialog.exec()
|
||||
# dialog.exec()
|
||||
# TODO: open a dialogue to ask where to save the pdf
|
||||
# TODO: reload webview and wait for it before printing
|
||||
# TODO: addd a progress bar
|
||||
# self.webview.
|
||||
self.print_(self.printer)
|
||||
|
||||
def refresh(self):
|
||||
self.initPDF()
|
||||
self.reload()
|
||||
|
||||
class WebkitInspector(QWebInspector):
|
||||
def __init__(self, parent, webkitview):
|
||||
@@ -149,6 +177,7 @@ class CodeEditor(QPlainTextEdit):
|
||||
self.changed = True
|
||||
i = self.tabs.currentIndex()
|
||||
self.tabs.setTabText(i, "* "+self.tabs.tabText(i))
|
||||
# TODO: indicate that webview needs to be reloaded
|
||||
|
||||
def save(self):
|
||||
if self.changed:
|
||||
@@ -208,7 +237,7 @@ class DesignStack(QWidget):
|
||||
self.webview.setLayout(self.webview.vbox)
|
||||
self.webview.vbox.setContentsMargins(0,0,0,0)
|
||||
|
||||
self.webkitview = WebkitView(self, core.server.port)
|
||||
self.webkitview = WebkitView(self, core)
|
||||
|
||||
self.webkitinspector = WebkitInspector(self, self.webkitview)
|
||||
|
||||
@@ -267,4 +296,4 @@ class DesignStack(QWidget):
|
||||
|
||||
def refresh(self):
|
||||
self.editor.refresh()
|
||||
self.webkitview.reload()
|
||||
self.webkitview.refresh()
|
||||
|
||||
@@ -54,7 +54,7 @@ class MainWindow(QMainWindow):
|
||||
self.save_action.setShortcut("Ctrl+Shift+s")
|
||||
file.addAction(self.save_action)
|
||||
|
||||
prnt = QAction("&Print",self)
|
||||
prnt = QAction("&PDF",self)
|
||||
prnt.setShortcut("Ctrl+p")
|
||||
file.addAction(prnt)
|
||||
|
||||
@@ -109,8 +109,8 @@ class MainWindow(QMainWindow):
|
||||
self.openprojectdialogue()
|
||||
elif q.text() == "&Save Project as":
|
||||
self.saveprojectdialogue()
|
||||
elif q.text() == "&Print":
|
||||
self.imprim()
|
||||
elif q.text() == "&PDF":
|
||||
self.genPDF()
|
||||
elif q.text() == "&Quit":
|
||||
self.quit()
|
||||
|
||||
@@ -185,9 +185,9 @@ class MainWindow(QMainWindow):
|
||||
print('Exception', e)
|
||||
pass
|
||||
|
||||
def imprim(self):
|
||||
print('imprim')
|
||||
self.designstack.webkitview.onPrint()
|
||||
def genPDF(self):
|
||||
print('PDF')
|
||||
self.designstack.webkitview.ongenPDF()
|
||||
|
||||
def quit(self):
|
||||
print("Quit")
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
/**
|
||||
* THE CODE BELOW IS REQUIRED TO MAKE HTML2PRINT WORK.
|
||||
*/
|
||||
|
||||
@function mm2pt($mm){
|
||||
@return $mm*2.8346pt;
|
||||
// @return $mm*2.8346pt;
|
||||
@return $mm*1mm;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,8 +41,8 @@
|
||||
*/
|
||||
|
||||
/* the geometry of the page */
|
||||
$page-width: mm2pt(110);
|
||||
$page-height: mm2pt(200);
|
||||
$page-width: mm2pt(200);
|
||||
$page-height: mm2pt(287);
|
||||
|
||||
/* the size of the crop marks based on scribus defaults */
|
||||
$crop-size: mm2pt(2);
|
||||
|
||||
Reference in New Issue
Block a user