Helpviewer/HelpWindow.py

changeset 314
c1379cab7697
parent 313
4872737993ab
child 319
09f456ec6fcf
--- a/Helpviewer/HelpWindow.py	Sun May 30 18:28:06 2010 +0200
+++ b/Helpviewer/HelpWindow.py	Sun May 30 18:53:41 2010 +0200
@@ -431,6 +431,18 @@
         self.connect(self.printAct, SIGNAL('triggered()'), self.__printFile)
         self.__actions.append(self.printAct)
         
+        self.printPdfAct = E5Action(self.trUtf8('Print as PDF'), 
+            UI.PixmapCache.getIcon("printPdf.png"),
+            self.trUtf8('Print as PDF'), 
+            0, 0, self, 'help_file_print_pdf')
+        self.printPdfAct.setStatusTip(self.trUtf8('Print the displayed help as PDF'))
+        self.printPdfAct.setWhatsThis(self.trUtf8(
+                """<b>Print as PDF</b>"""
+                """<p>Print the displayed help text as a PDF file.</p>"""
+        ))
+        self.connect(self.printPdfAct, SIGNAL('triggered()'), self.__printFilePdf)
+        self.__actions.append(self.printPdfAct)
+        
         self.printPreviewAct = E5Action(self.trUtf8('Print Preview'), 
             UI.PixmapCache.getIcon("printPreview.png"),
             self.trUtf8('Print Preview'), 
@@ -1068,6 +1080,7 @@
         menu.addSeparator()
         menu.addAction(self.printPreviewAct)
         menu.addAction(self.printAct)
+        menu.addAction(self.printPdfAct)
         menu.addSeparator()
         menu.addAction(self.closeAct)
         menu.addAction(self.closeAllAct)
@@ -1200,6 +1213,8 @@
             self.trUtf8('Print Preview'), self.__tabContextMenuPrintPreview)
         self.__tabContextMenu.addAction(UI.PixmapCache.getIcon("print.png"),
             self.trUtf8('Print'), self.__tabContextMenuPrint)
+        self.__tabContextMenu.addAction(UI.PixmapCache.getIcon("printPdf.png"),
+            self.trUtf8('Print as PDF'), self.__tabContextMenuPrintPdf)
         self.__tabContextMenu.addSeparator()
         self.__tabContextMenu.addAction(self.bookmarksAllTabsAct)
     
@@ -1219,6 +1234,7 @@
         filetb.addSeparator()
         filetb.addAction(self.printPreviewAct)
         filetb.addAction(self.printAct)
+        filetb.addAction(self.printPdfAct)
         filetb.addSeparator()
         filetb.addAction(self.closeAct)
         filetb.addAction(self.exitAct)
@@ -1619,6 +1635,47 @@
                                 """Please upgrade.</p>"""))
                 return
         
+    def __printFilePdf(self, browser = None):
+        """
+        Private slot called to print the displayed file to PDF.
+        
+        @param browser reference to the browser to be printed (HelpBrowserWV)
+        """
+        if browser is None:
+            browser = self.currentBrowser()
+        
+        self.__printPdfRequested(browser.page().mainFrame())
+        
+    def __printPdfRequested(self, frame):
+        """
+        Private slot to handle a print to PDF request.
+        
+        @param frame reference to the frame to be printed (QWebFrame)
+        """
+        printer = QPrinter(mode = QPrinter.HighResolution)
+        if Preferences.getPrinter("ColorMode"):
+            printer.setColorMode(QPrinter.Color)
+        else:
+            printer.setColorMode(QPrinter.GrayScale)
+        printer.setPrinterName(Preferences.getPrinter("PrinterName"))
+        printer.setOutputFormat(QPrinter.PdfFormat)
+        name = frame.url().path().rsplit('/', 1)[-1]
+        if name:
+            name = name.rsplit('.', 1)[0]
+            name += '.pdf'
+            printer.setOutputFileName(name)
+        
+        printDialog = QPrintDialog(printer, self)
+        if printDialog.exec_() == QDialog.Accepted:
+            try:
+                frame.print_(printer)
+            except AttributeError:
+                QMessageBox.critical(self,
+                    self.trUtf8("Eric Web Browser"),
+                    self.trUtf8("""<p>Printing is not available due to a bug in PyQt4."""
+                                """Please upgrade.</p>"""))
+                return
+        
     def __printPreviewFile(self, browser = None):
         """
         Private slot called to show a print preview of the displayed file.
@@ -2084,6 +2141,7 @@
                 self.__setPathComboBackground()
                 
                 self.printAct.setEnabled(hasattr(cb, 'print_'))
+                self.printPdfAct.setEnabled(hasattr(cb, 'print_'))
                 if self.printPreviewAct:
                     self.printPreviewAct.setEnabled(hasattr(cb, 'print_'))
                 
@@ -2150,6 +2208,13 @@
         browser = self.tabWidget.widget(self.tabContextMenuIndex)
         self.__printFile(browser)
         
+    def __tabContextMenuPrintPdf(self):
+        """
+        Private method to print the selected tab.
+        """
+        browser = self.tabWidget.widget(self.tabContextMenuIndex)
+        self.__printFilePdf(browser)
+        
     def __tabContextMenuPrintPreview(self):
         """
         Private method to show a print preview of the selected tab.

eric ide

mercurial