diff --git a/main.py b/main.py index 47cd030..a36ccea 100755 --- a/main.py +++ b/main.py @@ -248,6 +248,34 @@ def print_tool_label(wiki_num): os.system('lp -d dymo tmp.png > /dev/null 2>&1') +def print_sheet_label(name, contact): + def get_date(): + d = datetime.now(tz=timezone.utc) + d = d.astimezone(TIMEZONE_CALGARY) + return d.strftime('%b %-d, %Y') + + name_size = 85 + contact_size = 65 + date_size = 65 + + im = Image.open('label.png') + + draw = ImageDraw.Draw(im) + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name_size) + draw.text((20, 300), name, font=font, fill='black') + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', contact_size) + draw.text((20, 425), contact, font=font, fill='black') + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', date_size) + date_line = 'Printed: ' + get_date() + draw.text((20, 625), date_line, font=font, fill='black') + + im.save('tmp.png') + os.system('lp -d dymo tmp.png > /dev/null 2>&1') + + def message_protovac(message): try: logging.info('Message to Protovac: %s', message) @@ -420,6 +448,8 @@ text_line = 0 nametag_member = '' nametag_guest = '' label_tool = '' +label_material_name = '' +label_material_contact = '' logging.info('Starting main loop...') @@ -428,7 +458,7 @@ last_key = time.time() def ratelimit_key(): global last_key - if think_to_send or sign_to_send or message_to_send or nametag_member or nametag_guest or label_tool or time.time() > last_key + 1: + if think_to_send or sign_to_send or message_to_send or nametag_member or nametag_guest or label_tool or label_material_name or label_material_contact or time.time() > last_key + 1: last_key = time.time() return False else: @@ -692,7 +722,7 @@ while True: stdscr.addstr(0, 1, 'PROTOVAC UNIVERSAL COMPUTER') stdscr.addstr(2, 1, 'Print a Label') stdscr.addstr(3, 1, '===============') - #stdscr.addstr(5, 1, 'Choose between member or guest.') + stdscr.addstr(5, 1, 'Choose the type of label.') if label_tool: stdscr.addstr(8, 4, 'Enter Wiki-ID tool number: ' + label_tool) @@ -700,15 +730,21 @@ while True: stdscr.addstr(10, 4, '') stdscr.clrtoeol() stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel') - #elif nametag_guest: - # stdscr.addstr(8, 4, '') - # stdscr.clrtoeol() - # stdscr.addstr(10, 4, nametag_guest) - # stdscr.clrtoeol() - # stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel') + elif label_material_contact: + stdscr.addstr(8, 4, '') + stdscr.clrtoeol() + stdscr.addstr(10, 4, 'Enter your contact info: ' + label_material_contact) + stdscr.clrtoeol() + stdscr.addstr(23, 1, '[RETURN] Next [ESC] Cancel') + elif label_material_name: + stdscr.addstr(8, 4, '') + stdscr.clrtoeol() + stdscr.addstr(10, 4, 'Enter your name: ' + label_material_name) + stdscr.clrtoeol() + stdscr.addstr(23, 1, '[RETURN] Next [ESC] Cancel') else: stdscr.addstr(8, 4, '[T] Tool label', curses.A_REVERSE if highlight_keys else 0) - #stdscr.addstr(10, 4, '[G] Guest nametag', curses.A_REVERSE if highlight_keys else 0) + stdscr.addstr(10, 4, '[S] Sheet material', curses.A_REVERSE if highlight_keys else 0) stdscr.addstr(23, 1, '[B] Back', curses.A_REVERSE if highlight_keys else 0) stdscr.clrtoeol() @@ -1013,28 +1049,41 @@ while True: else: if c <= 57 and c >= 48: label_tool = label_tool[:-1] + chr(c) + '_' - #elif nametag_guest: - # if c == curses.KEY_BACKSPACE: - # nametag_guest = nametag_guest[:-2] + '_' - # elif c == KEY_ESCAPE: - # nametag_guest = '' - # stdscr.erase() - # elif c == KEY_ENTER: - # if len(nametag_guest) > 1: - # stdscr.addstr(15, 4, 'Printing...') - # stdscr.refresh() - # print_nametag(nametag_guest[:-1], guest=True) - # stdscr.erase() - # nametag_guest = '' - # else: - # if c < 127 and c > 31: - # nametag_guest = nametag_guest[:-1] + chr(c) + '_' + elif label_material_contact: + if c == curses.KEY_BACKSPACE: + label_material_contact = label_material_contact[:-2] + '_' + elif c == KEY_ESCAPE: + label_material_contact = '' + stdscr.erase() + elif c == KEY_ENTER: + if len(label_material_contact) > 1: + stdscr.addstr(15, 4, 'Printing...') + stdscr.refresh() + print_sheet_label(label_material_name[:-1], label_material_contact[:-1]) + stdscr.erase() + label_material_name = '' + label_material_contact = '' + else: + if c < 127 and c > 31: + label_material_contact = label_material_contact[:-1] + chr(c) + '_' + elif label_material_name: + if c == curses.KEY_BACKSPACE: + label_material_name = label_material_name[:-2] + '_' + elif c == KEY_ESCAPE: + label_material_name = '' + stdscr.erase() + elif c == KEY_ENTER: + if len(label_material_name) > 1: + label_material_contact = '_' + else: + if c < 127 and c > 31: + label_material_name = label_material_name[:-1] + chr(c) + '_' elif button == 'b' or c == KEY_ESCAPE: current_screen = 'home' elif button == 't': label_tool = '_' - #elif button == 'g': - # nametag_guest = '_' + elif button == 's': + label_material_name = '_' else: try_highlight() diff --git a/sheet_label.py b/sheet_label.py new file mode 100644 index 0000000..fb19fe3 --- /dev/null +++ b/sheet_label.py @@ -0,0 +1,37 @@ +from PIL import Image, ImageEnhance, ImageFont, ImageDraw +import requests +import pytz +from datetime import datetime, timezone + +TIMEZONE_CALGARY = pytz.timezone('America/Edmonton') + + +def print_sheet_label(name, contact): + def get_date(): + d = datetime.now(tz=timezone.utc) + d = d.astimezone(TIMEZONE_CALGARY) + return d.strftime('%b %-d, %Y') + + name_size = 85 + contact_size = 65 + date_size = 65 + + im = Image.open('label.png') + + draw = ImageDraw.Draw(im) + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name_size) + draw.text((20, 300), name, font=font, fill='black') + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', contact_size) + draw.text((20, 425), contact, font=font, fill='black') + + font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', date_size) + date_line = 'Printed: ' + get_date() + draw.text((20, 625), date_line, font=font, fill='black') + + im.save('tmp.png') + + +print_sheet_label('Christopher Reallylongname', 'mail@christopherreallylongname.com') +