diff --git a/preload/menu.py b/preload/menu.py index 94d4d63f03686b3bbf0e19181678e13eff732065..127e003ef60bd2a1d548d5d45f9bc7c33ed8f5b8 100644 --- a/preload/menu.py +++ b/preload/menu.py @@ -17,12 +17,14 @@ BUTTON_TIMER_POPPED = -1 COLOR1, COLOR2 = (color.CHAOSBLUE_DARK, color.CHAOSBLUE) MAXCHARS = 11 + def create_folders(): try: os.mkdir("/apps") except: pass + def read_metadata(app_folder): try: info_file = "/apps/%s/metadata.json" % (app_folder) @@ -31,7 +33,14 @@ def read_metadata(app_folder): return ujson.loads(information) except BaseException as e: sys.print_exception(e) - return {'author':'', 'name':app_folder, 'description':'', 'category':'', 'revision': 0} + return { + "author": "", + "name": app_folder, + "descriptionr": "", + "category": "", + "revision": 0, + } + def list_apps(): """Create a list of available apps.""" @@ -40,26 +49,60 @@ def list_apps(): # add main application for mainFile in os.listdir("/"): if mainFile == "main.py": - apps.append(["/main.py", {'author':'', 'name':'Main Clock', 'description':'', 'category':'', 'revision': 0}]) + apps.append( + [ + "/main.py", + { + "author": "card10badge Team", + "name": "Main Clock", + "description": "", + "category": "", + "revision": 0, + }, + ] + ) # list all hatchary style apps (not .elf and not .py) # with or without metadata.json for appFolder in sorted(os.listdir("/apps")): - if not(appFolder.endswith(".py") or appFolder.endswith(".elf")): + if not (appFolder.endswith(".py") or appFolder.endswith(".elf")): apps.append(["/apps/%s/__init__.py" % appFolder, read_metadata(appFolder)]) # list simple python scripts for pyFile in sorted(os.listdir("/apps")): if pyFile.endswith(".py"): - apps.append(["/apps/%s" % pyFile, {'author':'', 'name':pyFile, 'description':'', 'category':'', 'revision': 0}]) + apps.append( + [ + "/apps/%s" % pyFile, + { + "author": "", + "name": pyFile, + "description": "", + "category": "", + "revision": 0, + }, + ] + ) # list simple elf binaries for elfFile in sorted(os.listdir("/apps")): if elfFile.endswith(".elf"): - apps.append(["/apps/%s" % elfFile, {'author':'', 'name':elfFile, 'description':'', 'category':'', 'revision': 0}]) + apps.append( + [ + "/apps/%s" % elfFile, + { + "author": "", + "name": elfFile, + "description": "", + "category": "", + "revision": 0, + }, + ] + ) return apps + def button_events(timeout=0): """Iterate over button presses (event-loop).""" yield 0 @@ -90,19 +133,21 @@ def button_events(timeout=0): utime.sleep_ms(10) -def triangle(disp, x, y, left, scale=6, color=[255,0,0]): + +def triangle(disp, x, y, left, scale=6, color=[255, 0, 0]): """Draw a triangle to show there's more text in this line""" yf = 1 if left else -1 disp.line(x - scale * yf, int(y + scale / 2), x, y, col=color) disp.line(x, y, x, y + scale, col=color) disp.line(x, y + scale, x - scale * yf, y + int(scale / 2), col=color) + def draw_menu(disp, applist, pos, appcount, lineoffset): disp.clear() start = 0 if pos > 0: - start = pos-1 + start = pos - 1 if start + 4 > appcount: start = appcount - 4 if start < 0: @@ -113,24 +158,31 @@ def draw_menu(disp, applist, pos, appcount, lineoffset): break if i >= start: disp.rect( - 0, (i - start) * 20, 159, (i - start) * 20 + 20, - col=COLOR1 if i == pos else COLOR2 + 0, + (i - start) * 20, + 159, + (i - start) * 20 + 20, + col=COLOR1 if i == pos else COLOR2, ) - line = app[1]['name'] + line = app[1]["name"] linelength = len(line) off = 0 # calc line offset for scrolling if i == pos and linelength > (MAXCHARS - 1) and lineoffset > 0: - off = lineoffset if lineoffset + (MAXCHARS - 1) < linelength else linelength - (MAXCHARS - 1) + off = ( + lineoffset + if lineoffset + (MAXCHARS - 1) < linelength + else linelength - (MAXCHARS - 1) + ) if lineoffset > linelength: off = 0 disp.print( - " " + line[off:(off+(MAXCHARS - 1))], + " " + line[off : (off + (MAXCHARS - 1))], posy=(i - start) * 20, - bg=COLOR1 if i == pos else COLOR2 + bg=COLOR1 if i == pos else COLOR2, ) if i == pos: disp.print(">", posy=(i - start) * 20, fg=color.COMMYELLOW, bg=COLOR1) @@ -191,7 +243,10 @@ def main(): elif ev == BUTTON_TIMER_POPPED: timercountpopped += 1 - if timercountpopped >= timerstartscroll and (timercountpopped - timerstartscroll) % timerscrollspeed == 0: + if ( + timercountpopped >= timerstartscroll + and (timercountpopped - timerstartscroll) % timerscrollspeed == 0 + ): lineoffset += 1 elif ev == buttons.TOP_RIGHT: