first test of print to pdf, aouch :(
This commit is contained in:
+35
-9
@@ -9,6 +9,7 @@ from PyQt5.QtGui import QKeySequence, QFont
|
||||
from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox
|
||||
from PyQt5.QtWebKit import QWebSettings
|
||||
from PyQt5.QtWebKitWidgets import QWebView, QWebInspector
|
||||
from PyQt5.QtPrintSupport import QPrintPreviewDialog, QPrinter
|
||||
|
||||
|
||||
class WebkitView(QWebView):
|
||||
@@ -19,6 +20,19 @@ class WebkitView(QWebView):
|
||||
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)
|
||||
|
||||
|
||||
def onPrint(self):
|
||||
dialog = QPrintPreviewDialog(self.printer)
|
||||
# dialog.setWindowState(Qt.WindowMaximized)
|
||||
dialog.paintRequested.connect(self.print_)
|
||||
# dialog.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowContextHelpButtonHint)
|
||||
dialog.exec()
|
||||
|
||||
class WebkitInspector(QWebInspector):
|
||||
def __init__(self, parent, webkitview):
|
||||
@@ -28,9 +42,9 @@ class WebkitInspector(QWebInspector):
|
||||
self.showMaximized()
|
||||
# TODO: webkitinspector is disappearing when chaging tabs
|
||||
|
||||
class WebViewOptions(QWidget):
|
||||
class WebViewToolBar(QWidget):
|
||||
def __init__(self, parent):
|
||||
super(WebViewOptions, self).__init__(parent)
|
||||
super(WebViewToolBar, self).__init__(parent)
|
||||
self.parent = parent
|
||||
self.hbox = QHBoxLayout()
|
||||
self.hbox.setContentsMargins(0,0,0,0)
|
||||
@@ -72,11 +86,14 @@ class WebViewOptions(QWidget):
|
||||
self.reload.clicked.connect(self.onReload)
|
||||
self.hbox.addWidget(self.reload)
|
||||
|
||||
self.setLayout(self.hbox)
|
||||
self.imprim = QPushButton("&Print", self)
|
||||
# self.imprim.setShortcut('Ctrl+Shift+r')
|
||||
# TODO: how to define same shortcut in different places
|
||||
# self.imprim.setIcon(Icon(ico)))
|
||||
self.imprim.clicked.connect(self.onPrint)
|
||||
self.hbox.addWidget(self.imprim)
|
||||
|
||||
def onReload(self):
|
||||
print("onReload")
|
||||
# self.parent.webkitview.
|
||||
self.setLayout(self.hbox)
|
||||
|
||||
def onPreview(self):
|
||||
print('onPreview')
|
||||
@@ -90,6 +107,16 @@ class WebViewOptions(QWidget):
|
||||
def onSpread(self):
|
||||
print('onSpread')
|
||||
|
||||
|
||||
def onReload(self):
|
||||
print("onReload")
|
||||
# self.parent.webkitview.
|
||||
|
||||
def onPrint(self):
|
||||
print("onReload")
|
||||
self.parent.webkitview.onPrint()
|
||||
|
||||
|
||||
class CodeEditor(QPlainTextEdit):
|
||||
def __init__(self, core, tabs, file=None):
|
||||
super(CodeEditor, self).__init__()
|
||||
@@ -181,7 +208,6 @@ 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.webkitinspector = WebkitInspector(self, self.webkitview)
|
||||
@@ -191,8 +217,8 @@ class DesignStack(QWidget):
|
||||
shortcut.activated.connect(self.toggleInspector)
|
||||
self.webkitinspector.setVisible(False)
|
||||
|
||||
self.webviewoptions = WebViewOptions(self)
|
||||
self.webview.vbox.addWidget(self.webviewoptions)
|
||||
self.webviewtoolbar = WebViewToolBar(self)
|
||||
self.webview.vbox.addWidget(self.webviewtoolbar)
|
||||
|
||||
self.vsplitter = QSplitter(QtCore.Qt.Vertical)
|
||||
self.vsplitter.addWidget(self.webkitview)
|
||||
|
||||
@@ -54,6 +54,10 @@ class MainWindow(QMainWindow):
|
||||
self.save_action.setShortcut("Ctrl+Shift+s")
|
||||
file.addAction(self.save_action)
|
||||
|
||||
prnt = QAction("&Print",self)
|
||||
prnt.setShortcut("Ctrl+p")
|
||||
file.addAction(prnt)
|
||||
|
||||
quit = QAction("&Quit",self)
|
||||
quit.setShortcut("Ctrl+q")
|
||||
file.addAction(quit)
|
||||
@@ -105,6 +109,8 @@ class MainWindow(QMainWindow):
|
||||
self.openprojectdialogue()
|
||||
elif q.text() == "&Save Project as":
|
||||
self.saveprojectdialogue()
|
||||
elif q.text() == "&Print":
|
||||
self.imprim()
|
||||
elif q.text() == "&Quit":
|
||||
self.quit()
|
||||
|
||||
@@ -179,6 +185,10 @@ class MainWindow(QMainWindow):
|
||||
print('Exception', e)
|
||||
pass
|
||||
|
||||
def imprim(self):
|
||||
print('imprim')
|
||||
self.designstack.webkitview.onPrint()
|
||||
|
||||
def quit(self):
|
||||
print("Quit")
|
||||
if self.core.tempcwd:
|
||||
|
||||
Reference in New Issue
Block a user