Repository URL to install this package:
|
Version:
2.1.2 ▾
|
import types
from modules.pages.homepage import *
from modules.pages.page import *
from modules.pages.simpletable import *
from modules.constants import (
BUTTONS_FILE,
)
class Button(object):
def __init__(self, g_vars, menu):
self.homepage_obj = HomePage(g_vars)
self.page_obj = Page(g_vars)
self.simple_table_obj = SimpleTable(g_vars)
#######################################
# Actions taken when butons pressed
#######################################
def menu_down(self, g_vars, menu):
# If we are in a table, scroll down (unless at bottom of list)
if g_vars['display_state'] == 'page':
g_vars['current_scroll_selection'] += 1
return
# Menu not currently shown, do nothing
if g_vars['display_state'] != 'menu':
return
# pop the last menu list item, increment & push back on
current_selection = g_vars['current_menu_location'].pop()
current_selection = current_selection + 1
g_vars['current_menu_location'].append(current_selection)
self.page_obj.draw_page(g_vars, menu)
def menu_right(self, g_vars, menu):
# make sure we know speedtest is done
g_vars['speedtest_status'] = False
# If we are in a table, scroll up (unless at top of list)
if g_vars['display_state'] == 'page':
if g_vars['current_scroll_selection'] == 0:
return
else:
g_vars['current_scroll_selection'] -= 1
return
# Check if the "action" field at the current location is an
# array or a function.
# if we have an array, append the current selection and re-draw menu
if (type(g_vars['option_selected']) is list):
g_vars['current_menu_location'].append(0)
self.page_obj.draw_page(g_vars, menu)
elif (isinstance(g_vars['option_selected'], types.FunctionType)):
# if we have a function (dispatcher), execute it
g_vars['display_state'] = 'page'
g_vars['option_selected']()
def menu_left(self, g_vars, menu):
# If we're in a table we need to exit, reset table scroll counters, reset
# result cache and draw the menu for our current level
if g_vars['display_state'] == 'page':
g_vars['current_scroll_selection'] = 0
g_vars['table_list_length'] = 0
g_vars['display_state'] = 'menu'
self.page_obj.draw_page(g_vars, menu)
g_vars['result_cache'] = False
return
if g_vars['display_state'] == 'menu':
# check to make sure we aren't at top of menu structure
if len(g_vars['current_menu_location']) == 1:
# If we're at the top and hit exit (back) button, revert to start-up state
g_vars['start_up'] = True
g_vars['current_menu_location'] = [0]
self.homepage_obj.home_page(g_vars, menu)
else:
g_vars['current_menu_location'].pop()
self.page_obj.draw_page(g_vars, menu)
else:
g_vars['display_state'] = 'menu'
self.page_obj.draw_page(g_vars, menu)
def go_up(self, g_vars, menu):
# executed when the back navigation item is selected
# (e.g. "Cancel") - this is not a button press action
g_vars['display_state'] = 'menu'
if len(g_vars['current_menu_location']) == 1:
# we must be at top level, do nothing
return
else:
# Take off last level of menu structure to go up
# Set index to 0 so top menu item selected
g_vars['current_menu_location'].pop()
g_vars['current_menu_location'][-1] = 0
self.page_obj.draw_page(g_vars, menu)
def button_set(self, g_vars, keyword, results):
with open(BUTTONS_FILE, 'w') as f:
f.write(keyword)
g_vars['key_map'] = keyword
self.simple_table_obj.display_simple_table(g_vars, results, back_button_req=1)
def buttons_classic(self, g_vars):
self.button_set(g_vars, 'classic', ['Classic mode', 'selected'])
def buttons_intuitive(self, g_vars):
self.button_set(g_vars, 'alt', ['Intuit mode', 'selected'])
def buttons_symbol(self, g_vars):
self.button_set(g_vars, 'symbols', ['Symbols mode', 'selected'])