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()
|
self.initDeamons()
|
||||||
else:
|
else:
|
||||||
self.initDeamons()
|
self.initDeamons()
|
||||||
|
head, tail = os.path.split(self.cwd)
|
||||||
|
print('tail', tail)
|
||||||
|
self.projectname = tail
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def initDeamons(self):
|
def initDeamons(self):
|
||||||
@@ -114,10 +118,15 @@ class Core():
|
|||||||
def changeCWD(self, cwd):
|
def changeCWD(self, cwd):
|
||||||
if not cwd == self.cwd:
|
if not cwd == self.cwd:
|
||||||
self.cwd = cwd
|
self.cwd = cwd
|
||||||
self._mw.setWindowTitle("Cascade – "+self.cwd)
|
|
||||||
self.server.reload()
|
self.server.reload()
|
||||||
self.sasscompiler.reload()
|
self.sasscompiler.reload()
|
||||||
self.contentcompiler.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.designstack.refresh()
|
||||||
self._mw.contentstack.refresh()
|
self._mw.contentstack.refresh()
|
||||||
|
|
||||||
|
|||||||
+43
-14
@@ -4,7 +4,7 @@
|
|||||||
import os, re
|
import os, re
|
||||||
# sys,
|
# sys,
|
||||||
from PyQt5 import QtCore
|
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.QtGui import QKeySequence, QFont
|
||||||
from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox
|
from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox
|
||||||
from PyQt5.QtWebKit import QWebSettings
|
from PyQt5.QtWebKit import QWebSettings
|
||||||
@@ -13,26 +13,54 @@ from PyQt5.QtPrintSupport import QPrintPreviewDialog, QPrinter
|
|||||||
|
|
||||||
|
|
||||||
class WebkitView(QWebView):
|
class WebkitView(QWebView):
|
||||||
def __init__(self, parent, port):
|
def __init__(self, parent, core):
|
||||||
self.port = port
|
self.parent = parent
|
||||||
|
self.core = core
|
||||||
|
self.port = core.server.port
|
||||||
self.view = QWebView.__init__(self, parent)
|
self.view = QWebView.__init__(self, parent)
|
||||||
|
self.setZoomFactor(1)
|
||||||
self.load(QUrl('http://localhost:'+str(self.port)))
|
self.load(QUrl('http://localhost:'+str(self.port)))
|
||||||
self.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
|
self.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
|
||||||
# self.settings().setAttribute(QWebSettings.PluginsEnabled, True)
|
# self.settings().setAttribute(QWebSettings.PluginsEnabled, True)
|
||||||
|
|
||||||
self.printer = QPrinter()
|
self.initPDF()
|
||||||
self.printer.setPageSize(QPrinter.A4)
|
# self.mainframe = self.page.mainFrame()
|
||||||
self.printer.setOrientation(QPrinter.Portrait)
|
# print(self.mainframe)
|
||||||
self.printer.setPageMargins(10,10,10,10,QPrinter.Millimeter)
|
|
||||||
self.setFixedWidth(1000)
|
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):
|
def ongenPDF(self):
|
||||||
dialog = QPrintPreviewDialog(self.printer)
|
# QPrinter::Custom
|
||||||
|
# dialog = QPrintPreviewDialog(self.printer)
|
||||||
# dialog.setWindowState(Qt.WindowMaximized)
|
# 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.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):
|
class WebkitInspector(QWebInspector):
|
||||||
def __init__(self, parent, webkitview):
|
def __init__(self, parent, webkitview):
|
||||||
@@ -149,6 +177,7 @@ class CodeEditor(QPlainTextEdit):
|
|||||||
self.changed = True
|
self.changed = True
|
||||||
i = self.tabs.currentIndex()
|
i = self.tabs.currentIndex()
|
||||||
self.tabs.setTabText(i, "* "+self.tabs.tabText(i))
|
self.tabs.setTabText(i, "* "+self.tabs.tabText(i))
|
||||||
|
# TODO: indicate that webview needs to be reloaded
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
if self.changed:
|
if self.changed:
|
||||||
@@ -208,7 +237,7 @@ class DesignStack(QWidget):
|
|||||||
self.webview.setLayout(self.webview.vbox)
|
self.webview.setLayout(self.webview.vbox)
|
||||||
self.webview.vbox.setContentsMargins(0,0,0,0)
|
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)
|
self.webkitinspector = WebkitInspector(self, self.webkitview)
|
||||||
|
|
||||||
@@ -267,4 +296,4 @@ class DesignStack(QWidget):
|
|||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
self.editor.refresh()
|
self.editor.refresh()
|
||||||
self.webkitview.reload()
|
self.webkitview.refresh()
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.save_action.setShortcut("Ctrl+Shift+s")
|
self.save_action.setShortcut("Ctrl+Shift+s")
|
||||||
file.addAction(self.save_action)
|
file.addAction(self.save_action)
|
||||||
|
|
||||||
prnt = QAction("&Print",self)
|
prnt = QAction("&PDF",self)
|
||||||
prnt.setShortcut("Ctrl+p")
|
prnt.setShortcut("Ctrl+p")
|
||||||
file.addAction(prnt)
|
file.addAction(prnt)
|
||||||
|
|
||||||
@@ -109,8 +109,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.openprojectdialogue()
|
self.openprojectdialogue()
|
||||||
elif q.text() == "&Save Project as":
|
elif q.text() == "&Save Project as":
|
||||||
self.saveprojectdialogue()
|
self.saveprojectdialogue()
|
||||||
elif q.text() == "&Print":
|
elif q.text() == "&PDF":
|
||||||
self.imprim()
|
self.genPDF()
|
||||||
elif q.text() == "&Quit":
|
elif q.text() == "&Quit":
|
||||||
self.quit()
|
self.quit()
|
||||||
|
|
||||||
@@ -185,9 +185,9 @@ class MainWindow(QMainWindow):
|
|||||||
print('Exception', e)
|
print('Exception', e)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def imprim(self):
|
def genPDF(self):
|
||||||
print('imprim')
|
print('PDF')
|
||||||
self.designstack.webkitview.onPrint()
|
self.designstack.webkitview.ongenPDF()
|
||||||
|
|
||||||
def quit(self):
|
def quit(self):
|
||||||
print("Quit")
|
print("Quit")
|
||||||
|
|||||||
@@ -28,9 +28,9 @@
|
|||||||
/**
|
/**
|
||||||
* THE CODE BELOW IS REQUIRED TO MAKE HTML2PRINT WORK.
|
* THE CODE BELOW IS REQUIRED TO MAKE HTML2PRINT WORK.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@function mm2pt($mm){
|
@function mm2pt($mm){
|
||||||
@return $mm*2.8346pt;
|
// @return $mm*2.8346pt;
|
||||||
|
@return $mm*1mm;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,8 +41,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* the geometry of the page */
|
/* the geometry of the page */
|
||||||
$page-width: mm2pt(110);
|
$page-width: mm2pt(200);
|
||||||
$page-height: mm2pt(200);
|
$page-height: mm2pt(287);
|
||||||
|
|
||||||
/* the size of the crop marks based on scribus defaults */
|
/* the size of the crop marks based on scribus defaults */
|
||||||
$crop-size: mm2pt(2);
|
$crop-size: mm2pt(2);
|
||||||
|
|||||||
Reference in New Issue
Block a user