コード例 #1
0
ファイル: HelpTabWidget.py プロジェクト: testmana2/test
 def printPreviewBrowser(self, browser=None):
     """
     Public slot called to show a print preview of the displayed file.
     
     @param browser reference to the browser to be printed (HelpBrowserWV)
     """
     from PyQt5.QtPrintSupport import QPrintPreviewDialog
     
     if browser is None:
         browser = self.currentBrowser()
     
     printer = QPrinter(mode=QPrinter.HighResolution)
     if Preferences.getPrinter("ColorMode"):
         printer.setColorMode(QPrinter.Color)
     else:
         printer.setColorMode(QPrinter.GrayScale)
     if Preferences.getPrinter("FirstPageFirst"):
         printer.setPageOrder(QPrinter.FirstPageFirst)
     else:
         printer.setPageOrder(QPrinter.LastPageFirst)
     printer.setPageMargins(
         Preferences.getPrinter("LeftMargin") * 10,
         Preferences.getPrinter("TopMargin") * 10,
         Preferences.getPrinter("RightMargin") * 10,
         Preferences.getPrinter("BottomMargin") * 10,
         QPrinter.Millimeter
     )
     printerName = Preferences.getPrinter("PrinterName")
     if printerName:
         printer.setPrinterName(printerName)
     
     self.__printPreviewBrowser = browser
     preview = QPrintPreviewDialog(printer, self)
     preview.paintRequested.connect(self.__printPreview)
     preview.exec_()
コード例 #2
0
ファイル: UIPreviewer.py プロジェクト: Darriall/eric
 def __printPreviewImage(self):
     """
     Private slot to handle the Print Preview menu action.
     """
     from PyQt5.QtPrintSupport import QPrintPreviewDialog
     
     if self.mainWidget is None:
         E5MessageBox.critical(
             self,
             self.tr("Print Preview"),
             self.tr("""There is no UI file loaded."""))
         return
     
     settings = Preferences.Prefs.settings
     printer = QPrinter(QPrinter.HighResolution)
     printer.setFullPage(True)
     
     printerName = Preferences.getPrinter("UIPreviewer/printername")
     if printerName:
         printer.setPrinterName(printerName)
     printer.setPageSize(
         QPrinter.PageSize(int(settings.value("UIPreviewer/pagesize"))))
     printer.setPageOrder(
         QPrinter.PageOrder(int(settings.value("UIPreviewer/pageorder"))))
     printer.setOrientation(QPrinter.Orientation(
         int(settings.value("UIPreviewer/orientation"))))
     printer.setColorMode(
         QPrinter.ColorMode(int(settings.value("UIPreviewer/colormode"))))
     
     preview = QPrintPreviewDialog(printer, self)
     preview.paintRequested.connect(self.__print)
     preview.exec_()
コード例 #3
0
ファイル: spreadsheet.py プロジェクト: death-finger/Scripts
 def print_(self):
     printer = QPrinter(QPrinter.ScreenResolution)
     dlg = QPrintPreviewDialog(printer)
     view = PrintView()
     view.setModel(self.table.model())
     dlg.paintRequested.connect(view.print_)
     dlg.exec_()
コード例 #4
0
ファイル: PixmapDiagram.py プロジェクト: testmana2/test
 def __printPreviewDiagram(self):
     """
     Private slot called to show a print preview of the diagram.
     """
     from PyQt5.QtPrintSupport import QPrintPreviewDialog
     
     printer = QPrinter(mode=QPrinter.ScreenResolution)
     printer.setFullPage(True)
     if Preferences.getPrinter("ColorMode"):
         printer.setColorMode(QPrinter.Color)
     else:
         printer.setColorMode(QPrinter.GrayScale)
     if Preferences.getPrinter("FirstPageFirst"):
         printer.setPageOrder(QPrinter.FirstPageFirst)
     else:
         printer.setPageOrder(QPrinter.LastPageFirst)
     printer.setPageMargins(
         Preferences.getPrinter("LeftMargin") * 10,
         Preferences.getPrinter("TopMargin") * 10,
         Preferences.getPrinter("RightMargin") * 10,
         Preferences.getPrinter("BottomMargin") * 10,
         QPrinter.Millimeter
     )
     printer.setPrinterName(Preferences.getPrinter("PrinterName"))
     
     preview = QPrintPreviewDialog(printer, self)
     preview.paintRequested[QPrinter].connect(self.__print)
     preview.exec_()
コード例 #5
0
ファイル: window.py プロジェクト: daffodil/retext
	def printPreview(self):
		document = self.getDocumentForPrint()
		if document == None:
			return
		printer = self.standardPrinter()
		preview = QPrintPreviewDialog(printer, self)
		preview.paintRequested.connect(document.print)
		preview.exec()
コード例 #6
0
ファイル: notepad.py プロジェクト: golovatyi/1Term_Project
    def printDocument(self):

        document = self.text.document()
        printer = QPrinter()
        dlg = QPrintPreviewDialog(printer, self)
        if dlg.exec_() != QtWidgets.QDialog.Accepted:
            return
        document.print_(printer)
        self.statusBar().showMessage("Печать успешна", 2000)
コード例 #7
0
ファイル: window.py プロジェクト: retext-project/retext
	def printPreview(self):
		title, htmltext, preview = self.currentTab.getDocumentForExport(includeStyleSheet=True,
										webenv=False)
		document = self.getDocumentForPrint(title, htmltext, preview)
		if document is None:
			return
		printer = self.standardPrinter(title)
		preview = QPrintPreviewDialog(printer, self)
		preview.paintRequested.connect(document.print)
		preview.exec()
コード例 #8
0
    def __init__(self, parent=None, url = ""):
        """
        Constructor of HtmlView

        :param parent: parent of the view
        :param url: url to load, if set, a loadFInished signal is emitted
        """
        super().__init__(parent)

        self.html = ""
        self.setUrl(QUrl(url))

        """Open QPrintPreviewDialog dialog window"""
        self.preview = QPrintPreviewDialog()

        # just for the moment / buf in Qt leads to incorrect printing of tables fomr QWebKit
        self.preview.printer().setOutputFormat(QPrinter.PdfFormat)
        self.preview.printer().setPaperSize(QPrinter.A4)

        self.textedit = QTextEdit()

        self.preview.paintRequested.connect(self.printPreview)

        if url != "":
            self.loadFinished.connect(self.execpreview)
コード例 #9
0
ファイル: ui_tools.py プロジェクト: Salmista-94/Ninja_PyQt5
def print_file(fileName, printFunction):
    """This method print a file

    This method print a file, fileName is the default fileName,
    and printFunction is a funcion that takes a QPrinter
    object and print the file,
    the print method
    More info on:http://doc.qt.nokia.com/latest/printing.html"""

    printer = QPrinter(QPrinter.HighResolution)
    printer.setPageSize(QPrinter.A4)
    printer.setOutputFileName(fileName)
    printer.setDocName(fileName)

    preview = QPrintPreviewDialog(printer)
    preview.paintRequested['QPrinter*'].connect(printFunction)
    size = QApplication.instance().desktop().screenGeometry()
    width = size.width() - 100
    height = size.height() - 100
    preview.setMinimumSize(width, height)
    preview.exec_()
コード例 #10
0
ファイル: misccommands.py プロジェクト: fiete201/qutebrowser
def _print_preview(tab: apitypes.Tab) -> None:
    """Show a print preview."""
    def print_callback(ok: bool) -> None:
        if not ok:
            message.error("Printing failed!")

    tab.printing.check_preview_support()
    diag = QPrintPreviewDialog(tab)
    diag.setAttribute(Qt.WA_DeleteOnClose)
    diag.setWindowFlags(diag.windowFlags() | Qt.WindowMaximizeButtonHint |
                        Qt.WindowMinimizeButtonHint)
    diag.paintRequested.connect(functools.partial(
        tab.printing.to_printer, callback=print_callback))
    diag.exec_()
コード例 #11
0
ファイル: print_qt.py プロジェクト: Meller008/CRM-Avi
    def __init__(self, parent=None, html=None):
        super(PrintHtml, self).__init__(parent)

        # html = codecs.open(b"template.html", encoding='utf-8').read()
        baseurl = QUrl.fromLocalFile(os.getcwd() + "/temp/index.html")
        self.setHtml(html, baseurl)
        self.printer = QPrinter()
        self.printer.setPageSize(QPrinter.A4)
        self.printer.setOrientation(QPrinter.Portrait)
        self.printer.setPageMargins(5, 5, 5, 5, QPrinter.Millimeter)
        self.setFixedWidth(1000)

        dialog = QPrintPreviewDialog(self.printer)
        dialog.setWindowState(Qt.WindowMaximized)
        dialog.paintRequested.connect(self.print_)
        dialog.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowContextHelpButtonHint)
        dialog.exec()
コード例 #12
0
class HtmlView(QWebEngineView):
    """Subclass QWebView and connect to a QPrintPreviewDialog object"""

    def __init__(self, parent=None, url = ""):
        """
        Constructor of HtmlView

        :param parent: parent of the view
        :param url: url to load, if set, a loadFInished signal is emitted
        """
        super().__init__(parent)

        self.html = ""
        self.setUrl(QUrl(url))

        """Open QPrintPreviewDialog dialog window"""
        self.preview = QPrintPreviewDialog()

        # just for the moment / buf in Qt leads to incorrect printing of tables fomr QWebKit
        self.preview.printer().setOutputFormat(QPrinter.PdfFormat)
        self.preview.printer().setPaperSize(QPrinter.A4)

        self.textedit = QTextEdit()

        self.preview.paintRequested.connect(self.printPreview)

        if url != "":
            self.loadFinished.connect(self.execpreview)

    def execpreview(self, arg):
        self.preview.exec()

    def printPreview(self, printer):
        self.textedit.print(printer)

    def setHtml_(self, html):
        self.setHtml(html)
        self.textedit.setHtml(html)

        # small workaround to find the QPrintPreviewWidget inside the pre-defined dialog and force it to update its content
        wdg = self.preview.findChild(PyQt5.QtPrintSupport.QPrintPreviewWidget)
        if wdg is not None:
            wdg.updatePreview()
コード例 #13
0
    def vistaPrevia(self):
        if not self.documento.isEmpty():
            impresion = QPrinter(QPrinter.HighResolution)

            vista = QPrintPreviewDialog(impresion, self)
            vista.setWindowTitle("Vista previa")
            vista.setWindowFlags(Qt.Window)
            vista.resize(800, 600)

            exportarPDF = vista.findChildren(QToolBar)
            exportarPDF[0].addAction(QIcon("exportarPDF.png"),
                                     "Exportar a PDF", self.exportarPDF)

            vista.paintRequested.connect(self.vistaPreviaImpresion)
            vista.exec_()
        else:
            QMessageBox.critical(self, "Vista previa",
                                 "No hay datos para visualizar.   ",
                                 QMessageBox.Ok)
コード例 #14
0
ファイル: mdviewer.py プロジェクト: tfoerst3r/mdviewer
 def print_doc(self):
     dialog = QPrintPreviewDialog()
     dialog.paintRequested.connect(self.web_view.print_)
     dialog.exec_()
コード例 #15
0
	def print_preview_dialog(self):
		printer = QPrinter(QPrinter.HighResolution)
		preview = QPrintPreviewDialog(printer, self)
		preview.paintRequested.connect(self.print_preview)
コード例 #16
0
    def _print(self):
        preview_dialog = QPrintPreviewDialog(self._printer, self)

        preview_dialog.setMinimumSize(cons.PRINT_PREVIEW_DIALOG_WIDTH, cons.PRINT_PREVIEW_DIALOG_HEIGHT)
        preview_dialog.paintRequested.connect(self._print_preview)
        preview_dialog.exec_()
コード例 #17
0
    def printpage(self, preview=False, count: {'special': 'count'} = None):
        """Print the current/[count]th tab.

        Args:
            preview: Show preview instead of printing.
            count: The tab index to print, or None.
        """
        if not qtutils.check_print_compat():
            # WORKAROUND (remove this when we bump the requirements to 5.3.0)
            raise cmdexc.CommandError(
                "Printing on Qt < 5.3.0 on Windows is broken, please upgrade!")
        tab = self._cntwidget(count)
        if tab is not None:
            if preview:
                diag = QPrintPreviewDialog()
                diag.setAttribute(Qt.WA_DeleteOnClose)
                diag.setWindowFlags(diag.windowFlags()
                                    | Qt.WindowMaximizeButtonHint
                                    | Qt.WindowMinimizeButtonHint)
                diag.paintRequested.connect(tab.print)
                diag.exec_()
            else:
                diag = QPrintDialog()
                diag.setAttribute(Qt.WA_DeleteOnClose)
                diag.open(lambda: tab.print(diag.printer()))
コード例 #18
0
ファイル: Notepad+.py プロジェクト: yashrajput0508/Notepad-
 def printsetup(self):
     self.printer = QPrinter(QPrinter.HighResolution)
     dialog = QPrintPreviewDialog(self.printer, self)
     dialog.paintRequested.connect(self.handle_paint_request)
     dialog.exec_()
コード例 #19
0
 def print_preview(self):
     printer = QPrinter(QPrinter.HighResolution)
     preview_dialog = QPrintPreviewDialog(printer, self)
     preview_dialog.paintRequested.connect(
         lambda: self.ui.main_text.print_(printer))
     preview_dialog.exec_()
コード例 #20
0
ファイル: barcode.py プロジェクト: jekoie/JekoieDemo
 def handle_preview(self):
     preview = QPrintPreviewDialog()
     preview.paintRequested.connect(self.handle_paint)
     preview.exec()
コード例 #21
0
 def Imprimir(self):
     imprimir = QPrinter(QPrinter.HighResolution)
     previsualizacao = QPrintPreviewDialog(imprimir, self)
     previsualizacao.paintRequested.connect(self.printprevia)
     previsualizacao.exec_()
コード例 #22
0
 def PageView(self):
     preview = QPrintPreviewDialog()
     preview.paintRequested.connect(self.PaintPageView)
     preview.exec_()
コード例 #23
0
ファイル: diagramprinting.py プロジェクト: umlfri/umlfri2
 def show_preview(self):
     dlg = QPrintPreviewDialog(self.__printing.printer)
     dlg.paintRequested.connect(self.__print_diagram)
     dlg.exec_()
コード例 #24
0
 def preview(self):
     preview = QPrintPreviewDialog()
     # If a print is requested, open print dialog
     preview.paintRequested.connect(lambda p: self.outputText.print_(p))
     preview.exec_()
コード例 #25
0
def on_button_clicked():
    printer = QPrinter(QPrinter.HiResolution)
    previe = QPrintPreviewDialog(printer, )
コード例 #26
0
 def kagidadok(self):
     diyalog = QPrintPreviewDialog()
     diyalog.paintRequested.connect(self.ciktial)
     diyalog.exec()
コード例 #27
0
 def handle_preview(self):
     dialog = QPrintPreviewDialog()
     dialog.setWindowIcon(QIcon('./images/logos/logo.jpg'))
     dialog.setWindowFlags(dialog.windowFlags()
                           | Qt.WindowSystemMenuHint
                           | Qt.WindowMinMaxButtonsHint)
     dialog.resize(1050, 700)
     #dialog.setMinimumSize(1050, 700)
     dialog.paintRequested.connect(self.handle_paint_request)
     dialog.exec_()
コード例 #28
0
 def printPreview(self):
     printer = QPrinter(QPrinter.HighResolution)
     previewDialog = QPrintPreviewDialog(printer, self)
     previewDialog.paintRequested.connect(self.preview)
     previewDialog.exec()
コード例 #29
0
 def handlePreview(self):
     dialog = QPrintPreviewDialog()
     dialog.paintRequested.connect(self.handlePaintRequest)
     dialog.exec_()
コード例 #30
0
 def print_page(self):
     dlg = QPrintPreviewDialog()
     dlg.paintRequested.connect(self.browser.print_)
     dlg.exec_()
コード例 #31
0
ファイル: notepad.py プロジェクト: golovatyi/1Term_Project
 def printReview(self):
     printer = QPrinter(QPrinter.HighResolution)
     review = QPrintPreviewDialog(printer, self)
     review.setWindowFlags(QtCore.Qt.Window)
     review.paintRequested.connect(self.print)
     review.exec_()
コード例 #32
0
 def _print_preview(self):
     printer = QPrinter(QPrinter.HighResolution)
     self.preview_dialog = QPrintPreviewDialog(printer, self)
     self.preview_dialog.paintRequested.connect(
         self._actually_print_preview)
     self.preview_dialog.exec_()
コード例 #33
0
class ReportEditor(QMainWindow, Ui_ReportEditorWindow):
    def __init__(self, processor, parent=None):
        super().__init__(parent)
        self.processor = processor
        self.settings = SupremeSettings()
        self._report_items = {}

        self._file_name = None

        self.setupUi(self)
        self.splitter.setStretchFactor(0, 1)
        self.splitter.setStretchFactor(1, 3)

        self.actionUpdate.triggered.connect(self._create_report)
        self.usedList.doubleClicked.connect(
            lambda i: self.usedList.takeItem(i.row()))

        self._setup_text_editor()
        self._setup_text_connections()

        self._init_report_items()

    def _init_report_items(self):
        items = [report_class(self.processor, parent=self.availableList)
                 for report_class in _report_classes]
        factory = AlgorithmReportFactory(self.processor, self.availableList)
        items += factory.get_report_items()
        self._report_items = {}
        for report_item in items:
            self._report_items[report_item.name] = report_item
            self.availableList.addItem(report_item)
        self.availableList.mousePressEvent = self._av_list_mouse_press_event

    def _av_list_mouse_press_event(self, event: QMouseEvent):
        if event.button() == Qt.RightButton:
            item = self.availableList.itemAt(event.pos())
            if hasattr(item, 'settings'):
                item.change_settings()
        QListWidget.mousePressEvent(self.availableList, event)

    def _create_report(self):
        self.textEdit.clear()
        self.statusbar.showMessage('Создание отчёта...')
        html = ""
        for i in range(self.usedList.count()):
            list_item = self.usedList.item(i)
            report_item = self._report_items[list_item.text()]
            html += report_item.create_html()
        html = encapsulate_html(html)
        self.textEdit.setHtml(html)
        self.textEdit.document().setModified(True)
        self.statusbar.showMessage('Отчёт создан')

    def _setup_text_editor(self):
        self.styleComboBox = QComboBox(self.fontToolBar)
        self.styleComboBox.addItem("Standard")
        self.styleComboBox.addItem("Bullet List (Disc)")
        self.styleComboBox.addItem("Bullet List (Circle)")
        self.styleComboBox.addItem("Bullet List (Square)")
        self.styleComboBox.addItem("Ordered List (Decimal)")
        self.styleComboBox.addItem("Ordered List (Alpha lower)")
        self.styleComboBox.addItem("Ordered List (Alpha upper)")
        self.styleComboBox.addItem("Ordered List (Roman lower)")
        self.styleComboBox.addItem("Ordered List (Roman upper)")
        self.styleComboBox.addItem("Heading 1")
        self.styleComboBox.addItem("Heading 2")
        self.styleComboBox.addItem("Heading 3")
        self.styleComboBox.addItem("Heading 4")
        self.styleComboBox.addItem("Heading 5")
        self.styleComboBox.addItem("Heading 6")
        self.fontToolBar.addWidget(self.styleComboBox)

        self.fontComboBox = QFontComboBox(self.fontToolBar)  # TODO connect
        self.fontToolBar.addWidget(self.fontComboBox)

        self.sizeComboBox = QComboBox(self.fontToolBar)  # TODO connect
        sizes = QFontDatabase.standardSizes()
        [self.sizeComboBox.addItem(str(size)) for size in sizes]
        self.sizeComboBox.setCurrentIndex(
            sizes.index(QApplication.font().pointSize()))
        self.fontToolBar.addWidget(self.sizeComboBox)

    def _setup_text_connections(self):
        self.textEdit.currentCharFormatChanged.connect(
            self._current_char_format_changed)
        self.textEdit.cursorPositionChanged.connect(
            self._cursor_position_changed)

        self.actionSave.triggered.connect(self._save)
        self.actionSaveAs.triggered.connect(self._save_as)
        self.actionBrowser.triggered.connect(self._browser)

        self.actionPrint.triggered.connect(self._print)
        self.actionPrintPreview.triggered.connect(self._print_preview)
        self.actionPDF.triggered.connect(self._print_pdf)

        self.textEdit.document().modificationChanged.connect(
            self.actionSave.setEnabled)
        self.textEdit.document().modificationChanged.connect(
            self.actionSaveAs.setEnabled)

        self.styleComboBox.activated.connect(self._text_style)
        self.fontComboBox.currentTextChanged.connect(self._text_family)
        self.sizeComboBox.currentTextChanged.connect(self._text_size)

        self.actionTextBold.triggered.connect(self._text_bold)
        self.actionTextItalic.triggered.connect(self._text_italic)
        self.actionTextUnderline.triggered.connect(self._text_underline)
        self.actionTextColor.triggered.connect(self._text_color)

        self.actionTextLeft.triggered.connect(self._text_align)
        self.actionTextRight.triggered.connect(self._text_align)
        self.actionTextCenter.triggered.connect(self._text_align)
        self.actionTextJustify.triggered.connect(self._text_align)

        self.actionUndo.triggered.connect(self.textEdit.undo)
        self.actionRedo.triggered.connect(self.textEdit.redo)

        self._font_changed(self.textEdit.font())
        self._color_changed(self.textEdit.textColor())
        self._alignment_changed(self.textEdit.alignment())

        self.actionSave.setEnabled(self.textEdit.document().isModified())
        self.actionUndo.setEnabled(self.textEdit.document().isUndoAvailable())
        self.actionRedo.setEnabled(self.textEdit.document().isRedoAvailable())
        QApplication.clipboard().dataChanged.connect(
            self._clipboard_data_changed)

    def _save(self):
        if not self._file_name:
            return self._save_as()
        if self._file_name.startswith(':/'):
            return self._save_as()

        writer = QTextDocumentWriter(self._file_name)
        success = writer.write(self.textEdit.document())
        if success:
            self.statusbar.showMessage('Сохранено успешно')
        else:
            self.statusbar.showMessage('Ошибка сохранения')

    def _save_as(self):
        dialog = QFileDialog(self, 'Сохранить как...')
        dialog.setAcceptMode(QFileDialog.AcceptSave)
        mime_types = ["text/html", "text/plain",
                      "application/vnd.oasis.opendocument.text"]
        dialog.setMimeTypeFilters(mime_types)
        dialog.setDefaultSuffix("html")
        if dialog.exec_() != QDialog.Accepted:
            self.statusbar.showMessage('Сохранение отменено')
            return False
        self._file_name = dialog.selectedFiles()[0]
        return self._save()

    def _print(self):
        printer = QPrinter(QPrinter.HighResolution)
        self.print_dialog = QPrintDialog(printer, self)
        if self.textEdit.textCursor().hasSelection():
            self.print_dialog.addEnabledOption(QPrintDialog.PrintSelection)
        self.print_dialog.setWindowTitle('Печать')
        if self.print_dialog.exec_() == QDialog.accepted:
            self.textEdit.print(printer)
        self.print_dialog = None

    def _print_preview(self):
        printer = QPrinter(QPrinter.HighResolution)
        self.preview_dialog = QPrintPreviewDialog(printer, self)
        self.preview_dialog.paintRequested.connect(
            self._actually_print_preview)
        self.preview_dialog.exec_()

    def _browser(self, not_open=False):
        filename = f'{self.settings["tempdir"]}/temp_report.html'
        writer = QTextDocumentWriter(filename)
        writer.write(self.textEdit.document())
        if not not_open:
            webbrowser.open_new(filename)

    def _actually_print_preview(self, printer: QPrinter):
        self.textEdit.print(printer)

    def _print_pdf(self):
        dialog = QFileDialog(self, 'Сохранить в PDF')
        dialog.setAcceptMode(QFileDialog.AcceptSave)
        dialog.setMimeTypeFilters(['application/pdf'])
        dialog.setDefaultSuffix('pdf')
        if dialog.exec_() != QDialog.Accepted:
            return
        name = dialog.selectedFiles()[0]
        self._browser(True)
        pdfkit.from_file(f'{self.settings["tempdir"]}/temp_report.html', name)
        self.statusbar.showMessage('Экспорт успешен')
        if platform.system() == 'Darwin':       # macOS
            subprocess.call(('open', name))
        elif platform.system() == 'Windows':    # Windows
            os.startfile(name)
        else:                                   # linux variants
            subprocess.call(('xdg-open', name))

    def _text_bold(self):
        fmt = QTextCharFormat()
        fmt.setFontWeight(QFont.Bold if self.actionTextBold.isChecked()
                          else QFont.Normal)
        self._merge_text_format(fmt)

    def _text_italic(self):
        fmt = QTextCharFormat()
        fmt.setFontItalic(self.actionTextItalic.isChecked())
        self._merge_text_format(fmt)

    def _text_underline(self):
        fmt = QTextCharFormat()
        fmt.setFontUnderline(self.actionTextUnderline.isChecked())
        self._merge_text_format(fmt)

    def _merge_text_format(self, format):
        cursor = self.textEdit.textCursor()
        if not cursor.hasSelection():
            cursor.select(QTextCursor.WordUnderCursor)
        cursor.mergeCharFormat(format)
        self.textEdit.mergeCurrentCharFormat(format)

    def _cursor_position_changed(self):
        self._alignment_changed(self.textEdit.alignment())
        text_list = self.textEdit.textCursor().currentList()
        if text_list:
            list_formats = [
                QTextListFormat.ListDisc,
                QTextListFormat.ListCircle,
                QTextListFormat.ListSquare,
                QTextListFormat.ListDecimal,
                QTextListFormat.ListLowerAlpha,
                QTextListFormat.ListUpperAlpha,
                QTextListFormat.ListLowerRoman,
                QTextListFormat.ListUpperRoman
            ]
            try:
                list_index = list_formats.index(text_list.format().style())
            except ValueError:
                list_index = -1
            self.styleComboBox.setCurrentIndex(list_index)
        else:
            heading_level = self.textEdit.textCursor().blockFormat() \
                .headingLevel()
            self.styleComboBox.setCurrentIndex(
                heading_level + 8 if heading_level else 0)

    def _current_char_format_changed(self, format):
        self._font_changed(format.font())
        self._color_changed(format.foreground().color())

    def _text_style(self, index: int):
        styles = {
            1: QTextListFormat.ListDisc,
            2: QTextListFormat.ListCircle,
            3: QTextListFormat.ListSquare,
            4: QTextListFormat.ListDecimal,
            5: QTextListFormat.ListLowerAlpha,
            6: QTextListFormat.ListUpperAlpha,
            7: QTextListFormat.ListLowerRoman,
            8: QTextListFormat.ListUpperRoman
        }

        cursor = self.textEdit.textCursor()
        try:
            style = styles[index]
        except KeyError:
            style = None

        cursor.beginEditBlock()
        block_fmt = cursor.blockFormat()
        if style is None:
            block_fmt.setObjectIndex(-1)
            heading_level = index - 9 + 1 if index >= 9 else 0
            block_fmt.setHeadingLevel(heading_level)
            cursor.setBlockFormat(block_fmt)

            size = 4 - heading_level if heading_level else 0
            fmt = QTextCharFormat()
            fmt.setFontWeight(QFont.Bold if heading_level else QFont.Normal)
            fmt.setProperty(QTextFormat.FontSizeAdjustment, size)
            cursor.select(QTextCursor.LineUnderCursor)
            cursor.mergeCharFormat(fmt)
            self.textEdit.mergeCurrentCharFormat(fmt)
        else:
            list_fmt = QTextListFormat()
            if cursor.currentList():
                list_fmt = cursor.currentList().format()
            else:
                list_fmt.setIndent(block_fmt.indent() + 1)
                block_fmt.setIndent(0)
                cursor.setBlockFormat(block_fmt)
            list_fmt.setStyle(style)
            cursor.createList(list_fmt)
        cursor.endEditBlock()

    def _text_family(self, font: str):
        fmt = QTextCharFormat()
        fmt.setFontFamily(font)
        self._merge_text_format(fmt)

    def _text_size(self, size: str):
        size = float(size)
        fmt = QTextCharFormat()
        fmt.setFontPointSize(size)
        self._merge_text_format(fmt)

    def _text_color(self):
        col = QColorDialog.getColor(self.textEdit.textColor(), self)
        if not col.isValid():
            return
        fmt = QTextCharFormat()
        fmt.setForeground(col)
        self._merge_text_format(fmt)
        self._color_changed(col)

    def _text_align(self):
        action = self.sender()
        if action == self.actionTextLeft:
            self.textEdit.setAlignment(Qt.AlignLeft | Qt.AlignAbsolute)
        elif action == self.actionTextCenter:
            self.textEdit.setAlignment(Qt.AlignHCenter)
        elif action == self.actionTextRight:
            self.textEdit.setAlignment(Qt.AlignRight | Qt.AlignAbsolute)
        elif action == self.actionTextJustify:
            self.textEdit.setAlignment(Qt.AlignJustify)

    def _font_changed(self, font):
        self.fontComboBox.setCurrentIndex(self.fontComboBox.findText(
            QFontInfo(font).family()))
        self.sizeComboBox.setCurrentIndex(self.sizeComboBox.findText(
            str(int(font.pointSize()))))
        self.actionTextBold.setChecked(font.bold())
        self.actionTextItalic.setChecked(font.italic())
        self.actionTextUnderline.setChecked(font.underline())

    def _color_changed(self, color):
        pass

    def _alignment_changed(self, alignment):
        [a.setChecked(False) for a in
         (self.actionTextLeft, self.actionTextRight,
          self.actionTextCenter, self.actionTextJustify)]
        if alignment & Qt.AlignLeft:
            self.actionTextLeft.setChecked(True)
        elif alignment & Qt.AlignHCenter:
            self.actionTextCenter.setChecked(True)
        elif alignment & Qt.AlignRight:
            self.actionTextRight.setChecked(True)
        elif alignment & Qt.AlignJustify:
            self.actionTextJustify.setChecked(True)

    def _clipboard_data_changed(self):
        md = QApplication.clipboard().mimeData()
        if md:
            self.actionTextPaste.setEnabled(md.hasText())
コード例 #34
0
ファイル: textEdit.py プロジェクト: inzem77/ws-chat2
 def filePrintPreview(self):
     printer = QPrinter(QPrinter.HighResolution)
     preview = QPrintPreviewDialog(printer, self)
     preview.paintRequested.connect(self.printPreview)
     preview.exec_()
コード例 #35
0
ファイル: main.py プロジェクト: AbanobashrafX/PowerPad
 def printTool(self):
     printer = QPrinter(QPrinter.HighResolution)
     # dialog = QPrintDialog(printer, self)
     dialog = QPrintPreviewDialog(printer, self)
     dialog.paintRequested.connect(lambda: self.textEdit.print_(printer))
     dialog.exec_()
コード例 #36
0
ファイル: commands.py プロジェクト: helenst/qutebrowser
    def printpage(self, preview=False, count: {'special': 'count'}=None):
        """Print the current/[count]th tab.

        Args:
            preview: Show preview instead of printing.
            count: The tab index to print, or None.
        """
        if not qtutils.check_print_compat():
            # WORKAROUND (remove this when we bump the requirements to 5.3.0)
            raise cmdexc.CommandError(
                "Printing on Qt < 5.3.0 on Windows is broken, please upgrade!")
        tab = self._cntwidget(count)
        if tab is not None:
            if preview:
                diag = QPrintPreviewDialog()
                diag.setAttribute(Qt.WA_DeleteOnClose)
                diag.setWindowFlags(diag.windowFlags() |
                                    Qt.WindowMaximizeButtonHint |
                                    Qt.WindowMinimizeButtonHint)
                diag.paintRequested.connect(tab.print)
                diag.exec_()
            else:
                diag = QPrintDialog()
                diag.setAttribute(Qt.WA_DeleteOnClose)
                diag.open(lambda: tab.print(diag.printer()))
コード例 #37
0
 def on_printAction2_triggered(self):
     dialog = QPrintPreviewDialog()
     dialog.paintRequested.connect(self.handlePaintRequest)
     dialog.exec_()