first test of print to pdf, aouch :(

This commit is contained in:
Bachir Soussi Chiadmi
2017-05-30 22:44:54 +02:00
parent d18f8122f6
commit 4db47a9259
2 changed files with 45 additions and 9 deletions
+35 -9
View File
@@ -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)
+10
View File
@@ -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: