diff --git a/classes/design.py b/classes/design.py index a83ea24..c2e894e 100644 --- a/classes/design.py +++ b/classes/design.py @@ -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) diff --git a/classes/mainwindow.py b/classes/mainwindow.py index 01d2bc7..d34c0c9 100644 --- a/classes/mainwindow.py +++ b/classes/mainwindow.py @@ -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: