2015-06-14 22:31:01 +00:00
|
|
|
import curses
|
|
|
|
from fallout_functions import slowWrite
|
|
|
|
from fallout_functions import centeredWrite
|
|
|
|
from fallout_functions import NEWLINE
|
|
|
|
|
|
|
|
####################### text strings ########################
|
|
|
|
|
|
|
|
CENTERED_HEADERS = (
|
|
|
|
'ROBCO INDUSTRIES UNIFIED OPERATING SYSTEM',
|
|
|
|
'COPYRIGHT 2075-2077 ROBCO INDUSTRIES',
|
|
|
|
'-SERVER 6-',
|
|
|
|
''
|
|
|
|
)
|
|
|
|
|
|
|
|
OTHER_HEADERS = (
|
|
|
|
'\tSoftLock Solutions, Inc',
|
|
|
|
'"Your Security is Our Security"',
|
|
|
|
'>\\ Welcome, USER',
|
|
|
|
''
|
|
|
|
)
|
|
|
|
|
|
|
|
SELECTIONS = (
|
|
|
|
'Disengage Lock',
|
|
|
|
'Deactivate Turrets',
|
|
|
|
'Read Log'
|
|
|
|
)
|
|
|
|
|
|
|
|
###################### Functions ############################
|
|
|
|
|
|
|
|
def makeSelection(scr):
|
|
|
|
"""
|
|
|
|
ALlow the user to select an option
|
|
|
|
Returns the line number of the users selection starting at 0
|
|
|
|
"""
|
|
|
|
inchar = 0
|
|
|
|
selection = 0
|
|
|
|
selection_count = len(SELECTIONS)
|
|
|
|
selection_start_y = scr.getyx()[0]
|
|
|
|
width = scr.getmaxyx()[1]
|
|
|
|
|
|
|
|
while inchar != NEWLINE:
|
|
|
|
# move to start of selections and hightlight current selection
|
|
|
|
scr.move(selection_start_y, 0)
|
|
|
|
line = 0
|
|
|
|
for sel in SELECTIONS:
|
|
|
|
whole_line = '> ' + SELECTIONS[line]
|
|
|
|
space = width - len(whole_line) % width
|
|
|
|
whole_line += ' ' * space
|
|
|
|
|
|
|
|
if line == selection:
|
|
|
|
scr.addstr(whole_line, curses.A_REVERSE)
|
|
|
|
else:
|
|
|
|
scr.addstr(whole_line)
|
|
|
|
line += 1
|
|
|
|
scr.refresh()
|
|
|
|
|
|
|
|
inchar = scr.getch()
|
|
|
|
|
|
|
|
# move up and down
|
|
|
|
if inchar == curses.KEY_UP and selection > 0:
|
|
|
|
selection -= 1
|
|
|
|
elif inchar == curses.KEY_DOWN and selection < selection_count - 1:
|
|
|
|
selection += 1
|
|
|
|
|
|
|
|
return selection
|
|
|
|
|
|
|
|
|
|
|
|
def runSelection(scr):
|
|
|
|
"""
|
|
|
|
Print the selections and allow the user to select one
|
|
|
|
"""
|
|
|
|
curses.use_default_colors()
|
|
|
|
scr.erase()
|
|
|
|
scr.move(0, 0)
|
|
|
|
curses.curs_set(0)
|
|
|
|
curses.noecho()
|
|
|
|
|
|
|
|
width = scr.getmaxyx()[1]
|
|
|
|
|
|
|
|
for header in CENTERED_HEADERS:
|
|
|
|
centeredWrite(scr, header + '\n')
|
|
|
|
|
|
|
|
for header in OTHER_HEADERS:
|
|
|
|
slowWrite(scr, header + '\n')
|
|
|
|
|
2021-05-19 18:47:24 +00:00
|
|
|
for i in range(width):
|
2015-06-14 22:31:01 +00:00
|
|
|
scr.addch(curses.ACS_BSBS)
|
|
|
|
scr.refresh()
|
|
|
|
|
|
|
|
return makeSelection(scr)
|
|
|
|
|
|
|
|
def beginSelection():
|
|
|
|
"""
|
|
|
|
Initialize curses and start the boot process
|
|
|
|
"""
|
|
|
|
res = curses.wrapper(runSelection)
|
|
|
|
return res
|