WebBrowser/WebBrowserTabWidget.py

changeset 5534
f9368ecf153a
parent 5530
93f95c4b3153
child 5542
520713d0a381
equal deleted inserted replaced
5533:3c908e3b6e5c 5534:f9368ecf153a
12 import os 12 import os
13 13
14 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QDir, QFile, \ 14 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QDir, QFile, \
15 QFileDevice, QTemporaryFile, qVersion 15 QFileDevice, QTemporaryFile, qVersion
16 from PyQt5.QtGui import QIcon, QPixmap, QPainter 16 from PyQt5.QtGui import QIcon, QPixmap, QPainter
17 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog 17 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, \
18 QDialog, QApplication
18 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog, QAbstractPrintDialog 19 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog, QAbstractPrintDialog
19 20
20 from E5Gui.E5TabWidget import E5TabWidget 21 from E5Gui.E5TabWidget import E5TabWidget
21 from E5Gui import E5MessageBox 22 from E5Gui import E5MessageBox
22 from E5Gui.E5Application import e5App 23 from E5Gui.E5Application import e5App
181 UI.PixmapCache.getIcon("tabCloseOther.png"), 182 UI.PixmapCache.getIcon("tabCloseOther.png"),
182 self.tr("Close Others"), self.__tabContextMenuCloseOthers) 183 self.tr("Close Others"), self.__tabContextMenuCloseOthers)
183 self.__tabContextMenu.addAction( 184 self.__tabContextMenu.addAction(
184 self.tr('Close All'), self.closeAllBrowsers) 185 self.tr('Close All'), self.closeAllBrowsers)
185 self.__tabContextMenu.addSeparator() 186 self.__tabContextMenu.addSeparator()
186 if not Globals.isWindowsPlatform() and qVersion() < "5.7.0": 187 if qVersion() >= "5.8.0" or (
188 not Globals.isWindowsPlatform() and qVersion() < "5.7.0"):
187 self.__tabContextMenu.addAction( 189 self.__tabContextMenu.addAction(
188 UI.PixmapCache.getIcon("printPreview.png"), 190 UI.PixmapCache.getIcon("printPreview.png"),
189 self.tr('Print Preview'), self.__tabContextMenuPrintPreview) 191 self.tr('Print Preview'), self.__tabContextMenuPrintPreview)
190 if not Globals.isWindowsPlatform() or qVersion() >= "5.7.0": 192 if qVersion() >= "5.8.0" or (
193 not Globals.isWindowsPlatform() or qVersion() >= "5.7.0"):
191 self.__tabContextMenu.addAction( 194 self.__tabContextMenu.addAction(
192 UI.PixmapCache.getIcon("print.png"), 195 UI.PixmapCache.getIcon("print.png"),
193 self.tr('Print'), self.__tabContextMenuPrint) 196 self.tr('Print'), self.__tabContextMenuPrint)
194 if Globals.isLinuxPlatform() or qVersion() >= "5.7.0": 197 if Globals.isLinuxPlatform() or qVersion() >= "5.7.0":
195 self.__tabContextMenu.addAction( 198 self.__tabContextMenu.addAction(
637 if not Globals.isWindowsPlatform(): 640 if not Globals.isWindowsPlatform():
638 if FilePrinter.isCupsAvailable(): 641 if FilePrinter.isCupsAvailable():
639 printDialog.setOption(QAbstractPrintDialog.PrintCollateCopies) 642 printDialog.setOption(QAbstractPrintDialog.PrintCollateCopies)
640 printDialog.setOption(QAbstractPrintDialog.PrintPageRange) 643 printDialog.setOption(QAbstractPrintDialog.PrintPageRange)
641 if printDialog.exec_() == QDialog.Accepted: 644 if printDialog.exec_() == QDialog.Accepted:
642 # TODO: enable this once it works correctly in Qt 645 if hasattr(browser.page(), "print"):
643 ## if hasattr(browser.page(), "print"): 646 # Qt >= 5.8.0
644 ## # Qt >= 5.8.0 647 browser.page().execPrintPage(printer)
645 ## browser.page().printPage(printer) 648 elif hasattr(browser.page(), "printToPdf"):
646 ## elif hasattr(browser.page(), "printToPdf"):
647 if hasattr(browser.page(), "printToPdf"):
648 # Qt >= 5.7.0 649 # Qt >= 5.7.0
649 if printer.outputFormat() == QPrinter.PdfFormat: 650 if printer.outputFormat() == QPrinter.PdfFormat:
650 # print to PDF file selected 651 # print to PDF file selected
651 browser.page().printToPdf( 652 browser.page().printToPdf(
652 lambda pdf: self.__pdfGeneratedForSave( 653 lambda pdf: self.__pdfGeneratedForSave(
656 # print to printer 657 # print to printer
657 self.__pdfPrinter = printer 658 self.__pdfPrinter = printer
658 browser.page().printToPdf( 659 browser.page().printToPdf(
659 self.__pdfGeneratedForPrinting, 660 self.__pdfGeneratedForPrinting,
660 printer.pageLayout()) 661 printer.pageLayout())
661 else: 662 else:
662 browser.render(printer) 663 browser.render(printer)
663 664
664 @pyqtSlot() 665 @pyqtSlot()
665 def printBrowserPdf(self, browser=None): 666 def printBrowserPdf(self, browser=None):
666 """ 667 """
667 Public slot called to print the displayed page to PDF. 668 Public slot called to print the displayed page to PDF.
778 @pyqtSlot() 779 @pyqtSlot()
779 def printPreviewBrowser(self, browser=None): 780 def printPreviewBrowser(self, browser=None):
780 """ 781 """
781 Public slot called to show a print preview of the displayed file. 782 Public slot called to show a print preview of the displayed file.
782 783
783 @param browser reference to the browser to be printed (HelpBrowserWV) 784 @param browser reference to the browser to be printed (WebBrowserView)
784 """ 785 """
785 from PyQt5.QtPrintSupport import QPrintPreviewDialog 786 from PyQt5.QtPrintSupport import QPrintPreviewDialog
786 787
787 if browser is None: 788 if browser is None:
788 browser = self.currentBrowser() 789 browser = self.currentBrowser()
807 if printerName: 808 if printerName:
808 printer.setPrinterName(printerName) 809 printer.setPrinterName(printerName)
809 printer.setResolution(Preferences.getPrinter("Resolution")) 810 printer.setResolution(Preferences.getPrinter("Resolution"))
810 811
811 preview = QPrintPreviewDialog(printer, self) 812 preview = QPrintPreviewDialog(printer, self)
812 preview.paintRequested.connect(lambda p: browser.render(p)) 813 preview.resize(800, 750)
814 if qVersion() >= "5.8.0":
815 preview.paintRequested.connect(
816 lambda p: self.__printPreviewRequested(p, browser))
817 else:
818 preview.paintRequested.connect(lambda p: browser.render(p))
813 preview.exec_() 819 preview.exec_()
820
821 def __printPreviewRequested(self, printer, browser):
822 """
823 Private slot to generate the print preview.
824
825 @param printer reference to the printer object
826 @type QPrinter
827 @param browser reference to the browser to be printed
828 @type WebBrowserView
829 """
830 QApplication.setOverrideCursor(Qt.WaitCursor);
831 browser.page().execPrintPage(printer, 10 * 1000)
832 QApplication.restoreOverrideCursor();
814 833
815 def __sourceChanged(self, url): 834 def __sourceChanged(self, url):
816 """ 835 """
817 Private slot to handle a change of a browsers source. 836 Private slot to handle a change of a browsers source.
818 837

eric ide

mercurial