src/eric7/WebBrowser/WebBrowserTabWidget.py

branch
eric7
changeset 10240
cbd566d49a88
parent 10069
435cc5875135
child 10436
f6881d10e995
diff -r 63fe209a1e71 -r cbd566d49a88 src/eric7/WebBrowser/WebBrowserTabWidget.py
--- a/src/eric7/WebBrowser/WebBrowserTabWidget.py	Thu Oct 12 17:03:41 2023 +0200
+++ b/src/eric7/WebBrowser/WebBrowserTabWidget.py	Thu Oct 12 17:05:08 2023 +0200
@@ -7,53 +7,26 @@
 Module implementing the central widget showing the web pages.
 """
 
-import os
-
-from PyQt6.QtCore import QMarginsF, Qt, QUrl, pyqtSignal, pyqtSlot
-from PyQt6.QtGui import QIcon, QPageLayout, QPainter, QPixmap
-from PyQt6.QtPrintSupport import (
-    QAbstractPrintDialog,
-    QPrintDialog,
-    QPrinter,
-    QPrintPreviewDialog,
-)
-from PyQt6.QtWidgets import QDialog, QHBoxLayout, QMenu, QToolButton, QWidget
+from PyQt6.QtCore import Qt, QUrl, pyqtSignal, pyqtSlot
+from PyQt6.QtGui import QIcon, QPainter, QPixmap
+from PyQt6.QtWidgets import QHBoxLayout, QMenu, QToolButton, QWidget
 
 from eric7 import Preferences
 from eric7.EricGui import EricPixmapCache
-from eric7.EricGui.EricOverrideCursor import EricOverrideCursor
 from eric7.EricWidgets import EricMessageBox
 from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricTabWidget import EricTabWidget
-from eric7.SystemUtilities import FileSystemUtilities, OSUtilities
+from eric7.SystemUtilities import FileSystemUtilities
 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow
 
 from . import WebInspector
 from .ClosedTabsManager import ClosedTabsManager
-from .Tools import WebBrowserTools
 from .UrlBar.StackedUrlBar import StackedUrlBar
 from .WebBrowserPage import WebBrowserPage
 from .WebBrowserTabBar import WebBrowserTabBar
 from .WebBrowserView import WebBrowserView
 
 
-def isCupsAvailable():
-    """
-    Static method to test the availability of CUPS.
-
-    @return flag indicating the availability of CUPS
-    @rtype bool
-    """
-    if OSUtilities.isMacPlatform():
-        # OS X/MacOS always have CUPS
-        return True
-    elif OSUtilities.isLinuxPlatform():
-        testPrinter = QPrinter()
-        return testPrinter.supportsMultipleCopies()
-    else:
-        return False
-
-
 class WebBrowserTabWidget(EricTabWidget):
     """
     Class implementing the central widget showing the web pages.
@@ -650,44 +623,8 @@
         if browser is None:
             browser = self.currentBrowser()
 
-        printer = QPrinter(mode=QPrinter.PrinterMode.HighResolution)
-        if Preferences.getPrinter("ColorMode"):
-            printer.setColorMode(QPrinter.ColorMode.Color)
-        else:
-            printer.setColorMode(QPrinter.ColorMode.GrayScale)
-        if Preferences.getPrinter("FirstPageFirst"):
-            printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst)
-        else:
-            printer.setPageOrder(QPrinter.PageOrder.LastPageFirst)
-        printer.setPageMargins(
-            QMarginsF(
-                Preferences.getPrinter("LeftMargin") * 10,
-                Preferences.getPrinter("TopMargin") * 10,
-                Preferences.getPrinter("RightMargin") * 10,
-                Preferences.getPrinter("BottomMargin") * 10,
-            ),
-            QPageLayout.Unit.Millimeter,
-        )
-        printerName = Preferences.getPrinter("PrinterName")
-        if printerName:
-            printer.setPrinterName(printerName)
-        printer.setResolution(Preferences.getPrinter("Resolution"))
-        documentName = WebBrowserTools.getFileNameFromUrl(browser.url())
-        printer.setDocName(documentName)
-
-        printDialog = QPrintDialog(printer, self)
-        printDialog.setOptions(
-            QAbstractPrintDialog.PrintDialogOption.PrintToFile
-            | QAbstractPrintDialog.PrintDialogOption.PrintShowPageSize
-        )
-        if not OSUtilities.isWindowsPlatform():
-            if isCupsAvailable():
-                printDialog.setOption(
-                    QAbstractPrintDialog.PrintDialogOption.PrintCollateCopies
-                )
-            printDialog.setOption(QAbstractPrintDialog.PrintDialogOption.PrintPageRange)
-        if printDialog.exec() == QDialog.DialogCode.Accepted:
-            browser.page().execPrintPage(printer, 10 * 1000)
+        if browser is not None:
+            browser.printPage()
 
     @pyqtSlot()
     def printBrowserPdf(self, browser=None):
@@ -696,83 +633,11 @@
 
         @param browser reference to the browser to be printed (HelpBrowser)
         """
-        from .Tools.PrintToPdfDialog import PrintToPdfDialog
-
         if browser is None:
             browser = self.currentBrowser()
 
-        name = WebBrowserTools.getFileNameFromUrl(browser.url())
-        if name:
-            name = name.rsplit(".", 1)[0]
-            name += ".pdf"
-        if hasattr(browser.page(), "printToPdf"):
-            if not name:
-                name = "printout.pdf"
-            dlg = PrintToPdfDialog(name, self)
-            if dlg.exec() == QDialog.DialogCode.Accepted:
-                filePath, pageLayout = dlg.getData()
-                if filePath:
-                    if os.path.exists(filePath):
-                        res = EricMessageBox.warning(
-                            self,
-                            self.tr("Print to PDF"),
-                            self.tr(
-                                """<p>The file <b>{0}</b> exists"""
-                                """ already. Shall it be"""
-                                """ overwritten?</p>"""
-                            ).format(filePath),
-                            EricMessageBox.No | EricMessageBox.Yes,
-                            EricMessageBox.No,
-                        )
-                        if res == EricMessageBox.No:
-                            return
-                    browser.page().printToPdf(
-                        lambda pdf: self.__pdfGeneratedForSave(filePath, pdf),
-                        pageLayout,
-                    )
-        elif OSUtilities.isLinuxPlatform():
-            printer = QPrinter(mode=QPrinter.PrinterMode.HighResolution)
-            if Preferences.getPrinter("ColorMode"):
-                printer.setColorMode(QPrinter.ColorMode.Color)
-            else:
-                printer.setColorMode(QPrinter.ColorMode.GrayScale)
-            printerName = Preferences.getPrinter("PrinterName")
-            if printerName:
-                printer.setPrinterName(printerName)
-            printer.setOutputFormat(QPrinter.OutputFormat.PdfFormat)
-            if name:
-                printer.setOutputFileName(name)
-            printer.setResolution(Preferences.getPrinter("Resolution"))
-
-            printDialog = QPrintDialog(printer, self)
-            if printDialog.exec() == QDialog.DialogCode.Accepted:
-                browser.render(printer)
-
-    def __pdfGeneratedForSave(self, filePath, pdfData):
-        """
-        Private slot to save the generated PDF data to a file.
-
-        @param filePath path to save the PDF to
-        @type str
-        @param pdfData generated PDF document
-        @type QByteArray
-        """
-        if pdfData.size() == 0:
-            return
-
-        try:
-            with open(filePath, "wb") as f:
-                f.write(pdfData)
-        except OSError as err:
-            EricMessageBox.critical(
-                self,
-                self.tr("Print to PDF"),
-                self.tr(
-                    """<p>The PDF could not be written to file <b>{0}"""
-                    """</b>.</p><p><b>Error:</b> {1}</p>"""
-                ).format(filePath, str(err)),
-                EricMessageBox.Ok,
-            )
+        if browser is not None:
+            browser.printPageToPdf()
 
     @pyqtSlot()
     def printPreviewBrowser(self, browser=None):
@@ -784,47 +649,8 @@
         if browser is None:
             browser = self.currentBrowser()
 
-        printer = QPrinter(mode=QPrinter.PrinterMode.HighResolution)
-        if Preferences.getPrinter("ColorMode"):
-            printer.setColorMode(QPrinter.ColorMode.Color)
-        else:
-            printer.setColorMode(QPrinter.ColorMode.GrayScale)
-        if Preferences.getPrinter("FirstPageFirst"):
-            printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst)
-        else:
-            printer.setPageOrder(QPrinter.PageOrder.LastPageFirst)
-        printer.setPageMargins(
-            QMarginsF(
-                Preferences.getPrinter("LeftMargin") * 10,
-                Preferences.getPrinter("TopMargin") * 10,
-                Preferences.getPrinter("RightMargin") * 10,
-                Preferences.getPrinter("BottomMargin") * 10,
-            ),
-            QPageLayout.Unit.Millimeter,
-        )
-        printerName = Preferences.getPrinter("PrinterName")
-        if printerName:
-            printer.setPrinterName(printerName)
-        printer.setResolution(Preferences.getPrinter("Resolution"))
-
-        preview = QPrintPreviewDialog(printer, self)
-        preview.resize(800, 750)
-        preview.paintRequested.connect(
-            lambda p: self.__printPreviewRequested(p, browser)
-        )
-        preview.exec()
-
-    def __printPreviewRequested(self, printer, browser):
-        """
-        Private slot to generate the print preview.
-
-        @param printer reference to the printer object
-        @type QPrinter
-        @param browser reference to the browser to be printed
-        @type WebBrowserView
-        """
-        with EricOverrideCursor():
-            browser.page().execPrintPage(printer, 10 * 1000)
+        if browser is not None:
+            browser.printPreviewPage()
 
     def __sourceChanged(self, url, browser):
         """

eric ide

mercurial