Example #1
0
    def on_print(self, action=None):
        self.print_op = Gtk.PrintOperation()
        self.print_op.connect("begin_print", self.begin_print)
        self.print_op.connect("draw_page", self.draw_page)

        page_setup = Gtk.PageSetup()
        if self.print_settings is None:
            self.print_settings = Gtk.PrintSettings()
        page_setup = Gtk.print_run_page_setup_dialog(None, page_setup,
                                                     self.print_settings)
        paper_size_used = page_setup.get_paper_size()
        self.format = paper_size_used.get_name()
        self.print_settings.set_paper_size(paper_size_used)
        self.print_settings.set_orientation(page_setup.get_orientation())
        self.print_op.set_print_settings(self.print_settings)
        if page_setup.get_orientation() == Gtk.PageOrientation.PORTRAIT:
            self.height_used = int(paper_size_used.get_height(Gtk.Unit.POINTS))
            self.width_used = int(paper_size_used.get_width(Gtk.Unit.POINTS))
        else:
            self.height_used = int(paper_size_used.get_width(Gtk.Unit.POINTS))
            self.width_used = int(paper_size_used.get_height(Gtk.Unit.POINTS))

        if win():
            res = self.print_op.run(Gtk.PrintOperationAction.PRINT_DIALOG,
                                    self.uistate.window)
        else:
            res = self.print_op.run(Gtk.PrintOperationAction.PREVIEW,
                                    self.uistate.window)
Example #2
0
    def on_print(self, action=None):
        self.print_op = Gtk.PrintOperation()
        self.print_op.connect("begin_print", self.begin_print)
        self.print_op.connect("draw_page", self.draw_page)

        page_setup = Gtk.PageSetup()
        if self.print_settings is None:
            self.print_settings = Gtk.PrintSettings()
        page_setup = Gtk.print_run_page_setup_dialog(None, page_setup, self.print_settings)
        paper_size_used = page_setup.get_paper_size()
        self.format = paper_size_used.get_name()
        self.print_settings.set_paper_size(paper_size_used)
        self.print_settings.set_orientation(page_setup.get_orientation())
        self.print_op.set_print_settings(self.print_settings)
        if page_setup.get_orientation() == Gtk.PageOrientation.PORTRAIT:
            self.height_used = int(paper_size_used.get_height(Gtk.Unit.POINTS))
            self.width_used = int(paper_size_used.get_width(Gtk.Unit.POINTS))
        else:
            self.height_used = int(paper_size_used.get_width(Gtk.Unit.POINTS))
            self.width_used = int(paper_size_used.get_height(Gtk.Unit.POINTS))

        if win():
            res = self.print_op.run(Gtk.PrintOperationAction.PRINT_DIALOG, self.uistate.window)
        else:
            res = self.print_op.run(Gtk.PrintOperationAction.PREVIEW, self.uistate.window)
Example #3
0
    def run(self):
        """Create the physical output from the meta document.

        """
        global PRINT_SETTINGS

        # set up a print operation
        operation = Gtk.PrintOperation()
        operation.connect("draw_page", self.on_draw_page)
        operation.connect("preview", self.on_preview)
        operation.set_n_pages(1)
        page_setup = Gtk.PageSetup()
        if PRINT_SETTINGS is None:
            PRINT_SETTINGS = Gtk.PrintSettings()
        page_setup = Gtk.print_run_page_setup_dialog(None, page_setup,
                                                     PRINT_SETTINGS)
        paper_size_used = page_setup.get_paper_size()
        if self.widthpx > self.heightpx:
            szw = self.widthpx
            szh = self.heightpx
        else:
            szh = self.widthpx
            szw = self.heightpx
        height_used = paper_size_used.get_height(Gtk.Unit.POINTS)
        width_used = paper_size_used.get_width(Gtk.Unit.POINTS)
        coefx = szw / height_used  # width and height depends on the selected page (A4, A3, ...)
        coefy = szh / width_used
        if coefx < coefy:
            self.scale = 100.0 / coefy
        else:
            self.scale = 100.0 / coefx
        PRINT_SETTINGS.set_scale(self.scale)
        if self.widthpx > self.heightpx:
            page_setup.set_orientation(Gtk.PageOrientation.LANDSCAPE)
        else:
            page_setup.set_orientation(Gtk.PageOrientation.PORTRAIT)
        operation.set_default_page_setup(page_setup)

        if PRINT_SETTINGS is not None:
            operation.set_print_settings(PRINT_SETTINGS)

        # run print dialog
        while True:
            self.preview = None
            res = operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, None)
            if self.preview is None:  # cancel or print
                break
            # set up printing again; can't reuse PrintOperation?
            operation = Gtk.PrintOperation()
            operation.set_default_page_setup(page_setup)
            operation.connect("draw_page", self.on_draw_page)
            operation.connect("preview", self.on_preview)
            # set print settings if it was stored previously
            if PRINT_SETTINGS is not None:
                operation.set_print_settings(PRINT_SETTINGS)

        # store print settings if printing was successful
        if res == Gtk.PrintOperationResult.APPLY:
            PRINT_SETTINGS = operation.get_print_settings()
Example #4
0
    def run(self):
        """Create the physical output from the meta document.

        """
        global PRINT_SETTINGS

        # set up a print operation
        operation = Gtk.PrintOperation()
        operation.connect("draw_page", self.on_draw_page)
        operation.connect("preview", self.on_preview)
        operation.set_n_pages(1)
        page_setup = Gtk.PageSetup()
        if PRINT_SETTINGS is None:
            PRINT_SETTINGS = Gtk.PrintSettings()
        page_setup = Gtk.print_run_page_setup_dialog(None, page_setup, PRINT_SETTINGS)
        paper_size_used = page_setup.get_paper_size()
        if self.widthpx > self.heightpx:
            szw = self.widthpx
            szh = self.heightpx
        else:
            szh = self.widthpx
            szw = self.heightpx
        height_used = paper_size_used.get_height(Gtk.Unit.POINTS)
        width_used = paper_size_used.get_width(Gtk.Unit.POINTS)
        coefx = szw / height_used # width and height depends on the selected page (A4, A3, ...)
        coefy = szh / width_used
        if coefx < coefy:
                self.scale = 100.0 / coefy
        else:
                self.scale = 100.0 / coefx
        PRINT_SETTINGS.set_scale(self.scale)
        if self.widthpx > self.heightpx:
            page_setup.set_orientation(Gtk.PageOrientation.LANDSCAPE)
        else:
            page_setup.set_orientation(Gtk.PageOrientation.PORTRAIT)
        operation.set_default_page_setup(page_setup)

        if PRINT_SETTINGS is not None:
            operation.set_print_settings(PRINT_SETTINGS)

        # run print dialog
        while True:
            self.preview = None
            res = operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, None)
            if self.preview is None: # cancel or print
                break
            # set up printing again; can't reuse PrintOperation?
            operation = Gtk.PrintOperation()
            operation.set_default_page_setup(page_setup)
            operation.connect("draw_page", self.on_draw_page)
            operation.connect("preview", self.on_preview)
            # set print settings if it was stored previously
            if PRINT_SETTINGS is not None:
                operation.set_print_settings(PRINT_SETTINGS)

        # store print settings if printing was successful
        if res == Gtk.PrintOperationResult.APPLY:
            PRINT_SETTINGS = operation.get_print_settings()
Example #5
0
def present_page_setup_dialog(page_setup):
    old_setup = page_setup._gtk_page_setup
    ps = Gtk.PrintSettings()
    new_setup = Gtk.print_run_page_setup_dialog(None, old_setup, ps)
    if get_gtk_state(old_setup) <> get_gtk_state(new_setup):
        page_setup._gtk_page_setup = new_setup
        return True
    else:
        return False
Example #6
0
def present_page_setup_dialog(page_setup):
    old_setup = page_setup._gtk_page_setup
    ps = Gtk.PrintSettings()
    new_setup = Gtk.print_run_page_setup_dialog(None, old_setup, ps)
    if get_gtk_state(old_setup) <> get_gtk_state(new_setup):
        page_setup._gtk_page_setup = new_setup
        return True
    else:
        return False
Example #7
0
    def page_setup(self, widget, data):
        self.setup.settings = self.settings
        self.setup = Gtk.print_run_page_setup_dialog(self, self.setup,
                                                     self.settings)

        size = self.setup.get_paper_size()
        orientation = self.setup.get_orientation()

        # TODO canvas->margins
        for page in self.editor.canvas.pages:
            page.top = self.setup.get_top_margin(Gtk.UNIT_POINTS)
            page.left = self.setup.get_left_margin(Gtk.UNIT_POINTS)
            page.bottom = self.setup.get_bottom_margin(Gtk.UNIT_POINTS)
            page.right = self.setup.get_right_margin(Gtk.UNIT_POINTS)

        width = size.get_width(Gtk.UNIT_POINTS)
        height = size.get_height(Gtk.UNIT_POINTS)

        # no int
        if orientation in (Gtk.PAGE_ORIENTATION_PORTRAIT,
                           Gtk.PAGE_ORIENTATION_REVERSE_PORTRAIT):
            orientation = _("Vertical")
            width = int(width)
            height = int(height)
        else:
            orientation = _("Landscape")
            saved_height = height
            height = int(width)
            width = int(saved_height)

        # TODO: canvas->page_size
        for page in self.editor.canvas.pages:
            page.width = width
            page.height = height

        name = size.get_display_name()
        text = "%s %s (%d dots x %d dots)" % (name, orientation, width, height)
        self.status.push(self.id, text)
        self.editor.canvas.queue_draw()
Example #8
0
    def page_setup(self, widget, data):
        self.setup.settings = self.settings
        self.setup = Gtk.print_run_page_setup_dialog(self, self.setup, self.settings)

        size = self.setup.get_paper_size()
        orientation = self.setup.get_orientation()

        # TODO canvas->margins
        for page in self.editor.canvas.pages:
            page.top = self.setup.get_top_margin(Gtk.UNIT_POINTS)
            page.left = self.setup.get_left_margin(Gtk.UNIT_POINTS)
            page.bottom = self.setup.get_bottom_margin(Gtk.UNIT_POINTS)
            page.right = self.setup.get_right_margin(Gtk.UNIT_POINTS)

        width = size.get_width(Gtk.UNIT_POINTS)
        height = size.get_height(Gtk.UNIT_POINTS)

        # no int
        if orientation in (Gtk.PAGE_ORIENTATION_PORTRAIT, Gtk.PAGE_ORIENTATION_REVERSE_PORTRAIT):
            orientation = _("Vertical")
            width = int(width)
            height = int(height)
        else:
            orientation = _("Landscape")
            saved_height = height
            height = int(width)
            width = int(saved_height)

        # TODO: canvas->page_size
        for page in self.editor.canvas.pages:
            page.width = width
            page.height = height

        name = size.get_display_name()
        text = "%s %s (%d dots x %d dots)" % (name, orientation, width, height)
        self.status.push(self.id, text)
        self.editor.canvas.queue_draw()
Example #9
0
 def reportPaperSetup(self, sender):
     settings = Gtk.PrintSettings()
     self.page_setup = Gtk.print_run_page_setup_dialog(
         None, self.page_setup, settings)
     self.builder.get_object("papersize").set_text(
         self.page_setup.get_paper_size().get_display_name())
Example #10
0
 def file_page_setup(self, null):
     self.page_setup = gtk.print_run_page_setup_dialog(get_app(), None, self.current_view().print_settings)