def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ if self.print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) if self.print_settings: if self.print_settings.get("size_unit"): try: unit = getattr( QPrinter, self.print_settings.get("size_unit").capitalize() ) except NameError: debug( "Specified print size unit '{}' not found," "using default.".format( self.print_settings.get("size_unit") )) unit = QPrinter.Millimeter else: unit = QPrinter.Millimeter margins = ( list(self.print_settings.get("margins")) or list(printer.getPageMargins(unit)) ) margins += [unit] printer.setPageMargins(*margins) if self.print_settings.get("orientation") == "landscape": printer.setOrientation(QPrinter.Landscape) else: printer.setOrientation(QPrinter.Portrait) if self.print_settings.get("paper_size"): printer.setPaperSize(QSizeF( *self.print_settings.get("paper_size") ), unit) if self.print_settings.get("resolution"): printer.setResolution( int(self.print_settings.get("resolution")) ) if not self.print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True
def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ if self.print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) if self.print_settings: if self.print_settings.get("size_unit"): try: unit = getattr( QPrinter, self.print_settings.get("size_unit").capitalize()) except NameError: debug("Specified print size unit '{}' not found," "using default.".format( self.print_settings.get("size_unit"))) unit = QPrinter.Millimeter else: unit = QPrinter.Millimeter margins = (list(self.print_settings.get("margins")) or list(printer.getPageMargins(unit))) margins += [unit] printer.setPageMargins(*margins) if self.print_settings.get("orientation") == "landscape": printer.setOrientation(QPrinter.Landscape) else: printer.setOrientation(QPrinter.Portrait) if self.print_settings.get("paper_size"): printer.setPaperSize( QSizeF(*self.print_settings.get("paper_size")), unit) if self.print_settings.get("resolution"): printer.setResolution( int(self.print_settings.get("resolution"))) if not self.print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True
def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ print_settings = self.config.get("print_settings", {}) if print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) # set which printer # FIXME: This isn't documented, because it doesn't seem to work... if print_settings.get("printer_name"): debug( "Setting printer to: {}".format( print_settings.get("printer_name")) ) printer.setPrinterName(print_settings.get("printer_name")) debug("Printer is now: {}".format(printer.printerName())) # Set the units unit_name = print_settings.get("size_unit", 'Millimeter').title() try: unit = getattr(QPrinter, unit_name) except AttributeError: debug( "Specified print size unit '{}' not found, using default." .format(unit_name) ) unit = QPrinter.Millimeter # Set the margins margins = list( print_settings.get("margins", printer.getPageMargins(unit)) ) margins.append(unit) printer.setPageMargins(*margins) # Set the Orientation orientation = print_settings.get("orientation", 'Portrait').title() printer.setOrientation( getattr(QPrinter, orientation, QPrinter.Portrait) ) # Set the paper size paper_size = print_settings.get("paper_size") if type(paper_size) in (list, tuple): # Assume it's a width/height spec printer.setPaperSize(QSizeF(*paper_size), unit) elif paper_size is not None: # Assume it's a size name printer.setPaperSize(getattr(QPrinter, paper_size, 'AnsiA')) # If paper_size is None, we just leave it at the printer's default # Set the resolution resolution = print_settings.get("resolution") if resolution: printer.setResolution(int(resolution)) # Show a print dialog, unless we want silent printing if not print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True
def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ print_settings = self.config.get("print_settings", {}) if print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) # set which printer # FIXME: This isn't documented, because it doesn't seem to work... if print_settings.get("printer_name"): debug("Setting printer to: {}".format( print_settings.get("printer_name"))) printer.setPrinterName(print_settings.get("printer_name")) debug("Printer is now: {}".format(printer.printerName())) # Set the units unit_name = print_settings.get("size_unit", 'Millimeter').title() try: unit = getattr(QPrinter, unit_name) except AttributeError: debug("Specified print size unit '{}' not found, using default.". format(unit_name)) unit = QPrinter.Millimeter # Set the margins margins = list( print_settings.get("margins", printer.getPageMargins(unit))) margins.append(unit) printer.setPageMargins(*margins) # Set the Orientation orientation = print_settings.get("orientation", 'Portrait').title() printer.setOrientation( getattr(QPrinter, orientation, QPrinter.Portrait)) # Set the paper size paper_size = print_settings.get("paper_size") if type(paper_size) in (list, tuple): # Assume it's a width/height spec printer.setPaperSize(QSizeF(*paper_size), unit) elif paper_size is not None: # Assume it's a size name printer.setPaperSize(getattr(QPrinter, paper_size, 'AnsiA')) # If paper_size is None, we just leave it at the printer's default # Set the resolution resolution = print_settings.get("resolution") if resolution: printer.setResolution(int(resolution)) # Show a print dialog, unless we want silent printing if not print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True