EMF_Camp_Badge/tildr/main.py

86 lines
2.0 KiB
Python

""" Tildr Dating
"""
___title___ = "Tildr Dating"
___license___ = "MIT"
___dependencies___ = ["wifi", "http", "ugfx_helper", "sleep", "dialogs", "sim800", "database"]
___categories___ = ["Other"]
___bootstrapped___ = False
import app, buttons, ugfx, ugfx_helper, sleep, http, dialogs, sim800, database, ujson
from tilda import Buttons
from tildr.profile import get_profile
from tildr.shared import clear
from tildr import splash, profile, person, nomore
api_url = "http://emf2018.us-east-2.elasticbeanstalk.com"
ugfx_helper.init()
ugfx.clear(ugfx.html_color(0x000000))
style = ugfx.Style()
style.set_enabled([ugfx.WHITE, ugfx.WHITE, ugfx.html_color(0x888888), ugfx.html_color(0x444444)])
style.set_background(ugfx.html_color(0x000000))
ugfx.set_default_style(style)
def error_screen(state):
ugfx.text(5, 100, "Error: try again later :(", ugfx.WHITE)
def error_actions(state):
if buttons.is_triggered(Buttons.BTN_A):
state['next'] = "SPLASH"
screens = {
'SPLASH': {'render': splash.screen, 'actions': splash.actions},
'PROFILE': {'render': profile.screen, 'actions': profile.actions},
'ERROR': {'render': error_screen, 'actions': error_actions},
'NEXT_PERSON': {'render': person.screen, 'actions': person.actions},
'NO_MORE': {'render': nomore.screen, 'actions': nomore.actions}
}
state = {
'api': api_url,
'running': True,
'screen': None,
'next': "SPLASH",
'ui': [],
'profile': None
}
def destroy(state):
for item in state['ui']:
try:
item.hide()
except:
pass
item.destroy()
state['ui'] = []
state['profile'] = get_profile()
while state['running']:
# Move to next screen
if state['next']:
destroy(state)
nxt = state['next']
state['screen'] = nxt
state['next'] = None
clear()
screens[nxt]['render'](state)
sleep.wfi()
s = state['screen']
screens[s]['actions'](state)
if buttons.is_triggered(Buttons.BTN_Menu):
state['running'] = False
app.restart_to_default()