示例#1
0
    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        wal.LabeledPanel.__init__(self, parent, _('Paper'))

        grid = wal.GridPanel(self, 2, 2, 5, 5)
        grid.add_growable_col(1)

        grid.pack(wal.Label(grid, _('Page size:')))

        self.size_combo = wal.Combolist(grid, onchange=self.on_change)
        grid.pack(self.size_combo, fill=True)

        grid.pack(wal.Label(grid, _('Width:')))

        hpanel = wal.HPanel(grid)

        self.wspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.wspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        hpanel.pack((5, 5))

        hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

        self.hspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.hspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        grid.pack(hpanel)

        self.pack(grid, fill=True, expand=True, padding_all=10)

        self.set_data()
示例#2
0
	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		units = app.current_doc.model.doc_units
		text = uc2const.unit_short_names[units]

		wal.LabeledPanel.__init__(self, parent, _('Margins') + ' (%s)' % text)

		self.pack((1, 1), expand=True, padding=2)

		mrgs = self.printer.margins
		self.top_spin = StaticUnitSpin(self.app, self, mrgs[0])
		self.pack(self.top_spin)

		self.pack((5, 5))

		hpanel = wal.HPanel(self)
		self.left_spin = StaticUnitSpin(self.app, self, mrgs[3])
		hpanel.pack(self.left_spin)
		hpanel.pack((5, 5))
		self.right_spin = StaticUnitSpin(self.app, self, mrgs[1])
		hpanel.pack(self.right_spin)

		self.pack(hpanel)

		self.pack((5, 5))

		self.bottom_spin = StaticUnitSpin(self.app, self, mrgs[2])
		self.pack(self.bottom_spin)

		self.pack((1, 1), expand=True, padding=2)
示例#3
0
	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		wal.LabeledPanel.__init__(self, parent, _('Paper'))

		grid = wal.GridPanel(self, 2, 2, 5, 5)
		grid.add_growable_col(1)

		grid.pack(wal.Label(grid, _('Page size:')))

		self.size_combo = wal.Combolist(grid, onchange=self.on_change)
		grid.pack(self.size_combo, fill=True)

		grid.pack(wal.Label(grid, _('Width:')))

		hpanel = wal.HPanel(grid)

		self.wspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.wspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		hpanel.pack((5, 5))

		hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

		self.hspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.hspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		grid.pack(hpanel)

		self.pack(grid, fill=True, expand=True, padding_all=10)

		self.set_data()
示例#4
0
    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        units = app.current_doc.model.doc_units
        text = uc2const.unit_short_names[units]

        wal.LabeledPanel.__init__(self, parent, _('Margins') + ' (%s)' % text)

        self.pack((1, 1), expand=True, padding=2)

        mrgs = self.printer.margins
        self.top_spin = StaticUnitSpin(self.app, self, mrgs[0])
        self.pack(self.top_spin)

        self.pack((5, 5))

        hpanel = wal.HPanel(self)
        self.left_spin = StaticUnitSpin(self.app, self, mrgs[3])
        hpanel.pack(self.left_spin)
        hpanel.pack((5, 5))
        self.right_spin = StaticUnitSpin(self.app, self, mrgs[1])
        hpanel.pack(self.right_spin)

        self.pack(hpanel)

        self.pack((5, 5))

        self.bottom_spin = StaticUnitSpin(self.app, self, mrgs[2])
        self.pack(self.bottom_spin)

        self.pack((1, 1), expand=True, padding=2)
    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        wal.LabeledPanel.__init__(self, parent, _('Document page'))

        grid = wal.GridPanel(self, 3, 2, 3, 3)
        grid.add_growable_col(1)

        grid.pack(wal.Label(grid, _('Page size:')))

        self.size_combo = wal.Combolist(grid, onchange=self.on_change)
        grid.pack(self.size_combo, fill=True)

        grid.pack(wal.Label(grid, _('Width:')))

        hpanel = wal.HPanel(grid)

        self.wspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.wspin)

        hpanel.pack((5, 5))

        hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

        self.hspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.hspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        grid.pack(hpanel)

        grid.pack(wal.Label(grid, _('Orientation:')))

        hpanel = wal.HPanel(grid)

        self.port_opt = wal.Radiobutton(hpanel,
                                        uc2const.ORIENTS_NAMES[0],
                                        group=True)
        self.land_opt = wal.Radiobutton(hpanel, uc2const.ORIENTS_NAMES[1])

        hpanel.pack(self.port_opt)
        hpanel.pack((15, 5))
        hpanel.pack(self.land_opt)

        grid.pack(hpanel)

        self.pack(grid, fill=True, expand=True, padding_all=7)

        self.set_data()
示例#6
0
	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		wal.LabeledPanel.__init__(self, parent, _('Document page'))

		grid = wal.GridPanel(self, 3, 2, 3, 3)
		grid.add_growable_col(1)

		grid.pack(wal.Label(grid, _('Page size:')))

		self.size_combo = wal.Combolist(grid, onchange=self.on_change)
		grid.pack(self.size_combo, fill=True)

		grid.pack(wal.Label(grid, _('Width:')))

		hpanel = wal.HPanel(grid)

		self.wspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.wspin)

		hpanel.pack((5, 5))

		hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

		self.hspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.hspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		grid.pack(hpanel)

		grid.pack(wal.Label(grid, _('Orientation:')))

		hpanel = wal.HPanel(grid)

		self.port_opt = wal.Radiobutton(hpanel, _('Portrait'), group=True)
		self.land_opt = wal.Radiobutton(hpanel, _('Landscape'))

		hpanel.pack(self.port_opt)
		hpanel.pack((15, 5))
		hpanel.pack(self.land_opt)

		grid.pack(hpanel)

		self.pack(grid, fill=True, expand=True, padding_all=7)

		self.set_data()
示例#7
0
class MarginsPanel(wal.LabeledPanel):

    app = None
    printer = None

    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        units = app.current_doc.model.doc_units
        text = uc2const.unit_short_names[units]

        wal.LabeledPanel.__init__(self, parent, _('Margins') + ' (%s)' % text)

        self.pack((1, 1), expand=True, padding=2)

        mrgs = self.printer.margins
        self.top_spin = StaticUnitSpin(self.app, self, mrgs[0])
        self.pack(self.top_spin)

        self.pack((5, 5))

        hpanel = wal.HPanel(self)
        self.left_spin = StaticUnitSpin(self.app, self, mrgs[3])
        hpanel.pack(self.left_spin)
        hpanel.pack((5, 5))
        self.right_spin = StaticUnitSpin(self.app, self, mrgs[1])
        hpanel.pack(self.right_spin)

        self.pack(hpanel)

        self.pack((5, 5))

        self.bottom_spin = StaticUnitSpin(self.app, self, mrgs[2])
        self.pack(self.bottom_spin)

        self.pack((1, 1), expand=True, padding=2)

    def save(self):
        val0 = self.top_spin.get_point_value()
        val1 = self.right_spin.get_point_value()
        val2 = self.bottom_spin.get_point_value()
        val3 = self.left_spin.get_point_value()
        self.printer.margins = (val0, val1, val2, val3)
示例#8
0
class MarginsPanel(wal.LabeledPanel):

	app = None
	printer = None

	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		units = app.current_doc.model.doc_units
		text = uc2const.unit_short_names[units]

		wal.LabeledPanel.__init__(self, parent, _('Margins') + ' (%s)' % text)

		self.pack((1, 1), expand=True, padding=2)

		mrgs = self.printer.margins
		self.top_spin = StaticUnitSpin(self.app, self, mrgs[0])
		self.pack(self.top_spin)

		self.pack((5, 5))

		hpanel = wal.HPanel(self)
		self.left_spin = StaticUnitSpin(self.app, self, mrgs[3])
		hpanel.pack(self.left_spin)
		hpanel.pack((5, 5))
		self.right_spin = StaticUnitSpin(self.app, self, mrgs[1])
		hpanel.pack(self.right_spin)

		self.pack(hpanel)

		self.pack((5, 5))

		self.bottom_spin = StaticUnitSpin(self.app, self, mrgs[2])
		self.pack(self.bottom_spin)

		self.pack((1, 1), expand=True, padding=2)

	def save(self):
		val0 = self.top_spin.get_point_value()
		val1 = self.right_spin.get_point_value()
		val2 = self.bottom_spin.get_point_value()
		val3 = self.left_spin.get_point_value()
		self.printer.margins = (val0, val1, val2, val3)
示例#9
0
class PaperPanel(wal.LabeledPanel):

    app = None
    printer = None
    items = []

    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        wal.LabeledPanel.__init__(self, parent, _('Paper'))

        grid = wal.GridPanel(self, 2, 2, 5, 5)
        grid.add_growable_col(1)

        grid.pack(wal.Label(grid, _('Page size:')))

        self.size_combo = wal.Combolist(grid, onchange=self.on_change)
        grid.pack(self.size_combo, fill=True)

        grid.pack(wal.Label(grid, _('Width:')))

        hpanel = wal.HPanel(grid)

        self.wspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.wspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        hpanel.pack((5, 5))

        hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

        self.hspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.hspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        grid.pack(hpanel)

        self.pack(grid, fill=True, expand=True, padding_all=10)

        self.set_data()

    def set_data(self):
        self.items = self.printer.get_format_items()
        self.size_combo.set_items(self.items)
        index = 0
        if not self.printer.def_media[:6] == 'Custom':
            index = self.printer.pf_list.index(self.printer.def_media)
        else:
            index = len(self.items) - 1
        self.size_combo.set_active(index)
        if self.printer.is_custom_supported():
            minw, minh = self.printer.customs[0]
            maxw, maxh = self.printer.customs[1]
            self.wspin.set_point_range((minw, maxw))
            self.hspin.set_point_range((minh, maxh))
        self.on_change()

    def on_change(self):
        index = self.size_combo.get_active()
        status = False
        if self.printer.is_custom_supported() and index == len(self.items) - 1:
            if not self.hspin.get_point_value() and \
            self.printer.def_media[:6] == 'Custom':
                w, h = self.printer.def_media[7:].split('x')
                w = float(w)
                h = float(h)
                self.wspin.set_point_value(w)
                self.hspin.set_point_value(h)
            status = True
        else:
            w, h = self.printer.pf_dict[self.printer.pf_list[index]][1]
            self.wspin.set_point_value(w)
            self.hspin.set_point_value(h)
        self.wspin.set_enable(status)
        self.hspin.set_enable(status)

    def save(self):
        index = self.size_combo.get_active()
        prn = self.printer
        if prn.is_custom_supported() and index == len(self.items) - 1:
            w = self.wspin.get_point_value()
            h = self.hspin.get_point_value()
            prn.def_media = 'Custom.%gx%g' % (w, h)
            prn.page_format = ('Custom', (w, h))
        else:
            prn.def_media = prn.pf_list[index]
            prn.page_format = prn.pf_dict[prn.def_media]
示例#10
0
	def build(self):
		self.printsys = self.get_printsys()
		self.prn_list = self.printsys.get_printer_names()
		if self.prn_list:
			self.active_printer = self.printsys.get_default_printer()
			hpanel = wal.HPanel(self)
			hpanel.pack(wal.Label(hpanel, _('Printer:')))
			hpanel.pack((5, 5))
			self.prn_combo = wal.Combolist(hpanel, items=self.prn_list,
										onchange=self.set_data)
			hpanel.pack(self.prn_combo, fill=True, expand=True)
			index = self.prn_list.index(self.active_printer.get_name())
			self.prn_combo.set_active(index)
			self.pack(hpanel, fill=True, padding_all=5)

			self.pack((10, 10))

			#---Panels
			self.insp = self.app.insp
			units = uc2const.UNIT_MM
			if self.insp.is_doc():
				units = self.app.current_doc.model.doc_units
			units_text = uc2const.unit_short_names[units]

			#---Shift panel
			shifts = self.active_printer.shifts
			hpanel = wal.HPanel(self)
			txt = _('Printing shift') + ' (%s)' % units_text
			spanel = wal.LabeledPanel(hpanel, text=txt)
			spanel.pack((1, 1), expand=True)

			grid = wal.GridPanel(spanel, 2, 2, 5, 5)

			grid.pack(wal.Label(grid, _('Horizontal shift:')))
			self.hshift = StaticUnitSpin(self.app, grid, shifts[0],
							can_be_negative=True,
							onchange=self.save_data, onenter=self.save_data)
			grid.pack(self.hshift)

			grid.pack(wal.Label(grid, _('Vertical shift:')))
			self.vshift = StaticUnitSpin(self.app, grid, shifts[1],
							can_be_negative=True,
							onchange=self.save_data, onenter=self.save_data)
			grid.pack(self.vshift)

			spanel.pack(grid, padding_all=5)
			spanel.pack((1, 1), expand=True)

			hpanel.pack(spanel, fill=True, expand=True)

			hpanel.pack((5, 5))

			#---Margin panel
			txt = _('Printing margins') + ' (%s)' % units_text
			mpanel = wal.LabeledPanel(hpanel, text=txt)
			mpanel.pack((5, 5))

			mrgs = self.active_printer.margins
			self.top_spin = StaticUnitSpin(self.app, mpanel, mrgs[0],
							onchange=self.save_data, onenter=self.save_data)
			mpanel.pack(self.top_spin)

			mpanel.pack((5, 5))

			hp = wal.HPanel(self)
			self.left_spin = StaticUnitSpin(self.app, hp, mrgs[3],
							onchange=self.save_data, onenter=self.save_data)
			hp.pack(self.left_spin)
			hp.pack((5, 5))
			self.right_spin = StaticUnitSpin(self.app, hp, mrgs[1],
							onchange=self.save_data, onenter=self.save_data)
			hp.pack(self.right_spin)

			mpanel.pack(hp)

			mpanel.pack((5, 5))

			self.bottom_spin = StaticUnitSpin(self.app, mpanel, mrgs[2],
							onchange=self.save_data, onenter=self.save_data)
			mpanel.pack(self.bottom_spin)

			mpanel.pack((10, 10))
			#---

			hpanel.pack(mpanel, fill=True, expand=True)

			self.pack(hpanel, fill=True)

			self.pack((10, 10))

			#---Calibration page
			text = _("To measure real print area and vertical/horirizontal "
			"printing shift just print calibration page on the A4/Letter sheet.")

			label = wal.Label(self, text)
			label.wrap(470)
			self.pack(label, fill=True, padding_all=5, align_center=False)

			self.a4_calibrate_btn = wal.Button(self,
										_('Print A4 calibration page'),
										onclick=self.print_calibration_a4)
			self.pack(self.a4_calibrate_btn)

			self.pack((5, 5))

			self.letter_calibrate_btn = wal.Button(self,
										_('Print Letter calibration page'),
										onclick=self.print_calibration_letter)
			self.pack(self.letter_calibrate_btn)

			self.pack((5, 5))

		else:
			self.pack((5, 5), expand=True)
			self.pack(get_bmp(self, icons.PD_NO_PRINTERS), padding=10)
			self.pack(wal.Label(self, _('Cannot found installed printers!')))
			self.pack((10, 10))
			self.pack((5, 5), expand=True)
		self.built = True
示例#11
0
class PrinterPrefs(PrefPanel):

	pid = 'Printers'
	name = _('Printers')
	title = _('Printer preferences')
	icon_id = icons.PD_PREFS_PRINTERS

	printsys = None
	active_printer = None
	prn_list = []

	def __init__(self, app, dlg, fmt_config=None):
		PrefPanel.__init__(self, app, dlg)

	def get_printsys(self):
		if wal.is_msw():
			from sk1.printing.msw_print import MSW_PS
			return MSW_PS(self.app, physical_only=True)
		else:
			from sk1.printing.cups_print import CUPS_PS
			return CUPS_PS(physical_only=True)

	def build(self):
		self.printsys = self.get_printsys()
		self.prn_list = self.printsys.get_printer_names()
		if self.prn_list:
			self.active_printer = self.printsys.get_default_printer()
			hpanel = wal.HPanel(self)
			hpanel.pack(wal.Label(hpanel, _('Printer:')))
			hpanel.pack((5, 5))
			self.prn_combo = wal.Combolist(hpanel, items=self.prn_list,
										onchange=self.set_data)
			hpanel.pack(self.prn_combo, fill=True, expand=True)
			index = self.prn_list.index(self.active_printer.get_name())
			self.prn_combo.set_active(index)
			self.pack(hpanel, fill=True, padding_all=5)

			self.pack((10, 10))

			#---Panels
			self.insp = self.app.insp
			units = uc2const.UNIT_MM
			if self.insp.is_doc():
				units = self.app.current_doc.model.doc_units
			units_text = uc2const.unit_short_names[units]

			#---Shift panel
			shifts = self.active_printer.shifts
			hpanel = wal.HPanel(self)
			txt = _('Printing shift') + ' (%s)' % units_text
			spanel = wal.LabeledPanel(hpanel, text=txt)
			spanel.pack((1, 1), expand=True)

			grid = wal.GridPanel(spanel, 2, 2, 5, 5)

			grid.pack(wal.Label(grid, _('Horizontal shift:')))
			self.hshift = StaticUnitSpin(self.app, grid, shifts[0],
							can_be_negative=True,
							onchange=self.save_data, onenter=self.save_data)
			grid.pack(self.hshift)

			grid.pack(wal.Label(grid, _('Vertical shift:')))
			self.vshift = StaticUnitSpin(self.app, grid, shifts[1],
							can_be_negative=True,
							onchange=self.save_data, onenter=self.save_data)
			grid.pack(self.vshift)

			spanel.pack(grid, padding_all=5)
			spanel.pack((1, 1), expand=True)

			hpanel.pack(spanel, fill=True, expand=True)

			hpanel.pack((5, 5))

			#---Margin panel
			txt = _('Printing margins') + ' (%s)' % units_text
			mpanel = wal.LabeledPanel(hpanel, text=txt)
			mpanel.pack((5, 5))

			mrgs = self.active_printer.margins
			self.top_spin = StaticUnitSpin(self.app, mpanel, mrgs[0],
							onchange=self.save_data, onenter=self.save_data)
			mpanel.pack(self.top_spin)

			mpanel.pack((5, 5))

			hp = wal.HPanel(self)
			self.left_spin = StaticUnitSpin(self.app, hp, mrgs[3],
							onchange=self.save_data, onenter=self.save_data)
			hp.pack(self.left_spin)
			hp.pack((5, 5))
			self.right_spin = StaticUnitSpin(self.app, hp, mrgs[1],
							onchange=self.save_data, onenter=self.save_data)
			hp.pack(self.right_spin)

			mpanel.pack(hp)

			mpanel.pack((5, 5))

			self.bottom_spin = StaticUnitSpin(self.app, mpanel, mrgs[2],
							onchange=self.save_data, onenter=self.save_data)
			mpanel.pack(self.bottom_spin)

			mpanel.pack((10, 10))
			#---

			hpanel.pack(mpanel, fill=True, expand=True)

			self.pack(hpanel, fill=True)

			self.pack((10, 10))

			#---Calibration page
			text = _("To measure real print area and vertical/horirizontal "
			"printing shift just print calibration page on the A4/Letter sheet.")

			label = wal.Label(self, text)
			label.wrap(470)
			self.pack(label, fill=True, padding_all=5, align_center=False)

			self.a4_calibrate_btn = wal.Button(self,
										_('Print A4 calibration page'),
										onclick=self.print_calibration_a4)
			self.pack(self.a4_calibrate_btn)

			self.pack((5, 5))

			self.letter_calibrate_btn = wal.Button(self,
										_('Print Letter calibration page'),
										onclick=self.print_calibration_letter)
			self.pack(self.letter_calibrate_btn)

			self.pack((5, 5))

		else:
			self.pack((5, 5), expand=True)
			self.pack(get_bmp(self, icons.PD_NO_PRINTERS), padding=10)
			self.pack(wal.Label(self, _('Cannot found installed printers!')))
			self.pack((10, 10))
			self.pack((5, 5), expand=True)
		self.built = True

	def set_data(self):
		name = self.prn_combo.get_active_value()
		self.active_printer = self.printsys.get_printer_by_name(name)
		shifts = self.active_printer.shifts
		mrgs = self.active_printer.margins

		self.hshift.set_point_value(shifts[0])
		self.vshift.set_point_value(shifts[1])
		self.top_spin.set_point_value(mrgs[0])
		self.right_spin.set_point_value(mrgs[1])
		self.bottom_spin.set_point_value(mrgs[2])
		self.left_spin.set_point_value(mrgs[3])

	def save_data(self):
		self.active_printer.shifts = (self.hshift.get_point_value(),
									self.vshift.get_point_value())

		self.active_printer.margins = (self.top_spin.get_point_value(),
									self.right_spin.get_point_value(),
									self.bottom_spin.get_point_value(),
									self.left_spin.get_point_value())

	def apply_changes(self):
		if not self.prn_list: return
		config.printer_config = {}
		for name in self.prn_list:
			printer = self.printsys.get_printer_by_name(name)
			if printer: printer.save_config()

	def restore_defaults(self):
		if not self.prn_list: return
		self.active_printer.shifts = STD_SHIFTS
		self.active_printer.margins = STD_MARGINS
		self.set_data()

	def print_calibration_a4(self):
		self.active_printer.print_test_page_a4(self.app, self.dlg)

	def print_calibration_letter(self):
		self.active_printer.print_test_page_letter(self.app, self.dlg)
    def build(self):
        self.printsys = self.get_printsys()
        self.prn_list = self.printsys.get_printer_names()
        if self.prn_list:
            self.active_printer = self.printsys.get_default_printer()
            hpanel = wal.HPanel(self)
            hpanel.pack(wal.Label(hpanel, _('Printer:')))
            hpanel.pack((5, 5))
            self.prn_combo = wal.Combolist(hpanel,
                                           items=self.prn_list,
                                           onchange=self.set_data)
            hpanel.pack(self.prn_combo, fill=True, expand=True)
            index = self.prn_list.index(self.active_printer.get_name())
            self.prn_combo.set_active(index)
            self.pack(hpanel, fill=True, padding_all=5)

            self.pack((10, 10))

            # ---Panels
            self.insp = self.app.insp
            units = uc2const.UNIT_MM
            if self.insp.is_doc():
                units = self.app.current_doc.model.doc_units
            units_text = uc2const.unit_short_names[units]

            # ---Shift panel
            shifts = self.active_printer.shifts
            hpanel = wal.HPanel(self)
            txt = _('Printing shift') + ' (%s)' % units_text
            spanel = wal.LabeledPanel(hpanel, text=txt)
            spanel.pack((1, 1), expand=True)

            grid = wal.GridPanel(spanel, 2, 2, 5, 5)

            grid.pack(wal.Label(grid, _('Horizontal shift:')))
            self.hshift = StaticUnitSpin(self.app,
                                         grid,
                                         shifts[0],
                                         can_be_negative=True,
                                         onchange=self.save_data,
                                         onenter=self.save_data)
            grid.pack(self.hshift)

            grid.pack(wal.Label(grid, _('Vertical shift:')))
            self.vshift = StaticUnitSpin(self.app,
                                         grid,
                                         shifts[1],
                                         can_be_negative=True,
                                         onchange=self.save_data,
                                         onenter=self.save_data)
            grid.pack(self.vshift)

            spanel.pack(grid, padding_all=5)
            spanel.pack((1, 1), expand=True)

            hpanel.pack(spanel, fill=True, expand=True)

            hpanel.pack((5, 5))

            # ---Margin panel
            txt = _('Printing margins') + ' (%s)' % units_text
            mpanel = wal.LabeledPanel(hpanel, text=txt)
            mpanel.pack((5, 5))

            mrgs = self.active_printer.margins
            self.top_spin = StaticUnitSpin(self.app,
                                           mpanel,
                                           mrgs[0],
                                           onchange=self.save_data,
                                           onenter=self.save_data)
            mpanel.pack(self.top_spin)

            mpanel.pack((5, 5))

            hp = wal.HPanel(self)
            self.left_spin = StaticUnitSpin(self.app,
                                            hp,
                                            mrgs[3],
                                            onchange=self.save_data,
                                            onenter=self.save_data)
            hp.pack(self.left_spin)
            hp.pack((5, 5))
            self.right_spin = StaticUnitSpin(self.app,
                                             hp,
                                             mrgs[1],
                                             onchange=self.save_data,
                                             onenter=self.save_data)
            hp.pack(self.right_spin)

            mpanel.pack(hp)

            mpanel.pack((5, 5))

            self.bottom_spin = StaticUnitSpin(self.app,
                                              mpanel,
                                              mrgs[2],
                                              onchange=self.save_data,
                                              onenter=self.save_data)
            mpanel.pack(self.bottom_spin)

            mpanel.pack((10, 10))
            # ---

            hpanel.pack(mpanel, fill=True, expand=True)

            self.pack(hpanel, fill=True)

            self.pack((10, 10))

            # ---Calibration page
            text = _("To measure actual print area and vertical/horizontal "
                     "printing shift, just print the calibration page on "
                     "A4/Letter paper.")

            label = wal.Label(self, text)
            label.wrap(470)
            self.pack(label, fill=True, padding_all=5, align_center=False)

            self.a4_calibrate_btn = wal.Button(
                self,
                _('Print A4 calibration page'),
                onclick=self.print_calibration_a4)
            self.pack(self.a4_calibrate_btn)

            self.pack((5, 5))

            self.letter_calibrate_btn = wal.Button(
                self,
                _('Print Letter calibration page'),
                onclick=self.print_calibration_letter)
            self.pack(self.letter_calibrate_btn)

            self.pack((5, 5))

        else:
            self.pack((5, 5), expand=True)
            self.pack(get_bmp(self, icons.PD_NO_PRINTERS), padding=10)
            self.pack(wal.Label(self, _('No printers found')))
            self.pack((10, 10))
            self.pack((5, 5), expand=True)
        self.built = True
class PrinterPrefs(PrefPanel):
    pid = 'Printers'
    name = _('Printers')
    title = _('Printer preferences')
    icon_id = icons.PD_PREFS_PRINTERS

    printsys = None
    active_printer = None
    prn_list = []

    prn_combo = None
    insp = None
    hshift = None
    vshift = None
    top_spin = None
    left_spin = None
    right_spin = None
    bottom_spin = None
    a4_calibrate_btn = None
    letter_calibrate_btn = None

    def __init__(self, app, dlg, *args):
        PrefPanel.__init__(self, app, dlg)

    def get_printsys(self):
        if wal.IS_MSW:
            from sk1.printing.msw_print import MSW_PS
            return MSW_PS(self.app, physical_only=True)
        else:
            from sk1.printing.cups_print import CUPS_PS
            return CUPS_PS(physical_only=True)

    def build(self):
        self.printsys = self.get_printsys()
        self.prn_list = self.printsys.get_printer_names()
        if self.prn_list:
            self.active_printer = self.printsys.get_default_printer()
            hpanel = wal.HPanel(self)
            hpanel.pack(wal.Label(hpanel, _('Printer:')))
            hpanel.pack((5, 5))
            self.prn_combo = wal.Combolist(hpanel,
                                           items=self.prn_list,
                                           onchange=self.set_data)
            hpanel.pack(self.prn_combo, fill=True, expand=True)
            index = self.prn_list.index(self.active_printer.get_name())
            self.prn_combo.set_active(index)
            self.pack(hpanel, fill=True, padding_all=5)

            self.pack((10, 10))

            # ---Panels
            self.insp = self.app.insp
            units = uc2const.UNIT_MM
            if self.insp.is_doc():
                units = self.app.current_doc.model.doc_units
            units_text = uc2const.unit_short_names[units]

            # ---Shift panel
            shifts = self.active_printer.shifts
            hpanel = wal.HPanel(self)
            txt = _('Printing shift') + ' (%s)' % units_text
            spanel = wal.LabeledPanel(hpanel, text=txt)
            spanel.pack((1, 1), expand=True)

            grid = wal.GridPanel(spanel, 2, 2, 5, 5)

            grid.pack(wal.Label(grid, _('Horizontal shift:')))
            self.hshift = StaticUnitSpin(self.app,
                                         grid,
                                         shifts[0],
                                         can_be_negative=True,
                                         onchange=self.save_data,
                                         onenter=self.save_data)
            grid.pack(self.hshift)

            grid.pack(wal.Label(grid, _('Vertical shift:')))
            self.vshift = StaticUnitSpin(self.app,
                                         grid,
                                         shifts[1],
                                         can_be_negative=True,
                                         onchange=self.save_data,
                                         onenter=self.save_data)
            grid.pack(self.vshift)

            spanel.pack(grid, padding_all=5)
            spanel.pack((1, 1), expand=True)

            hpanel.pack(spanel, fill=True, expand=True)

            hpanel.pack((5, 5))

            # ---Margin panel
            txt = _('Printing margins') + ' (%s)' % units_text
            mpanel = wal.LabeledPanel(hpanel, text=txt)
            mpanel.pack((5, 5))

            mrgs = self.active_printer.margins
            self.top_spin = StaticUnitSpin(self.app,
                                           mpanel,
                                           mrgs[0],
                                           onchange=self.save_data,
                                           onenter=self.save_data)
            mpanel.pack(self.top_spin)

            mpanel.pack((5, 5))

            hp = wal.HPanel(self)
            self.left_spin = StaticUnitSpin(self.app,
                                            hp,
                                            mrgs[3],
                                            onchange=self.save_data,
                                            onenter=self.save_data)
            hp.pack(self.left_spin)
            hp.pack((5, 5))
            self.right_spin = StaticUnitSpin(self.app,
                                             hp,
                                             mrgs[1],
                                             onchange=self.save_data,
                                             onenter=self.save_data)
            hp.pack(self.right_spin)

            mpanel.pack(hp)

            mpanel.pack((5, 5))

            self.bottom_spin = StaticUnitSpin(self.app,
                                              mpanel,
                                              mrgs[2],
                                              onchange=self.save_data,
                                              onenter=self.save_data)
            mpanel.pack(self.bottom_spin)

            mpanel.pack((10, 10))
            # ---

            hpanel.pack(mpanel, fill=True, expand=True)

            self.pack(hpanel, fill=True)

            self.pack((10, 10))

            # ---Calibration page
            text = _("To measure actual print area and vertical/horizontal "
                     "printing shift, just print the calibration page on "
                     "A4/Letter paper.")

            label = wal.Label(self, text)
            label.wrap(470)
            self.pack(label, fill=True, padding_all=5, align_center=False)

            self.a4_calibrate_btn = wal.Button(
                self,
                _('Print A4 calibration page'),
                onclick=self.print_calibration_a4)
            self.pack(self.a4_calibrate_btn)

            self.pack((5, 5))

            self.letter_calibrate_btn = wal.Button(
                self,
                _('Print Letter calibration page'),
                onclick=self.print_calibration_letter)
            self.pack(self.letter_calibrate_btn)

            self.pack((5, 5))

        else:
            self.pack((5, 5), expand=True)
            self.pack(get_bmp(self, icons.PD_NO_PRINTERS), padding=10)
            self.pack(wal.Label(self, _('No printers found')))
            self.pack((10, 10))
            self.pack((5, 5), expand=True)
        self.built = True

    def set_data(self):
        name = self.prn_combo.get_active_value()
        self.active_printer = self.printsys.get_printer_by_name(name)
        shifts = self.active_printer.shifts
        mrgs = self.active_printer.margins

        self.hshift.set_point_value(shifts[0])
        self.vshift.set_point_value(shifts[1])
        self.top_spin.set_point_value(mrgs[0])
        self.right_spin.set_point_value(mrgs[1])
        self.bottom_spin.set_point_value(mrgs[2])
        self.left_spin.set_point_value(mrgs[3])

    def save_data(self):
        self.active_printer.shifts = (self.hshift.get_point_value(),
                                      self.vshift.get_point_value())

        self.active_printer.margins = (self.top_spin.get_point_value(),
                                       self.right_spin.get_point_value(),
                                       self.bottom_spin.get_point_value(),
                                       self.left_spin.get_point_value())

    def apply_changes(self):
        if not self.prn_list:
            return
        config.printer_config = {}
        for name in self.prn_list:
            printer = self.printsys.get_printer_by_name(name)
            if printer:
                printer.save_config()

    def restore_defaults(self):
        if not self.prn_list:
            return
        self.active_printer.shifts = STD_SHIFTS
        self.active_printer.margins = STD_MARGINS
        self.set_data()

    def print_calibration_a4(self):
        self.active_printer.print_test_page_a4(self.app, self.dlg)

    def print_calibration_letter(self):
        self.active_printer.print_test_page_letter(self.app, self.dlg)
示例#14
0
class PagePanel(wal.LabeledPanel):
    app = None
    printer = None
    items = []

    def __init__(self, parent, printer, app):
        self.app = app
        self.printer = printer
        wal.LabeledPanel.__init__(self, parent, _('Document page'))

        grid = wal.GridPanel(self, 3, 2, 3, 3)
        grid.add_growable_col(1)

        grid.pack(wal.Label(grid, _('Page size:')))

        self.size_combo = wal.Combolist(grid, onchange=self.on_change)
        grid.pack(self.size_combo, fill=True)

        grid.pack(wal.Label(grid, _('Width:')))

        hpanel = wal.HPanel(grid)

        self.wspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.wspin)

        hpanel.pack((5, 5))

        hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

        self.hspin = StaticUnitSpin(self.app, hpanel)
        hpanel.pack(self.hspin)
        hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

        grid.pack(hpanel)

        grid.pack(wal.Label(grid, _('Orientation:')))

        hpanel = wal.HPanel(grid)

        self.port_opt = wal.Radiobutton(hpanel,
                                        uc2const.ORIENTS_NAMES[0],
                                        group=True)
        self.land_opt = wal.Radiobutton(hpanel, uc2const.ORIENTS_NAMES[1])

        hpanel.pack(self.port_opt)
        hpanel.pack((15, 5))
        hpanel.pack(self.land_opt)

        grid.pack(hpanel)

        self.pack(grid, fill=True, expand=True, padding_all=7)

        self.set_data()

    def set_data(self):
        self.land_opt.set_value(True)
        if self.printer.page_orientation == uc2const.PORTRAIT:
            self.port_opt.set_value(True)

        self.items = self.printer.get_format_items()
        self.size_combo.set_items(self.items)
        if not self.printer.page_format[0] == 'Custom':
            index = self.items.index(self.printer.page_format[0])
        else:
            index = len(self.items) - 1
        self.size_combo.set_active(index)

        if self.printer.is_custom_supported():
            minw, minh = self.printer.customs[0]
            maxw, maxh = self.printer.customs[1]
            self.wspin.set_point_range((minw, maxw))
            self.hspin.set_point_range((minh, maxh))
        self.on_change()

    def on_change(self):
        index = self.size_combo.get_active()
        status = False
        if index == len(self.items) - 1:
            if not self.hspin.get_point_value() and \
                            self.printer.page_format[0] == 'Custom':
                w, h = self.printer.page_format[1]
                self.wspin.set_point_value(w)
                self.hspin.set_point_value(h)
            status = True
        else:
            w, h = uc2const.PAGE_FORMATS[uc2const.PAGE_FORMAT_NAMES[index]]
            self.wspin.set_point_value(w)
            self.hspin.set_point_value(h)
        self.wspin.set_enable(status)
        self.hspin.set_enable(status)

    def save(self):
        index = self.size_combo.get_active()
        prn = self.printer
        if prn.is_custom_supported() and index == len(self.items) - 1:
            w = self.wspin.get_point_value()
            h = self.hspin.get_point_value()
            prn.page_format = ('Custom', (w, h))
        else:
            media = uc2const.PAGE_FORMAT_NAMES[index]
            w, h = uc2const.PAGE_FORMATS[media]
            prn.page_format = (media, (w, h))
        self.printer.page_orientation = uc2const.LANDSCAPE
        if self.port_opt.get_value():
            self.printer.page_orientation = uc2const.PORTRAIT
示例#15
0
class PaperPanel(wal.LabeledPanel):

	app = None
	printer = None
	items = []

	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		wal.LabeledPanel.__init__(self, parent, _('Paper'))

		grid = wal.GridPanel(self, 2, 2, 5, 5)
		grid.add_growable_col(1)

		grid.pack(wal.Label(grid, _('Page size:')))

		self.size_combo = wal.Combolist(grid, onchange=self.on_change)
		grid.pack(self.size_combo, fill=True)

		grid.pack(wal.Label(grid, _('Width:')))

		hpanel = wal.HPanel(grid)

		self.wspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.wspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		hpanel.pack((5, 5))

		hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

		self.hspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.hspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		grid.pack(hpanel)

		self.pack(grid, fill=True, expand=True, padding_all=10)

		self.set_data()

	def set_data(self):
		self.items = self.printer.get_format_items()
		self.size_combo.set_items(self.items)
		index = 0
		if not self.printer.def_media[:6] == 'Custom':
			index = self.printer.pf_list.index(self.printer.def_media)
		else:
			index = len(self.items) - 1
		self.size_combo.set_active(index)
		if self.printer.is_custom_supported():
			minw, minh = self.printer.customs[0]
			maxw, maxh = self.printer.customs[1]
			self.wspin.set_point_range((minw, maxw))
			self.hspin.set_point_range((minh, maxh))
		self.on_change()

	def on_change(self):
		index = self.size_combo.get_active()
		status = False
		if self.printer.is_custom_supported() and index == len(self.items) - 1:
			if not self.hspin.get_point_value() and \
			self.printer.def_media[:6] == 'Custom':
				w, h = self.printer.def_media[7:].split('x')
				w = float(w)
				h = float(h)
				self.wspin.set_point_value(w)
				self.hspin.set_point_value(h)
			status = True
		else:
			w, h = self.printer.pf_dict[self.printer.pf_list[index]][1]
			self.wspin.set_point_value(w)
			self.hspin.set_point_value(h)
		self.wspin.set_enable(status)
		self.hspin.set_enable(status)

	def save(self):
		index = self.size_combo.get_active()
		prn = self.printer
		if prn.is_custom_supported() and index == len(self.items) - 1:
			w = self.wspin.get_point_value()
			h = self.hspin.get_point_value()
			prn.def_media = 'Custom.%gx%g' % (w, h)
			prn.page_format = ('Custom', (w, h))
		else:
			prn.def_media = prn.pf_list[index]
			prn.page_format = prn.pf_dict[prn.def_media]
示例#16
0
class PagePanel(wal.LabeledPanel):

	app = None
	printer = None
	items = []

	def __init__(self, parent, printer, app):
		self.app = app
		self.printer = printer
		wal.LabeledPanel.__init__(self, parent, _('Document page'))

		grid = wal.GridPanel(self, 3, 2, 3, 3)
		grid.add_growable_col(1)

		grid.pack(wal.Label(grid, _('Page size:')))

		self.size_combo = wal.Combolist(grid, onchange=self.on_change)
		grid.pack(self.size_combo, fill=True)

		grid.pack(wal.Label(grid, _('Width:')))

		hpanel = wal.HPanel(grid)

		self.wspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.wspin)

		hpanel.pack((5, 5))

		hpanel.pack(wal.Label(grid, _('Height:')), padding=5)

		self.hspin = StaticUnitSpin(self.app, hpanel)
		hpanel.pack(self.hspin)
		hpanel.pack(StaticUnitLabel(self.app, hpanel), padding=5)

		grid.pack(hpanel)

		grid.pack(wal.Label(grid, _('Orientation:')))

		hpanel = wal.HPanel(grid)

		self.port_opt = wal.Radiobutton(hpanel, _('Portrait'), group=True)
		self.land_opt = wal.Radiobutton(hpanel, _('Landscape'))

		hpanel.pack(self.port_opt)
		hpanel.pack((15, 5))
		hpanel.pack(self.land_opt)

		grid.pack(hpanel)

		self.pack(grid, fill=True, expand=True, padding_all=7)

		self.set_data()

	def set_data(self):
		self.land_opt.set_value(True)
		if self.printer.page_orientation == uc2const.PORTRAIT:
			self.port_opt.set_value(True)

		self.items = self.printer.get_format_items()
		self.size_combo.set_items(self.items)
		index = 0
		if not self.printer.page_format[0] == 'Custom':
			index = self.items.index(self.printer.page_format[0])
		else:
			index = len(self.items) - 1
		self.size_combo.set_active(index)

		if self.printer.is_custom_supported():
			minw, minh = self.printer.customs[0]
			maxw, maxh = self.printer.customs[1]
			self.wspin.set_point_range((minw, maxw))
			self.hspin.set_point_range((minh, maxh))
		self.on_change()

	def on_change(self):
		index = self.size_combo.get_active()
		status = False
		if index == len(self.items) - 1:
			if not self.hspin.get_point_value() and \
			self.printer.page_format[0] == 'Custom':
				w, h = self.printer.page_format[1]
				self.wspin.set_point_value(w)
				self.hspin.set_point_value(h)
			status = True
		else:
			w, h = uc2const.PAGE_FORMATS[uc2const.PAGE_FORMAT_NAMES[index]]
			self.wspin.set_point_value(w)
			self.hspin.set_point_value(h)
		self.wspin.set_enable(status)
		self.hspin.set_enable(status)

	def save(self):
		index = self.size_combo.get_active()
		prn = self.printer
		if prn.is_custom_supported() and index == len(self.items) - 1:
			w = self.wspin.get_point_value()
			h = self.hspin.get_point_value()
			prn.page_format = ('Custom', (w, h))
		else:
			media = uc2const.PAGE_FORMAT_NAMES[index]
			w, h = uc2const.PAGE_FORMATS[media]
			prn.page_format = (media, (w, h))
		self.printer.page_orientation = uc2const.LANDSCAPE
		if self.port_opt.get_value():
			self.printer.page_orientation = uc2const.PORTRAIT