Skip to content
Snippets Groups Projects
Commit f80031c5 authored by Radek Hušek's avatar Radek Hušek
Browse files

make use of config

parent e36154f0
No related branches found
No related tags found
No related merge requests found
...@@ -64,24 +64,45 @@ class CPP(QWidget): ...@@ -64,24 +64,45 @@ class CPP(QWidget):
super().__init__() super().__init__()
self._pdf = pdf self._pdf = pdf
self._config = config self._config = config
self._defaults = self._config.get("defaults", {})
self.init_printers()
self.init_gui()
self.show()
def init_printers(self):
self._save_as_file = object()
self._printers = self._config.get("printers", [])
self._printers.append(("Save as ...", self._save_as_file))
for l in sp.check_output(["lpstat", "-a"]).decode("UTF-8").split("\n"):
p = l.split(" ")[0]
if p == "":
continue
self._printers.append((p, ["lp", "-d", p]))
def init_gui(self):
vbox = QVBoxLayout() vbox = QVBoxLayout()
vbox.addStretch(1) vbox.addStretch(1)
o = QLabel("Printing %s" % (pdf,), self) o = QLabel("Printing %s" % (self._pdf,), self)
o.setMinimumWidth(400) o.setMinimumWidth(400)
o.setMaximumWidth(800) o.setMaximumWidth(800)
o.setWordWrap(True) o.setWordWrap(True)
vbox.addWidget(o) vbox.addWidget(o)
def margin_spinbox(name, layout): def margin_spinbox(name, layout, margin_id):
hbox = QHBoxLayout() hbox = QHBoxLayout()
hbox.addWidget(QLabel(name)) hbox.addWidget(QLabel(name))
s = QSpinBox(self) s = QSpinBox(self)
s.setMinimum(0) s.setMinimum(0)
s.setMaximum(100) s.setMaximum(100)
s.setSingleStep(1) s.setSingleStep(1)
s.setValue(20) s.setValue(self._defaults.get("crop_margins", [20, 20, 20, 20])[margin_id])
s.setEnabled(False) s.setEnabled(False)
hbox.addWidget(s) hbox.addWidget(s)
layout.addLayout(hbox) layout.addLayout(hbox)
...@@ -93,10 +114,10 @@ class CPP(QWidget): ...@@ -93,10 +114,10 @@ class CPP(QWidget):
_vbox = QVBoxLayout() _vbox = QVBoxLayout()
_vbox.addWidget(QLabel("Margins [mm]")) _vbox.addWidget(QLabel("Margins [mm]"))
self._crop_margin = ( self._crop_margin = (
margin_spinbox("Left", _vbox), margin_spinbox("Left", _vbox, 0),
margin_spinbox("Top", _vbox), margin_spinbox("Top", _vbox, 1),
margin_spinbox("Right", _vbox), margin_spinbox("Right", _vbox, 2),
margin_spinbox("Bottom", _vbox), margin_spinbox("Bottom", _vbox, 3),
) )
hbox.addLayout(_vbox) hbox.addLayout(_vbox)
vbox.addLayout(hbox) vbox.addLayout(hbox)
...@@ -105,6 +126,9 @@ class CPP(QWidget): ...@@ -105,6 +126,9 @@ class CPP(QWidget):
for m in self._crop_margin: for m in self._crop_margin:
m.setEnabled(checked) m.setEnabled(checked)
self._crop.clicked[bool].connect(_crop_changed) self._crop.clicked[bool].connect(_crop_changed)
if self._defaults.get("crop", False):
self._crop.setChecked(True)
_crop_changed(True)
hbox = QHBoxLayout() hbox = QHBoxLayout()
self._compact = QCheckBox('Co&mpact', self) self._compact = QCheckBox('Co&mpact', self)
...@@ -112,7 +136,7 @@ class CPP(QWidget): ...@@ -112,7 +136,7 @@ class CPP(QWidget):
self._compact_copies.setMinimum(1) self._compact_copies.setMinimum(1)
self._compact_copies.setMaximum(1000) self._compact_copies.setMaximum(1000)
self._compact_copies.setSingleStep(1) self._compact_copies.setSingleStep(1)
self._compact_copies.setValue(1) self._compact_copies.setValue(self._defaults.get("copies", 1))
self._compact_copies.setEnabled(False) self._compact_copies.setEnabled(False)
def _compact_changed(enabled): def _compact_changed(enabled):
...@@ -122,11 +146,12 @@ class CPP(QWidget): ...@@ -122,11 +146,12 @@ class CPP(QWidget):
self._duplex.setCurrentIndex(1) self._duplex.setCurrentIndex(1)
self._pdfbook.setChecked(False) self._pdfbook.setChecked(False)
_pdfbook_changed(False) _pdfbook_changed(False)
else:
self._compact_copies.setValue(1)
self._duplex.setEnabled(not enabled) self._duplex.setEnabled(not enabled)
self._compact.clicked[bool].connect(_compact_changed) self._compact.clicked[bool].connect(_compact_changed)
if self._defaults.get("compact", False):
self._compact.setChecked(True)
_compact_changed(True)
hbox.addWidget(self._compact) hbox.addWidget(self._compact)
hbox.addWidget(self._compact_copies) hbox.addWidget(self._compact_copies)
...@@ -148,17 +173,21 @@ class CPP(QWidget): ...@@ -148,17 +173,21 @@ class CPP(QWidget):
self._duplex.setEnabled(not enabled) self._duplex.setEnabled(not enabled)
if enabled: if enabled:
self._duplex.setCurrentIndex(1) self._duplex.setCurrentIndex(1)
else:
self._staple.setChecked(False)
self._pdfbook.clicked[bool].connect(_pdfbook_changed) self._pdfbook.clicked[bool].connect(_pdfbook_changed)
if self._defaults.get("pdfbook", False):
self._pdfbook.setChecked(True)
_pdfbook_changed(True)
if self._defaults.get("staple", False):
self._staple.setChecked(True)
hbox.addWidget(self._duplex) hbox.addWidget(self._duplex)
vbox.addLayout(hbox) vbox.addLayout(hbox)
vbox.addWidget(self._pdfbook) vbox.addWidget(self._pdfbook)
vbox.addWidget(self._staple) vbox.addWidget(self._staple)
o = QComboBox(self) o = QComboBox(self)
for (p, cmd) in PRINTERS: for (p, cmd) in self._printers:
o.addItem(p, cmd) o.addItem(p, cmd)
vbox.addWidget(o) vbox.addWidget(o)
self._printer = o self._printer = o
...@@ -180,7 +209,6 @@ class CPP(QWidget): ...@@ -180,7 +209,6 @@ class CPP(QWidget):
self.setLayout(vbox) self.setLayout(vbox)
self.setWindowTitle('CUPS pdf printer postprocessor') self.setWindowTitle('CUPS pdf printer postprocessor')
self.show()
def print(self): def print(self):
...@@ -207,7 +235,7 @@ class CPP(QWidget): ...@@ -207,7 +235,7 @@ class CPP(QWidget):
pipeline.append([ "%s/print_compact.sh" % DIR, pipeline.append([ "%s/print_compact.sh" % DIR,
"%i" % self._compact_copies.value() ]) "%i" % self._compact_copies.value() ])
if self._printer.currentData() is SAVE_AS_FILE: if self._printer.currentData() is self._save_as_file:
f = QFileDialog.getSaveFileName(self, 'Save as ...') f = QFileDialog.getSaveFileName(self, 'Save as ...')
if not f[0]: if not f[0]:
self.close() self.close()
...@@ -223,6 +251,7 @@ class CPP(QWidget): ...@@ -223,6 +251,7 @@ class CPP(QWidget):
exec_pipeline(pipeline, self._pdf, err_callback=logMsg) exec_pipeline(pipeline, self._pdf, err_callback=logMsg)
self._button_cancel.setText("&Close") self._button_cancel.setText("&Close")
DIR = os.path.dirname(os.path.realpath(sys.argv[0])) DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
if __name__ == '__main__': if __name__ == '__main__':
...@@ -236,16 +265,12 @@ if __name__ == '__main__': ...@@ -236,16 +265,12 @@ if __name__ == '__main__':
with open(CONFIG_FILE) as config: with open(CONFIG_FILE) as config:
CONFIG = ast.literal_eval("{\n%s\n}" % config.read()) CONFIG = ast.literal_eval("{\n%s\n}" % config.read())
SAVE_AS_FILE = object() # env must be fixed before we create Qt stuff
for var, val in CONFIG.get("enviroment", {}).items():
PRINTERS = CONFIG.get("printers", []) if val is None:
PRINTERS.append(("Save as ...", SAVE_AS_FILE)) del os.environ[var]
else:
for l in sp.check_output(["lpstat", "-a"]).decode("UTF-8").split("\n"): os.environ[var] = val
p = l.split(" ")[0]
if p == "":
continue
PRINTERS.append((p, ["lp", "-d", p]))
app = QApplication(args[2:]) app = QApplication(args[2:])
ex = CPP(CONFIG, args[1], args[2]) ex = CPP(CONFIG, args[1], args[2])
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment