refactor: Expand single-line statements for improved readability
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
394
tui.py
394
tui.py
@@ -127,22 +127,38 @@ class HomeScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 's': self.state.current_screen = 'stats'
|
||||
elif button == 'i': self.state.current_screen = 'info'
|
||||
elif button == 'n': self.state.current_screen = 'nametag'
|
||||
elif button == 'l': self.state.current_screen = 'label'
|
||||
elif button == 'z': self.state.current_screen = 'games'
|
||||
elif button == '0': self.state.current_screen = 'asimov'
|
||||
elif button == 'g': self.state.current_screen = 'sign'
|
||||
elif button == 'v': self.state.current_screen = 'protovac_sign'
|
||||
elif button == 'r': self.state.current_screen = 'train'
|
||||
elif button == 'c': self.state.current_screen = 'classes'
|
||||
elif button == 'm' and utils.openai_key: self.state.current_screen = 'message'
|
||||
elif button == 't' and utils.wa_api_key: self.state.current_screen = 'think'
|
||||
elif c == 68: self.state.current_screen = 'debug'
|
||||
elif button == 'a': self.state.current_screen = 'about'
|
||||
elif button == 'p': self.state.current_screen = 'protocoin'
|
||||
else: self.try_highlight(c)
|
||||
if button == 's':
|
||||
self.state.current_screen = 'stats'
|
||||
elif button == 'i':
|
||||
self.state.current_screen = 'info'
|
||||
elif button == 'n':
|
||||
self.state.current_screen = 'nametag'
|
||||
elif button == 'l':
|
||||
self.state.current_screen = 'label'
|
||||
elif button == 'z':
|
||||
self.state.current_screen = 'games'
|
||||
elif button == '0':
|
||||
self.state.current_screen = 'asimov'
|
||||
elif button == 'g':
|
||||
self.state.current_screen = 'sign'
|
||||
elif button == 'v':
|
||||
self.state.current_screen = 'protovac_sign'
|
||||
elif button == 'r':
|
||||
self.state.current_screen = 'train'
|
||||
elif button == 'c':
|
||||
self.state.current_screen = 'classes'
|
||||
elif button == 'm' and utils.openai_key:
|
||||
self.state.current_screen = 'message'
|
||||
elif button == 't' and utils.wa_api_key:
|
||||
self.state.current_screen = 'think'
|
||||
elif c == 68:
|
||||
self.state.current_screen = 'debug'
|
||||
elif button == 'a':
|
||||
self.state.current_screen = 'about'
|
||||
elif button == 'p':
|
||||
self.state.current_screen = 'protocoin'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
|
||||
class DebugScreen(Screen):
|
||||
@@ -157,8 +173,10 @@ class DebugScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
elif c == 88: exit()
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif c == 88:
|
||||
exit()
|
||||
elif c == 83:
|
||||
curses.nocbreak()
|
||||
self.stdscr.keypad(False)
|
||||
@@ -175,7 +193,8 @@ class DebugScreen(Screen):
|
||||
logging.info('Spawning nethack.')
|
||||
os.system('/usr/games/nethack')
|
||||
exit()
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
|
||||
class StatsScreen(Screen):
|
||||
@@ -210,8 +229,10 @@ class StatsScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
else: self.try_highlight(c)
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
|
||||
class ClassesScreen(Screen):
|
||||
@@ -255,7 +276,8 @@ class ClassesScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'j' or c == curses.KEY_DOWN or c == KEY_SPACE:
|
||||
if self.classes and self.classes_start+6 < len(self.classes):
|
||||
self.classes_start += 6
|
||||
@@ -264,7 +286,8 @@ class ClassesScreen(Screen):
|
||||
if self.classes_start > 0:
|
||||
self.classes_start -= 6
|
||||
self.stdscr.erase()
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
class TextScreen(Screen):
|
||||
def __init__(self, state, stdscr, title, text_content):
|
||||
@@ -287,7 +310,8 @@ class TextScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'j' or c == curses.KEY_DOWN or c == KEY_SPACE:
|
||||
if self.text_line+19 < len(self.lines):
|
||||
self.text_line += 19
|
||||
@@ -296,7 +320,8 @@ class TextScreen(Screen):
|
||||
if self.text_line > 0:
|
||||
self.text_line -= 19
|
||||
self.stdscr.erase()
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
class ProtocoinScreen(Screen):
|
||||
def __init__(self, state, stdscr):
|
||||
@@ -338,7 +363,8 @@ class ProtocoinScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'j' or c == curses.KEY_DOWN or c == KEY_SPACE:
|
||||
if self.protocoin and self.protocoin_line+19 < len(self.protocoin['transactions']):
|
||||
self.protocoin_line += 19
|
||||
@@ -347,7 +373,8 @@ class ProtocoinScreen(Screen):
|
||||
if self.protocoin_line > 0:
|
||||
self.protocoin_line -= 19
|
||||
self.stdscr.erase()
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
class SignScreen(Screen):
|
||||
def __init__(self, state, stdscr):
|
||||
@@ -391,11 +418,13 @@ class SignScreen(Screen):
|
||||
self.sign_to_send = ''
|
||||
else:
|
||||
self.sign_to_send = self.handle_text_input(c, self.sign_to_send)
|
||||
elif button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
elif button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'e':
|
||||
self.is_typing = True
|
||||
self.sign_to_send = '_'
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
def is_entry_key(self, c):
|
||||
button = self.get_button(c)
|
||||
@@ -427,20 +456,34 @@ class ProtovacSignScreen(Screen):
|
||||
def handle_input(self, c):
|
||||
res = ''
|
||||
button = self.get_button(c)
|
||||
if button == '1': res = utils.protovac_sign_color([255,255,255])
|
||||
elif button == '2': res = utils.protovac_sign_color([255,150,150])
|
||||
elif button == '3': res = utils.protovac_sign_color([150,255,150])
|
||||
elif button == '4': res = utils.protovac_sign_color([150,150,255])
|
||||
elif button == '5': res = utils.protovac_sign_color([255,50,255])
|
||||
elif button == '6': res = utils.protovac_sign_color([random.randint(50,255),random.randint(50,255),random.randint(50,255)])
|
||||
elif button == 'q': res = utils.protovac_sign_effect(0)
|
||||
elif button == 'w': res = utils.protovac_sign_effect(2)
|
||||
elif button == 'e': res = utils.protovac_sign_effect(49)
|
||||
elif button == 'r': res = utils.protovac_sign_effect(90)
|
||||
elif button == 't': res = utils.protovac_sign_effect(89)
|
||||
elif button == 'y': res = utils.protovac_sign_effect(random.randint(3,90))
|
||||
elif button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
else: self.try_highlight(c)
|
||||
if button == '1':
|
||||
res = utils.protovac_sign_color([255,255,255])
|
||||
elif button == '2':
|
||||
res = utils.protovac_sign_color([255,150,150])
|
||||
elif button == '3':
|
||||
res = utils.protovac_sign_color([150,255,150])
|
||||
elif button == '4':
|
||||
res = utils.protovac_sign_color([150,150,255])
|
||||
elif button == '5':
|
||||
res = utils.protovac_sign_color([255,50,255])
|
||||
elif button == '6':
|
||||
res = utils.protovac_sign_color([random.randint(50,255),random.randint(50,255),random.randint(50,255)])
|
||||
elif button == 'q':
|
||||
res = utils.protovac_sign_effect(0)
|
||||
elif button == 'w':
|
||||
res = utils.protovac_sign_effect(2)
|
||||
elif button == 'e':
|
||||
res = utils.protovac_sign_effect(49)
|
||||
elif button == 'r':
|
||||
res = utils.protovac_sign_effect(90)
|
||||
elif button == 't':
|
||||
res = utils.protovac_sign_effect(89)
|
||||
elif button == 'y':
|
||||
res = utils.protovac_sign_effect(random.randint(3,90))
|
||||
elif button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
if res == 'Error':
|
||||
self.stdscr.addstr(21, 12, 'ERROR')
|
||||
@@ -530,7 +573,8 @@ class NametagScreen(Screen):
|
||||
utils.print_nametag(self.nametag_member[:-1], guest=False)
|
||||
self.nametag_member = ''
|
||||
self.state.current_screen = 'home'
|
||||
else: self.nametag_member = self.handle_text_input(c, self.nametag_member)
|
||||
else:
|
||||
self.nametag_member = self.handle_text_input(c, self.nametag_member)
|
||||
elif self.nametag_guest:
|
||||
if c == KEY_ESCAPE:
|
||||
self.nametag_guest = ''
|
||||
@@ -542,17 +586,20 @@ class NametagScreen(Screen):
|
||||
utils.print_nametag(self.nametag_guest[:-1], guest=True)
|
||||
self.nametag_guest = ''
|
||||
self.state.current_screen = 'home'
|
||||
else: self.nametag_guest = self.handle_text_input(c, self.nametag_guest)
|
||||
else:
|
||||
self.nametag_guest = self.handle_text_input(c, self.nametag_guest)
|
||||
else:
|
||||
self.is_typing = False
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'm':
|
||||
self.nametag_member = '_'
|
||||
self.is_typing = True
|
||||
elif button == 'g':
|
||||
self.nametag_guest = '_'
|
||||
self.is_typing = True
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
def is_entry_key(self, c):
|
||||
button = self.get_button(c)
|
||||
@@ -593,35 +640,58 @@ class LabelScreen(Screen):
|
||||
|
||||
# Drawing logic for different sub-screens
|
||||
if self.sub_screen == 'menu':
|
||||
self.stdscr.addstr(8, 4, '[T] Tool label', curses.A_REVERSE if self.state.highlight_keys else 0); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(10, 4, '[S] Sheet material', curses.A_REVERSE if self.state.highlight_keys else 0); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, '[G] Generic label', curses.A_REVERSE if self.state.highlight_keys else 0); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(14, 4, '[F] Forum thread', curses.A_REVERSE if self.state.highlight_keys else 0); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(8, 4, '[T] Tool label', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(10, 4, '[S] Sheet material', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, '[G] Generic label', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(14, 4, '[F] Forum thread', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[B] Back', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
elif self.sub_screen == 'tool':
|
||||
self.stdscr.addstr(8, 4, 'Enter Wiki-ID tool number: ' + self.label_tool); self.stdscr.clrtoeol()
|
||||
for i in [10, 12, 14]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(8, 4, 'Enter Wiki-ID tool number: ' + self.label_tool)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [10, 12, 14]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel')
|
||||
elif self.sub_screen == 'material_name':
|
||||
self.stdscr.addstr(10, 4, 'Enter your name: ' + self.label_material_name); self.stdscr.clrtoeol()
|
||||
for i in [8, 12, 14]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(10, 4, 'Enter your name: ' + self.label_material_name)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [8, 12, 14]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Next [ESC] Cancel')
|
||||
elif self.sub_screen == 'material_contact':
|
||||
self.stdscr.addstr(10, 4, 'Enter your name: ' + self.label_material_name[:-1]); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, 'Enter your contact info: ' + self.label_material_contact); self.stdscr.clrtoeol()
|
||||
for i in [8, 14]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(10, 4, 'Enter your name: ' + self.label_material_name[:-1])
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, 'Enter your contact info: ' + self.label_material_contact)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [8, 14]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel')
|
||||
elif self.sub_screen == 'generic':
|
||||
self.stdscr.addstr(12, 4, 'Enter your message: ' + self.label_generic); self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 14]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, 'Enter your message: ' + self.label_generic)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 14]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel')
|
||||
elif self.sub_screen == 'consumable':
|
||||
self.stdscr.addstr(12, 4, 'Enter the item: ' + self.label_consumable); self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 14]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(12, 4, 'Enter the item: ' + self.label_consumable)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 14]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Print [ESC] Cancel')
|
||||
elif self.sub_screen == 'forum_search':
|
||||
self.stdscr.addstr(14, 4, 'Search for a thread: ' + self.label_forum_search); self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 12]: self.stdscr.move(i, 4); self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(14, 4, 'Search for a thread: ' + self.label_forum_search)
|
||||
self.stdscr.clrtoeol()
|
||||
for i in [8, 10, 12]:
|
||||
self.stdscr.move(i, 4)
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.addstr(23, 1, '[RETURN] Search [ESC] Cancel')
|
||||
elif self.sub_screen == 'forum_results':
|
||||
if self.search_results is not None:
|
||||
@@ -640,32 +710,44 @@ class LabelScreen(Screen):
|
||||
self.is_typing = self.sub_screen not in ['menu', 'forum_results']
|
||||
|
||||
if self.sub_screen == 'menu':
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 't':
|
||||
self.sub_screen = 'tool'; self.label_tool = '_'
|
||||
self.sub_screen = 'tool'
|
||||
self.label_tool = '_'
|
||||
self.is_typing = True
|
||||
elif button == 's':
|
||||
self.sub_screen = 'material_name'; self.label_material_name = '_'
|
||||
self.sub_screen = 'material_name'
|
||||
self.label_material_name = '_'
|
||||
self.is_typing = True
|
||||
elif button == 'g':
|
||||
self.sub_screen = 'generic'; self.label_generic = '_'
|
||||
self.sub_screen = 'generic'
|
||||
self.label_generic = '_'
|
||||
self.is_typing = True
|
||||
elif button == 'c':
|
||||
self.sub_screen = 'consumable'; self.label_consumable = '_'
|
||||
self.sub_screen = 'consumable'
|
||||
self.label_consumable = '_'
|
||||
self.is_typing = True
|
||||
elif button == 'f':
|
||||
self.sub_screen = 'forum_search'; self.label_forum_search = '_'
|
||||
self.sub_screen = 'forum_search'
|
||||
self.label_forum_search = '_'
|
||||
self.is_typing = True
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
elif self.sub_screen == 'tool':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER:
|
||||
if len(self.label_tool) > 1:
|
||||
self.stdscr.addstr(15, 4, 'Printing...'); self.stdscr.refresh()
|
||||
try: utils.print_tool_label(self.label_tool[:-1])
|
||||
except: self.stdscr.addstr(15, 4, 'Error.'); self.stdscr.refresh(); time.sleep(2)
|
||||
self.stdscr.addstr(15, 4, 'Printing...')
|
||||
self.stdscr.refresh()
|
||||
try:
|
||||
utils.print_tool_label(self.label_tool[:-1])
|
||||
except:
|
||||
self.stdscr.addstr(15, 4, 'Error.')
|
||||
self.stdscr.refresh()
|
||||
time.sleep(2)
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c <= 57 and c >= 48:
|
||||
@@ -675,56 +757,76 @@ class LabelScreen(Screen):
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER and len(self.label_material_name) > 1:
|
||||
self.sub_screen = 'material_contact'; self.label_material_contact = '_'
|
||||
else: self.label_material_name = self.handle_text_input(c, self.label_material_name)
|
||||
self.sub_screen = 'material_contact'
|
||||
self.label_material_contact = '_'
|
||||
else:
|
||||
self.label_material_name = self.handle_text_input(c, self.label_material_name)
|
||||
elif self.sub_screen == 'material_contact':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER and len(self.label_material_contact) > 1:
|
||||
self.stdscr.addstr(15, 4, 'Printing...'); self.stdscr.refresh()
|
||||
self.stdscr.addstr(15, 4, 'Printing...')
|
||||
self.stdscr.refresh()
|
||||
utils.print_sheet_label(self.label_material_name[:-1], self.label_material_contact[:-1])
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
else: self.label_material_contact = self.handle_text_input(c, self.label_material_contact)
|
||||
else:
|
||||
self.label_material_contact = self.handle_text_input(c, self.label_material_contact)
|
||||
elif self.sub_screen == 'generic':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER and len(self.label_generic) > 1:
|
||||
self.stdscr.addstr(15, 4, 'Printing...'); self.stdscr.refresh()
|
||||
try: utils.print_generic_label(self.label_generic[:-1])
|
||||
except: self.stdscr.addstr(15, 4, 'Error.'); self.stdscr.refresh(); time.sleep(2)
|
||||
self.stdscr.addstr(15, 4, 'Printing...')
|
||||
self.stdscr.refresh()
|
||||
try:
|
||||
utils.print_generic_label(self.label_generic[:-1])
|
||||
except:
|
||||
self.stdscr.addstr(15, 4, 'Error.')
|
||||
self.stdscr.refresh()
|
||||
time.sleep(2)
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
else: self.label_generic = self.handle_text_input(c, self.label_generic)
|
||||
else:
|
||||
self.label_generic = self.handle_text_input(c, self.label_generic)
|
||||
elif self.sub_screen == 'consumable':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER and len(self.label_consumable) > 1:
|
||||
self.stdscr.addstr(15, 4, 'Printing...'); self.stdscr.refresh()
|
||||
try: utils.print_consumable_label(self.label_consumable[:-1])
|
||||
except: self.stdscr.addstr(15, 4, 'Error.'); self.stdscr.refresh(); time.sleep(2)
|
||||
self.stdscr.addstr(15, 4, 'Printing...')
|
||||
self.stdscr.refresh()
|
||||
try:
|
||||
utils.print_consumable_label(self.label_consumable[:-1])
|
||||
except:
|
||||
self.stdscr.addstr(15, 4, 'Error.')
|
||||
self.stdscr.refresh()
|
||||
time.sleep(2)
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
else: self.label_consumable = self.handle_text_input(c, self.label_consumable)
|
||||
else:
|
||||
self.label_consumable = self.handle_text_input(c, self.label_consumable)
|
||||
elif self.sub_screen == 'forum_search':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER and len(self.label_forum_search) > 2:
|
||||
self.stdscr.addstr(16, 4, 'Searching...'); self.stdscr.refresh()
|
||||
self.stdscr.addstr(16, 4, 'Searching...')
|
||||
self.stdscr.refresh()
|
||||
try:
|
||||
self.search_results = utils.search_forum_thread(self.label_forum_search[:-1])
|
||||
except:
|
||||
self.stdscr.addstr(16, 4, 'Error.'); self.stdscr.refresh(); time.sleep(2)
|
||||
self.stdscr.addstr(16, 4, 'Error.')
|
||||
self.stdscr.refresh()
|
||||
time.sleep(2)
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
return
|
||||
self.sub_screen = 'forum_results'
|
||||
self.stdscr.erase()
|
||||
else: self.label_forum_search = self.handle_text_input(c, self.label_forum_search)
|
||||
else:
|
||||
self.label_forum_search = self.handle_text_input(c, self.label_forum_search)
|
||||
elif self.sub_screen == 'forum_results':
|
||||
if c == KEY_ESCAPE:
|
||||
self.on_enter()
|
||||
@@ -732,13 +834,20 @@ class LabelScreen(Screen):
|
||||
elif c >= 49 and c <= 57:
|
||||
num = int(chr(c))
|
||||
if self.search_results and num <= len(self.search_results):
|
||||
self.stdscr.addstr(21, 1, 'Printing...'); self.stdscr.refresh()
|
||||
try: utils.print_forum_label(self.search_results[num-1])
|
||||
except: self.stdscr.addstr(15, 4, 'Error.'); self.stdscr.refresh(); time.sleep(2)
|
||||
self.stdscr.addstr(21, 1, 'Printing...')
|
||||
self.stdscr.refresh()
|
||||
try:
|
||||
utils.print_forum_label(self.search_results[num-1])
|
||||
except:
|
||||
self.stdscr.addstr(15, 4, 'Error.')
|
||||
self.stdscr.refresh()
|
||||
time.sleep(2)
|
||||
self.on_enter()
|
||||
self.stdscr.erase()
|
||||
else: self.try_highlight(c)
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
def is_entry_key(self, c):
|
||||
if self.sub_screen == 'menu':
|
||||
@@ -765,17 +874,28 @@ class GamesScreen(Screen):
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
game_path = None
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
elif button == 's' and utils.HAS_SUDOKU: game_path = utils.SUDOKU_LOCATION + ' -c'
|
||||
elif button == 'h' and utils.HAS_FROTZ and utils.HAS_HITCHHIKERS: game_path = utils.FROTZ_LOCATION + ' ' + utils.HITCHHIKERS_LOCATION
|
||||
elif button == '2' and utils.HAS_2048: game_path = utils._2048_LOCATION
|
||||
elif button == 'm' and utils.HAS_MORIA: game_path = utils.MORIA_LOCATION
|
||||
elif button == 'n' and utils.HAS_NETHACK: game_path = utils.NETHACK_LOCATION
|
||||
elif button == 'd' and utils.HAS_DRUGWARS: game_path = utils.DRUGWARS_LOCATION
|
||||
else: self.try_highlight(c)
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 's' and utils.HAS_SUDOKU:
|
||||
game_path = utils.SUDOKU_LOCATION + ' -c'
|
||||
elif button == 'h' and utils.HAS_FROTZ and utils.HAS_HITCHHIKERS:
|
||||
game_path = utils.FROTZ_LOCATION + ' ' + utils.HITCHHIKERS_LOCATION
|
||||
elif button == '2' and utils.HAS_2048:
|
||||
game_path = utils._2048_LOCATION
|
||||
elif button == 'm' and utils.HAS_MORIA:
|
||||
game_path = utils.MORIA_LOCATION
|
||||
elif button == 'n' and utils.HAS_NETHACK:
|
||||
game_path = utils.NETHACK_LOCATION
|
||||
elif button == 'd' and utils.HAS_DRUGWARS:
|
||||
game_path = utils.DRUGWARS_LOCATION
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
if game_path:
|
||||
curses.nocbreak(); self.stdscr.keypad(False); curses.echo(); curses.endwin()
|
||||
curses.nocbreak()
|
||||
self.stdscr.keypad(False)
|
||||
curses.echo()
|
||||
curses.endwin()
|
||||
logging.info('Spawning game: %s', game_path)
|
||||
os.system(game_path)
|
||||
exit()
|
||||
@@ -824,10 +944,15 @@ I will be terse in my responses.''')]
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if self.is_typing:
|
||||
if c == KEY_ESCAPE: self.is_typing = False; self.message_to_send = ''; self.stdscr.erase()
|
||||
if c == KEY_ESCAPE:
|
||||
self.is_typing = False
|
||||
self.message_to_send = ''
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER:
|
||||
if len(self.message_to_send) > 1:
|
||||
self.stdscr.addstr(21, 21, 'Sending...'); self.stdscr.clrtoeol(); self.stdscr.refresh()
|
||||
self.stdscr.addstr(21, 21, 'Sending...')
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.refresh()
|
||||
self.message_to_send = self.message_to_send[:-1]
|
||||
lines = textwrap.wrap(self.message_to_send, width=80, initial_indent=' '*20, subsequent_indent=' '*20)
|
||||
self.messages.append(''); self.messages.extend(lines)
|
||||
@@ -835,13 +960,19 @@ I will be terse in my responses.''')]
|
||||
gpt_reply = utils.message_protovac(self.thread)
|
||||
self.thread.append(gpt_reply)
|
||||
lines = textwrap.wrap(gpt_reply['content'], width=60)
|
||||
self.messages.append(''); self.messages.extend(lines)
|
||||
self.messages.append('')
|
||||
self.messages.extend(lines)
|
||||
self.stdscr.erase()
|
||||
self.message_to_send = '_'
|
||||
else: self.message_to_send = self.handle_text_input(c, self.message_to_send)
|
||||
elif button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
elif button == 'e': self.is_typing = True; self.message_to_send = '_'
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.message_to_send = self.handle_text_input(c, self.message_to_send)
|
||||
elif button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'e':
|
||||
self.is_typing = True
|
||||
self.message_to_send = '_'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
def is_entry_key(self, c):
|
||||
button = self.get_button(c)
|
||||
@@ -901,10 +1032,15 @@ class ThinkScreen(Screen):
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if self.is_typing:
|
||||
if c == KEY_ESCAPE: self.is_typing = False; self.think_to_send = ''; self.stdscr.erase()
|
||||
if c == KEY_ESCAPE:
|
||||
self.is_typing = False
|
||||
self.think_to_send = ''
|
||||
self.stdscr.erase()
|
||||
elif c == KEY_ENTER:
|
||||
if len(self.think_to_send) > 1:
|
||||
self.stdscr.addstr(9, 4, 'Thinking...'); self.stdscr.clrtoeol(); self.stdscr.refresh()
|
||||
self.stdscr.addstr(9, 4, 'Thinking...')
|
||||
self.stdscr.clrtoeol()
|
||||
self.stdscr.refresh()
|
||||
query = self.think_to_send[:-1]
|
||||
logging.info('Thinking about: %s', query)
|
||||
self.think_result = utils.think_send(query)
|
||||
@@ -912,10 +1048,15 @@ class ThinkScreen(Screen):
|
||||
self.is_typing = False
|
||||
self.think_to_send = ''
|
||||
self.stdscr.erase()
|
||||
else: self.think_to_send = self.handle_text_input(c, self.think_to_send)
|
||||
elif button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
elif button == 'e': self.is_typing = True; self.think_to_send = '_'
|
||||
else: self.try_highlight(c)
|
||||
else:
|
||||
self.think_to_send = self.handle_text_input(c, self.think_to_send)
|
||||
elif button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
elif button == 'e':
|
||||
self.is_typing = True
|
||||
self.think_to_send = '_'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
def is_entry_key(self, c):
|
||||
button = self.get_button(c)
|
||||
@@ -924,22 +1065,27 @@ class ThinkScreen(Screen):
|
||||
class AboutScreen(Screen):
|
||||
def draw(self):
|
||||
self.stdscr.addstr(0, 1, 'PROTOVAC UNIVERSAL COMPUTER')
|
||||
self.stdscr.addstr(2, 1, 'About'); self.stdscr.addstr(3, 1, '=====')
|
||||
self.stdscr.addstr(2, 1, 'About')
|
||||
self.stdscr.addstr(3, 1, '=====')
|
||||
self.stdscr.addstr(5, 1, 'Protovac is a universal mainframe computer accessible by terminal.')
|
||||
self.stdscr.addstr(7, 1, 'License'); self.stdscr.addstr(8, 1, '-------')
|
||||
self.stdscr.addstr(7, 1, 'License')
|
||||
self.stdscr.addstr(8, 1, '-------')
|
||||
self.stdscr.addstr(10, 1, 'This program is free and open-source software licensed under the MIT License.')
|
||||
self.stdscr.addstr(11, 1, 'Please see the LICENSE file for details. This means you have the right to')
|
||||
self.stdscr.addstr(12, 1, 'study, change, and distribute the software and source code to anyone and for')
|
||||
self.stdscr.addstr(13, 1, 'any purpose.')
|
||||
self.stdscr.addstr(15, 1, 'Source code: github.com/Protospace/protovac')
|
||||
self.stdscr.addstr(17, 1, 'Acknowledgements'); self.stdscr.addstr(18, 1, '----------------')
|
||||
self.stdscr.addstr(17, 1, 'Acknowledgements')
|
||||
self.stdscr.addstr(18, 1, '----------------')
|
||||
self.stdscr.addstr(20, 1, 'Thanks to Peter for lending the Morrow MTD-60 terminal and Jamie for the Pi.')
|
||||
self.stdscr.addstr(23, 1, '[B] Back', curses.A_REVERSE if self.state.highlight_keys else 0)
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'b' or c == KEY_ESCAPE: self.state.current_screen = 'home'
|
||||
else: self.try_highlight(c)
|
||||
if button == 'b' or c == KEY_ESCAPE:
|
||||
self.state.current_screen = 'home'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
class HelpScreen(Screen):
|
||||
def draw(self):
|
||||
@@ -951,5 +1097,7 @@ class HelpScreen(Screen):
|
||||
|
||||
def handle_input(self, c):
|
||||
button = self.get_button(c)
|
||||
if button == 'o': self.state.current_screen = 'home'
|
||||
else: self.try_highlight(c)
|
||||
if button == 'o':
|
||||
self.state.current_screen = 'home'
|
||||
else:
|
||||
self.try_highlight(c)
|
||||
|
||||
Reference in New Issue
Block a user