169 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction( |
170 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction( |
170 UI.PixmapCache.getIcon("tabCloseOther.png"), |
171 UI.PixmapCache.getIcon("tabCloseOther.png"), |
171 self.tr("Close Others"), self.__tabContextMenuCloseOthers) |
172 self.tr("Close Others"), self.__tabContextMenuCloseOthers) |
172 self.__tabContextMenu.addAction( |
173 self.__tabContextMenu.addAction( |
173 self.tr('Close All'), self.closeAllBrowsers) |
174 self.tr('Close All'), self.closeAllBrowsers) |
174 # TODO: Print |
175 self.__tabContextMenu.addSeparator() |
175 ## self.__tabContextMenu.addSeparator() |
176 self.__tabContextMenu.addAction( |
176 ## self.__tabContextMenu.addAction( |
177 UI.PixmapCache.getIcon("printPreview.png"), |
177 ## UI.PixmapCache.getIcon("printPreview.png"), |
178 self.tr('Print Preview'), self.__tabContextMenuPrintPreview) |
178 ## self.tr('Print Preview'), self.__tabContextMenuPrintPreview) |
179 self.__tabContextMenu.addAction( |
179 ## self.__tabContextMenu.addAction( |
180 UI.PixmapCache.getIcon("print.png"), |
180 ## UI.PixmapCache.getIcon("print.png"), |
181 self.tr('Print'), self.__tabContextMenuPrint) |
181 ## self.tr('Print'), self.__tabContextMenuPrint) |
182 self.__tabContextMenu.addAction( |
182 ## self.__tabContextMenu.addAction( |
183 UI.PixmapCache.getIcon("printPdf.png"), |
183 ## UI.PixmapCache.getIcon("printPdf.png"), |
184 self.tr('Print as PDF'), self.__tabContextMenuPrintPdf) |
184 ## self.tr('Print as PDF'), self.__tabContextMenuPrintPdf) |
|
185 self.__tabContextMenu.addSeparator() |
185 self.__tabContextMenu.addSeparator() |
186 self.__tabContextMenu.addAction( |
186 self.__tabContextMenu.addAction( |
187 UI.PixmapCache.getIcon("reload.png"), |
187 UI.PixmapCache.getIcon("reload.png"), |
188 self.tr('Reload All'), self.reloadAllBrowsers) |
188 self.tr('Reload All'), self.reloadAllBrowsers) |
189 self.__tabContextMenu.addSeparator() |
189 self.__tabContextMenu.addSeparator() |
269 index = self.__tabContextMenuIndex |
269 index = self.__tabContextMenuIndex |
270 for i in list(range(self.count() - 1, index, -1)) + \ |
270 for i in list(range(self.count() - 1, index, -1)) + \ |
271 list(range(index - 1, -1, -1)): |
271 list(range(index - 1, -1, -1)): |
272 self.closeBrowserAt(i) |
272 self.closeBrowserAt(i) |
273 |
273 |
274 # TODO: Print |
274 def __tabContextMenuPrint(self): |
275 ## def __tabContextMenuPrint(self): |
275 """ |
276 ## """ |
276 Private method to print the selected tab. |
277 ## Private method to print the selected tab. |
277 """ |
278 ## """ |
278 browser = self.widget(self.__tabContextMenuIndex) |
279 ## browser = self.widget(self.__tabContextMenuIndex) |
279 self.printBrowser(browser) |
280 ## self.printBrowser(browser) |
280 |
281 ## |
281 def __tabContextMenuPrintPdf(self): |
282 ## def __tabContextMenuPrintPdf(self): |
282 """ |
283 ## """ |
283 Private method to print the selected tab as PDF. |
284 ## Private method to print the selected tab as PDF. |
284 """ |
285 ## """ |
285 browser = self.widget(self.__tabContextMenuIndex) |
286 ## browser = self.widget(self.__tabContextMenuIndex) |
286 self.printBrowserPdf(browser) |
287 ## self.printBrowserPdf(browser) |
287 |
288 ## |
288 def __tabContextMenuPrintPreview(self): |
289 ## def __tabContextMenuPrintPreview(self): |
289 """ |
290 ## """ |
290 Private method to show a print preview of the selected tab. |
291 ## Private method to show a print preview of the selected tab. |
291 """ |
292 ## """ |
292 browser = self.widget(self.__tabContextMenuIndex) |
293 ## browser = self.widget(self.__tabContextMenuIndex) |
293 self.printPreviewBrowser(browser) |
294 ## self.printPreviewBrowser(browser) |
294 |
295 ## |
|
296 @pyqtSlot() |
295 @pyqtSlot() |
297 def __newBrowser(self): |
296 def __newBrowser(self): |
298 """ |
297 """ |
299 Private slot to open a new browser tab. |
298 Private slot to open a new browser tab. |
300 """ |
299 """ |
526 li = [] |
524 li = [] |
527 for index in range(self.count()): |
525 for index in range(self.count()): |
528 li.append(self.widget(index)) |
526 li.append(self.widget(index)) |
529 return li |
527 return li |
530 |
528 |
531 # TODO: Print |
529 @pyqtSlot() |
532 ## @pyqtSlot() |
530 def printBrowser(self, browser=None): |
533 ## def printBrowser(self, browser=None): |
531 """ |
534 ## """ |
532 Public slot called to print the displayed page. |
535 ## Public slot called to print the displayed page. |
533 |
536 ## |
534 @param browser reference to the browser to be printed (WebBrowserView) |
537 ## @param browser reference to the browser to be printed (WebBrowserView) |
535 """ |
538 ## """ |
536 if browser is None: |
539 ## if browser is None: |
537 browser = self.currentBrowser() |
540 ## browser = self.currentBrowser() |
538 |
541 ## |
539 printer = QPrinter(mode=QPrinter.HighResolution) |
542 ## browser.page().runJavaScript("window.print()") |
540 if Preferences.getPrinter("ColorMode"): |
543 ## self.__printRequested(browser.page().mainFrame()) |
541 printer.setColorMode(QPrinter.Color) |
544 ## |
542 else: |
545 ## def __printRequested(self, frame): |
543 printer.setColorMode(QPrinter.GrayScale) |
546 ## """ |
544 if Preferences.getPrinter("FirstPageFirst"): |
547 ## Private slot to handle a print request. |
545 printer.setPageOrder(QPrinter.FirstPageFirst) |
548 ## |
546 else: |
549 ## @param frame reference to the frame to be printed (QWebFrame) |
547 printer.setPageOrder(QPrinter.LastPageFirst) |
550 ## """ |
548 printer.setPageMargins( |
551 ## printer = QPrinter(mode=QPrinter.HighResolution) |
549 Preferences.getPrinter("LeftMargin") * 10, |
552 ## if Preferences.getPrinter("ColorMode"): |
550 Preferences.getPrinter("TopMargin") * 10, |
553 ## printer.setColorMode(QPrinter.Color) |
551 Preferences.getPrinter("RightMargin") * 10, |
554 ## else: |
552 Preferences.getPrinter("BottomMargin") * 10, |
555 ## printer.setColorMode(QPrinter.GrayScale) |
553 QPrinter.Millimeter |
556 ## if Preferences.getPrinter("FirstPageFirst"): |
554 ) |
557 ## printer.setPageOrder(QPrinter.FirstPageFirst) |
555 printerName = Preferences.getPrinter("PrinterName") |
558 ## else: |
556 if printerName: |
559 ## printer.setPageOrder(QPrinter.LastPageFirst) |
557 printer.setPrinterName(printerName) |
560 ## printer.setPageMargins( |
558 printer.setResolution(Preferences.getPrinter("Resolution")) |
561 ## Preferences.getPrinter("LeftMargin") * 10, |
559 |
562 ## Preferences.getPrinter("TopMargin") * 10, |
560 printDialog = QPrintDialog(printer, self) |
563 ## Preferences.getPrinter("RightMargin") * 10, |
561 if printDialog.exec_() == QDialog.Accepted: |
564 ## Preferences.getPrinter("BottomMargin") * 10, |
562 browser.render(printer) |
565 ## QPrinter.Millimeter |
563 |
566 ## ) |
564 @pyqtSlot() |
567 ## printerName = Preferences.getPrinter("PrinterName") |
565 def printBrowserPdf(self, browser=None): |
568 ## if printerName: |
566 """ |
569 ## printer.setPrinterName(printerName) |
567 Public slot called to print the displayed page to PDF. |
570 ## |
568 |
571 ## printDialog = QPrintDialog(printer, self) |
569 @param browser reference to the browser to be printed (HelpBrowser) |
572 ## if printDialog.exec_() == QDialog.Accepted: |
570 """ |
573 ## try: |
571 if browser is None: |
574 ## frame.print_(printer) |
572 browser = self.currentBrowser() |
575 ## except AttributeError: |
573 |
576 ## E5MessageBox.critical( |
574 printer = QPrinter(mode=QPrinter.HighResolution) |
577 ## self, |
575 if Preferences.getPrinter("ColorMode"): |
578 ## self.tr("eric6 Web Browser"), |
576 printer.setColorMode(QPrinter.Color) |
579 ## self.tr( |
577 else: |
580 ## """<p>Printing is not available due to a bug in""" |
578 printer.setColorMode(QPrinter.GrayScale) |
581 ## """ PyQt5. Please upgrade.</p>""")) |
579 printerName = Preferences.getPrinter("PrinterName") |
582 ## return |
580 if printerName: |
583 ## |
581 printer.setPrinterName(printerName) |
584 ## @pyqtSlot() |
582 printer.setOutputFormat(QPrinter.PdfFormat) |
585 ## def printBrowserPdf(self, browser=None): |
583 name = WebBrowserTools.getFileNameFromUrl(browser.url()) |
586 ## """ |
584 if name: |
587 ## Public slot called to print the displayed page to PDF. |
585 name = name.rsplit('.', 1)[0] |
588 ## |
586 name += '.pdf' |
589 ## @param browser reference to the browser to be printed (HelpBrowser) |
587 printer.setOutputFileName(name) |
590 ## """ |
588 printer.setResolution(Preferences.getPrinter("Resolution")) |
591 ## if browser is None: |
589 |
592 ## browser = self.currentBrowser() |
590 printDialog = QPrintDialog(printer, self) |
593 ## |
591 if printDialog.exec_() == QDialog.Accepted: |
594 ## self.__printPdfRequested(browser.page().mainFrame()) |
592 browser.render(printer) |
595 ## |
593 |
596 ## def __printPdfRequested(self, frame): |
594 @pyqtSlot() |
597 ## """ |
595 def printPreviewBrowser(self, browser=None): |
598 ## Private slot to handle a print to PDF request. |
596 """ |
599 ## |
597 Public slot called to show a print preview of the displayed file. |
600 ## @param frame reference to the frame to be printed (QWebFrame) |
598 |
601 ## """ |
599 @param browser reference to the browser to be printed (HelpBrowserWV) |
602 ## printer = QPrinter(mode=QPrinter.HighResolution) |
600 """ |
603 ## if Preferences.getPrinter("ColorMode"): |
601 from PyQt5.QtPrintSupport import QPrintPreviewDialog |
604 ## printer.setColorMode(QPrinter.Color) |
602 |
605 ## else: |
603 if browser is None: |
606 ## printer.setColorMode(QPrinter.GrayScale) |
604 browser = self.currentBrowser() |
607 ## printerName = Preferences.getPrinter("PrinterName") |
605 |
608 ## if printerName: |
606 printer = QPrinter(mode=QPrinter.HighResolution) |
609 ## printer.setPrinterName(printerName) |
607 if Preferences.getPrinter("ColorMode"): |
610 ## printer.setOutputFormat(QPrinter.PdfFormat) |
608 printer.setColorMode(QPrinter.Color) |
611 ## name = frame.url().path().rsplit('/', 1)[-1] |
609 else: |
612 ## if name: |
610 printer.setColorMode(QPrinter.GrayScale) |
613 ## name = name.rsplit('.', 1)[0] |
611 if Preferences.getPrinter("FirstPageFirst"): |
614 ## name += '.pdf' |
612 printer.setPageOrder(QPrinter.FirstPageFirst) |
615 ## printer.setOutputFileName(name) |
613 else: |
616 ## |
614 printer.setPageOrder(QPrinter.LastPageFirst) |
617 ## printDialog = QPrintDialog(printer, self) |
615 printer.setPageMargins( |
618 ## if printDialog.exec_() == QDialog.Accepted: |
616 Preferences.getPrinter("LeftMargin") * 10, |
619 ## try: |
617 Preferences.getPrinter("TopMargin") * 10, |
620 ## frame.print_(printer) |
618 Preferences.getPrinter("RightMargin") * 10, |
621 ## except AttributeError: |
619 Preferences.getPrinter("BottomMargin") * 10, |
622 ## E5MessageBox.critical( |
620 QPrinter.Millimeter |
623 ## self, |
621 ) |
624 ## self.tr("eric6 Web Browser"), |
622 printerName = Preferences.getPrinter("PrinterName") |
625 ## self.tr( |
623 if printerName: |
626 ## """<p>Printing is not available due to a bug in""" |
624 printer.setPrinterName(printerName) |
627 ## """ PyQt5. Please upgrade.</p>""")) |
625 printer.setResolution(Preferences.getPrinter("Resolution")) |
628 ## return |
626 |
629 ## |
627 preview = QPrintPreviewDialog(printer, self) |
630 ## @pyqtSlot() |
628 preview.paintRequested.connect(lambda p: browser.render(p)) |
631 ## def printPreviewBrowser(self, browser=None): |
629 preview.exec_() |
632 ## """ |
630 |
633 ## Public slot called to show a print preview of the displayed file. |
|
634 ## |
|
635 ## @param browser reference to the browser to be printed (HelpBrowserWV) |
|
636 ## """ |
|
637 ## from PyQt5.QtPrintSupport import QPrintPreviewDialog |
|
638 ## |
|
639 ## if browser is None: |
|
640 ## browser = self.currentBrowser() |
|
641 ## |
|
642 ## printer = QPrinter(mode=QPrinter.HighResolution) |
|
643 ## if Preferences.getPrinter("ColorMode"): |
|
644 ## printer.setColorMode(QPrinter.Color) |
|
645 ## else: |
|
646 ## printer.setColorMode(QPrinter.GrayScale) |
|
647 ## if Preferences.getPrinter("FirstPageFirst"): |
|
648 ## printer.setPageOrder(QPrinter.FirstPageFirst) |
|
649 ## else: |
|
650 ## printer.setPageOrder(QPrinter.LastPageFirst) |
|
651 ## printer.setPageMargins( |
|
652 ## Preferences.getPrinter("LeftMargin") * 10, |
|
653 ## Preferences.getPrinter("TopMargin") * 10, |
|
654 ## Preferences.getPrinter("RightMargin") * 10, |
|
655 ## Preferences.getPrinter("BottomMargin") * 10, |
|
656 ## QPrinter.Millimeter |
|
657 ## ) |
|
658 ## printerName = Preferences.getPrinter("PrinterName") |
|
659 ## if printerName: |
|
660 ## printer.setPrinterName(printerName) |
|
661 ## |
|
662 ## self.__printPreviewBrowser = browser |
|
663 ## preview = QPrintPreviewDialog(printer, self) |
|
664 ## preview.paintRequested.connect(self.__printPreview) |
|
665 ## preview.exec_() |
|
666 ## |
|
667 ## def __printPreview(self, printer): |
|
668 ## """ |
|
669 ## Private slot to generate a print preview. |
|
670 ## |
|
671 ## @param printer reference to the printer object (QPrinter) |
|
672 ## """ |
|
673 ## try: |
|
674 ## self.__printPreviewBrowser.print_(printer) |
|
675 ## except AttributeError: |
|
676 ## E5MessageBox.critical( |
|
677 ## self, |
|
678 ## self.tr("eric6 Web Browser"), |
|
679 ## self.tr( |
|
680 ## """<p>Printing is not available due to a bug in PyQt5.""" |
|
681 ## """Please upgrade.</p>""")) |
|
682 ## return |
|
683 ## |
|
684 def __sourceChanged(self, url): |
631 def __sourceChanged(self, url): |
685 """ |
632 """ |
686 Private slot to handle a change of a browsers source. |
633 Private slot to handle a change of a browsers source. |
687 |
634 |
688 @param url URL of the new site (QUrl) |
635 @param url URL of the new site (QUrl) |