--- a/WebBrowser/WebBrowserTabWidget.py Sat Sep 24 18:00:30 2016 +0200 +++ b/WebBrowser/WebBrowserTabWidget.py Tue Sep 27 19:41:11 2016 +0200 @@ -11,7 +11,7 @@ import os -from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QFile +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QFile, qVersion from PyQt5.QtGui import QIcon, QPixmap, QPainter from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog from PyQt5.QtPrintSupport import QPrinter, QPrintDialog @@ -179,13 +179,15 @@ self.__tabContextMenu.addAction( self.tr('Close All'), self.closeAllBrowsers) self.__tabContextMenu.addSeparator() - self.__tabContextMenu.addAction( - UI.PixmapCache.getIcon("printPreview.png"), - self.tr('Print Preview'), self.__tabContextMenuPrintPreview) - self.__tabContextMenu.addAction( - UI.PixmapCache.getIcon("print.png"), - self.tr('Print'), self.__tabContextMenuPrint) - if Globals.isLinuxPlatform(): + if not Globals.isWindowsPlatform(): + # TODO: implement printing based on printToPdf() + self.__tabContextMenu.addAction( + UI.PixmapCache.getIcon("printPreview.png"), + self.tr('Print Preview'), self.__tabContextMenuPrintPreview) + self.__tabContextMenu.addAction( + UI.PixmapCache.getIcon("print.png"), + self.tr('Print'), self.__tabContextMenuPrint) + if Globals.isLinuxPlatform() or qVersion() >= "5.7.0": self.__tabContextMenu.addAction( UI.PixmapCache.getIcon("printPdf.png"), self.tr('Print as PDF'), self.__tabContextMenuPrintPdf) @@ -645,14 +647,27 @@ from .Tools.PrintToPdfDialog import PrintToPdfDialog if not name: name = "printout.pdf" - dlg = PrintToPdfDialog(os.path.abspath(name), self) + dlg = PrintToPdfDialog(name, self) if dlg.exec_() == QDialog.Accepted: filePath, pageLayout = dlg.getData() if filePath: + if os.path.exists(filePath): + res = E5MessageBox.warning( + self, + self.tr("Print to PDF"), + self.tr("""<p>The file <b>{0}</b> exists""" + """ already. Shall it be""" + """ overwritten?</p>""").format(filePath), + E5MessageBox.StandardButtons( + E5MessageBox.No | + E5MessageBox.Yes), + E5MessageBox.No) + if res == E5MessageBox.No: + return browser.page().printToPdf( lambda p: self.__pdfGenerated(filePath, p), pageLayout) - else: + elif Globals.isLinuxPlatform(): printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color)