def yesno ( prompt = "Yes or no?", value = "yes" ): if value == "yes": answer = "[YES] no" selected = True elif value == "no": answer = "yes [NO]" selected = False else: raise ValueError("Incorrect value " + value) display = Display() display.message(prompt + "\n" + answer) while True: if display.button_select(): display.clear() return(selected) elif display.button_left() or display.button_right(): if selected: answer = "yes [NO]" selected = False else: answer = "[YES] no" selected = True display.message(prompt + "\n" + answer)
def text (prompt = "Enter text...", value = ""): maxlen = 16 if len(value) > maxlen: raise ValueError("Value too long") display = Display() letters = letter_choices() answer = [] column = 0 if value: for i in range(0, len(value)): answer.append(value[i]) else: for i in range (0, maxlen): answer.append(' ') display.message( prompt + "\n" + string.join(answer, '') ) display.move_cursor(col = column, row = 1) display.blink_cursor() while True: if display.button_select(): return( string.join(answer, '') ) elif display.button_left(): if column > 0: column -= 1 display.move_cursor(col = column, row = 1) elif display.button_right(): if column < 15: column += 1 display.move_cursor(col = column, row = 1) elif display.button_up(): letter = answer[column] index = letters.index(letter) if index < (len(letters) - 1): index += 1 else: index = 0 answer[column] = letters[index] display.message( prompt + "\n" + string.join(answer, '') ) display.move_cursor(col = column, row = 1) elif display.button_down(): letter = answer[column] index = letters.index(letter) if index > 0: index -= 1 else: index = len(letters) - 1 answer[column] = letters[index] display.message( prompt + "\n" + string.join(answer, '') ) display.move_cursor(col = column, row = 1)
def longtext (prompt = "Enter text...", value = ""): display = Display() letters = letter_choices() # possible character values cursor_column = 0 # the column where the cursor is at answer_column = 0 # the current column somewhere in the answer display_column = 0 # the column to start displaying at # initialize the answer answer = [] if value: for i in range(0, len(value)): answer.append(value[i]) else: answer.append(' ') display.message( prompt + "\n" + string.join(answer, '')[display_column:16] ) display.move_cursor(col = cursor_column, row = 1) display.blink_cursor() while True: if display.button_select(): return( string.join(answer, '').strip() ) elif display.button_left(): logging.debug("left") logging.debug( "before start column = " + str(display_column) ) logging.debug( "before answer column = " + str(answer_column) ) logging.debug( "before cursor column = " + str(cursor_column) ) if cursor_column > 0: logging.debug( "decrementing cursor column and moving cursor" ) cursor_column -= 1 display.move_cursor(col = cursor_column, row = 1) answer_column -= 1 elif answer_column > 0: logging.debug( "decrementing answer and start column and scrolling display" ) answer_column -= 1 display_column -= 1 display.message( prompt + "\n" + string.join(answer, '')[display_column:display_column+16] ) display.move_cursor(col = cursor_column, row = 1) else: logging.debug( "not moving any cursors, already at start of display and of answer" ) logging.debug( "after start column = " + str(display_column) ) logging.debug( "after answer column = " + str(answer_column) ) logging.debug( "after cursor column = " + str(cursor_column) ) elif display.button_right(): logging.debug( "right" ) logging.debug( "before start column = " + str(display_column) ) logging.debug( "before answer column = " + str(answer_column) ) logging.debug( "before cursor column = " + str(cursor_column) ) answer_column += 1 if answer_column == len(answer): logging.debug( "appending space" ) answer.append(' ') if cursor_column < 15: logging.debug( "incrementing cursor column and moving cursor" ) cursor_column += 1 display.move_cursor(col = cursor_column, row = 1) else: logging.debug( "incrementing start column and scrolling answer" ) display_column += 1 display.message( prompt + "\n" + string.join(answer, '')[display_column:display_column+16] ) display.move_cursor(col = cursor_column, row = 1) logging.debug( "after start column = " + str(display_column) ) logging.debug( "after answer column = " + str(answer_column) ) logging.debug( "after cursor column = " + str(cursor_column) ) elif display.button_up(): letter = answer[answer_column] index = letters.index(letter) if index < (len(letters) - 1): index += 1 else: index = 0 answer[answer_column] = letters[index] display.message( prompt + "\n" + string.join(answer, '')[display_column:display_column+16] ) display.move_cursor(col = cursor_column, row = 1) elif display.button_down(): letter = answer[answer_column] index = letters.index(letter) if index > 0: index -= 1 else: index = len(letters) - 1 answer[answer_column] = letters[index] display.message( prompt + "\n" + string.join(answer, '')[display_column:display_column+16] ) display.move_cursor(col = cursor_column, row = 1)
exit(0) signal.signal(signal.SIGINT, exit_handler) signal.signal(signal.SIGQUIT, exit_handler) signal.signal(signal.SIGTERM, exit_handler) display = Display() timefmt = "%Y/%m/%d\n%H:%M:%S" old_t = int(time.time()) display.message(time.strftime(timefmt)) while True: if display.button_select(): if Input.yesno(prompt = "Exit?" , value = "no"): display.stop() exit(0) if Input.yesno(prompt = "Reboot?" , value = "no"): display.message("Rebooting...") os.system("/sbin/shutdown -r now") time.sleep(1) exit(0) if Input.yesno(prompt = "Shutdown?" , value = "no"): display.message("Shutting down...") os.system("/sbin/shutdown -h -P now") time.sleep(1) exit(0)