From e3004852e1276494ee5ea9e58ece89644db7f483 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Sun, 15 Dec 2013 00:43:46 +0100 Subject: Add support for a dummy printer to toy with the gui --- ptgui.py | 10 ++++++--- pttarget.py | 67 ++++++++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 53 insertions(+), 24 deletions(-) diff --git a/ptgui.py b/ptgui.py index 032dbe2..c3a0f0b 100644 --- a/ptgui.py +++ b/ptgui.py @@ -76,9 +76,13 @@ class MainWindow(object): print str(dev) self.devlist.append([str(dev), dev]) - if len(self.devlist) > 0: - itr = self.devlist.get_iter((0, )) - self.devbox.set_active_iter(itr) + if len(self.devlist) == 0: + for dummy_width in [9,12,24]: + dummy_printer = pttarget.PTPrinter(dummy_width) + self.devlist.append([str(dummy_printer), dummy_printer]) + + itr = self.devlist.get_iter((0, )) + self.devbox.set_active_iter(itr) def dev_select(self): itr = self.devbox.get_active_iter() diff --git a/pttarget.py b/pttarget.py index d8f9eb2..48c2bee 100644 --- a/pttarget.py +++ b/pttarget.py @@ -6,13 +6,55 @@ import tempfile, os, struct, sys, array, time import qrcode class PTPrinter(object): - def __init__(self): - pass + def __init__(self, dummy_width=24): + self.dummy_width = dummy_width + self.last_status = None + + def __str__(self): + return 'Dummy PTPrinter, Tape width %d' % self.dummy_width + def setup(self): pass + + def check_status(self): + self.refresh_status() + + def find_tape(self): + for tape in PTTape.tapes: + if int(tape.sizemm) == self.media_width: + return tape + return None + def is_interactive(self): return False + def get_errstr(self): + errs = [] + for i in range(0, 8): + if self.err1 & (1 << i): + errs.append(codes_err1.get(1 << i, '<1:%02x>' % (1 << i))) + for i in range(0, 8): + if self.err2 & (1 << i): + errs.append(codes_err2.get(1 << i, '<2:%02x>' % (1 << i))) + if len(errs) == 0: + return 'OK' + return ', '.join(errs) + + def refresh_status(self): + self.err1 = 0x00 + self.err2 = 0x00 + self.media_width = self.dummy_width + self.media_type = 0x01 + self.media_length = 8000 + self.status_type = 0x00 + self.phase_type = 0x00 + self.phase_bytes = 0x00 + self.notify_num = 0x00 + self.last_status = time.time() + + def send(self, data): + pass + media_types = { 0x01: 'Laminated', 0x02: 'Lettering', @@ -37,8 +79,8 @@ codes_err2 = { class PTUSB(PTPrinter): def __init__(self, usbdev): + super(PTUSB, self).__init__() self.usbdev = usbdev - self.last_status = None def __str__(self): return '%s %s (%04x:%04x @ %d.%d)' % ( @@ -92,12 +134,6 @@ class PTUSB(PTPrinter): self.notify_num = ar[22] self.last_status = time.time() - def find_tape(self): - for tape in PTTape.tapes: - if int(tape.sizemm) == self.media_width: - return tape - return None - def check_status(self): ar = self.if_rd.read(16) if len(ar) == 0: @@ -107,18 +143,6 @@ class PTUSB(PTPrinter): ar += self.if_rd.read(16) self.refresh_status(ar) - def get_errstr(self): - errs = [] - for i in range(0, 8): - if self.err1 & (1 << i): - errs.append(codes_err1.get(1 << i, '<1:%02x>' % (1 << i))) - for i in range(0, 8): - if self.err2 & (1 << i): - errs.append(codes_err2.get(1 << i, '<2:%02x>' % (1 << i))) - if len(errs) == 0: - return 'OK' - return ', '.join(errs) - def send(self, data): offset = 0 size = len(data) @@ -306,3 +330,4 @@ if __name__ == '__main__': # bytearray(((w + 7) / 8) * '\xff')) p.send(data.get()) + -- cgit v1.2.1