diff options
-rw-r--r-- | ptgui.glade | 78 | ||||
-rw-r--r-- | ptgui.py | 23 | ||||
-rw-r--r-- | pttarget.py | 7 |
3 files changed, 93 insertions, 15 deletions
diff --git a/ptgui.glade b/ptgui.glade index 8170616..8715537 100644 --- a/ptgui.glade +++ b/ptgui.glade @@ -10,6 +10,11 @@ <column type="GObject"/> </columns> </object> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-cut</property> + </object> <object class="GtkWindow" id="mainwnd"> <property name="can_focus">False</property> <child> @@ -39,6 +44,7 @@ <object class="GtkBox" id="box2"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="spacing">3</property> <child> <object class="GtkLabel" id="statuslabel"> <property name="visible">True</property> @@ -54,18 +60,86 @@ </packing> </child> <child> + <object class="GtkSeparator" id="separator2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="numcopies"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="width_chars">3</property> + <property name="text" translatable="yes">1</property> + <property name="xalign">1</property> + <property name="input_purpose">digits</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-copy</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="cuttoggle"> + <property name="label" translatable="yes">feed & cut last</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">image1</property> + <property name="active">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkSeparator" id="separator1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + </packing> + </child> + <child> <object class="GtkButton" id="printbtn"> <property name="label">gtk-print</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="use_stock">True</property> + <property name="focus_on_click">False</property> <signal name="clicked" handler="on_print" swapped="no"/> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">6</property> </packing> </child> </object> @@ -91,7 +165,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <child> - <object class="GtkDrawingArea" id="resultimg"> + <object class="GtkDrawingArea" id="img"> <property name="height_request">128</property> <property name="visible">True</property> <property name="can_focus">False</property> @@ -20,13 +20,11 @@ class MainWindow(object): self.wnd = builder.get_object('mainwnd') self.wnd.connect("delete-event", Gtk.main_quit) - self.statuslabel = builder.get_object('statuslabel') - tabviewport = builder.get_object('tabviewport') + for name in ['statuslabel', 'tabviewport', 'img', 'printbtn', + 'color_fg', 'color_bg', 'numcopies', 'cuttoggle', 'devbox']: + self.__dict__[name] = builder.get_object(name) self.ctlgrid = Gtk.Table() - tabviewport.add(self.ctlgrid) - self.printbtn = builder.get_object('printbtn') - self.color_fg = builder.get_object('color_fg') - self.color_bg = builder.get_object('color_bg') + self.tabviewport.add(self.ctlgrid) self.layout = ptlayout.PTLHSeq() self.layout.spacing = 0 @@ -58,13 +56,11 @@ class MainWindow(object): self.layout.add(PTLText()) self.layout_put_controls() - self.img = builder.get_object('resultimg') self.sizing_apply() self.img.connect('draw', self.draw) # help(self.img) self.devlist = Gtk.ListStore(str, object) - self.devbox = builder.get_object('devbox') self.devbox.set_model(self.devlist) self.scan() self.dev_select() @@ -259,11 +255,20 @@ class MainWindow(object): if self.label_surface is None: return + + copies = self.numcopies.get_buffer().get_text() + if copies.strip() == '': + copies = 1 + else: + copies = int(copies) + feedlast = self.cuttoggle.get_active() + data = pttarget.PTLabelData() data.addcairo(self.label_surface, offset = self.tape.offset) itr = self.devbox.get_active_iter() dev = self.devlist[itr][1] - dev.send(data.get()) + for i in range(0, copies): + dev.send(data.get(feedlast and i == copies - 1)) mw = MainWindow() Gtk.main() diff --git a/pttarget.py b/pttarget.py index e0bf7ac..37f6509 100644 --- a/pttarget.py +++ b/pttarget.py @@ -183,8 +183,6 @@ class PTLabelData(object): # margins: '\x1bid\x00\x00' + self.init = '\x1biR\x01' + '\x1biM\x40' + '\x1bid\x00\x00' + '\x1biK\x00' self.raw = '' - # self.fini = '\x1a' # Z / feed ? - self.fini = '\x0c' def addpixels(self, raw): row = 'G' + struct.pack('<H', len(raw)) + raw @@ -215,8 +213,9 @@ class PTLabelData(object): pixels[py / 8] |= 1 << (7 - (py & 7)) self.addpixels(pixels) - def get(self): - return self.init + self.raw + self.fini + def get(self, feedncut = True): + fini = '\x1a' if feedncut else '\x0c' + return self.init + self.raw + fini class PTTape(object): tapes = [] |