122 lines
4.6 KiB
Python
122 lines
4.6 KiB
Python
import badger2040
|
|
import os
|
|
import badger_os
|
|
from widgets import draw_window, pprint, ptitle, plength, ppara, button, draw_ui
|
|
from random import random
|
|
|
|
IMAGE_WIDTH = 96
|
|
IMAGE_HEIGHT = 96
|
|
DELTA = 0
|
|
|
|
# Check that the fortune directory exists, if not, make it
|
|
try:
|
|
os.mkdir("fortune")
|
|
except OSError:
|
|
pass
|
|
|
|
display = badger2040.Badger2040()
|
|
display.update_speed(badger2040.UPDATE_FAST)
|
|
|
|
file = "cookie.txt"
|
|
cookies = open("fortune/cookie.txt", "r").read().split("%\n")
|
|
total_cookies = len(cookies)
|
|
|
|
state = {
|
|
"running": "badge_app",
|
|
}
|
|
|
|
IMAGE_WIDTH = 64
|
|
IMAGE_HEIGHT = 64
|
|
|
|
def render():
|
|
display.pen(15)
|
|
display.thickness(1)
|
|
display.rectangle(12, 42, 222, 84)
|
|
|
|
display.pen(0)
|
|
display.thickness(1)
|
|
n = int(random()*total_cookies)
|
|
print(f"Quote {n}")
|
|
text = cookies[n].strip().replace("\n", " ").replace("\t\t", " ").replace("\t", " ")
|
|
|
|
ppara(display, text, 12, 42, 222, 0)
|
|
display.update()
|
|
|
|
def draw_clippy():
|
|
x = 1
|
|
y = 21
|
|
width = 294
|
|
height = 106
|
|
draw_window(display, x, y, width, height, " Special ")
|
|
|
|
clippy_dat = bytearray(int(IMAGE_WIDTH * IMAGE_HEIGHT / 8))
|
|
open(f"images/clippy.bin", "rb").readinto(clippy_dat)
|
|
display.image(clippy_dat, IMAGE_WIDTH, IMAGE_HEIGHT, 212, 56)
|
|
|
|
# scrollbars
|
|
display.pen(0)
|
|
display.thickness(1)
|
|
scroll_size = 14
|
|
title_height = 11
|
|
display.rectangle(x + width - scroll_size - 1, y + title_height, scroll_size + 1, scroll_size)
|
|
display.rectangle(x + width - scroll_size - 1, y + height - scroll_size, scroll_size + 1, scroll_size)
|
|
display.rectangle(x + width - scroll_size - 1, y + title_height + scroll_size, scroll_size + 1, height - title_height)
|
|
|
|
display.pen(15)
|
|
display.rectangle(x + width - scroll_size, y + title_height + 1, scroll_size - 1, scroll_size - 2)
|
|
display.rectangle(x + width - scroll_size, y + height - scroll_size + 1, scroll_size - 1, scroll_size - 2)
|
|
display.pen(12)
|
|
display.rectangle(x + width - scroll_size, y + title_height + scroll_size, scroll_size - 1, height - 2 * scroll_size - title_height)
|
|
|
|
# arrows
|
|
display.pen(0)
|
|
# top
|
|
display.line(x + width - scroll_size // 2 - 1, y + title_height + 2, x + width - scroll_size // 2 - 7, y + title_height + 8)
|
|
display.line(x + width - scroll_size // 2 - 1, y + title_height + 3, x + width - scroll_size // 2 - 6, y + title_height + 8)
|
|
display.line(x + width - scroll_size // 2 - 1, y + title_height + 2, x + width - scroll_size // 2 + 5, y + title_height + 8)
|
|
display.line(x + width - scroll_size // 2 - 1, y + title_height + 3, x + width - scroll_size // 2 + 4, y + title_height + 8)
|
|
display.line(x + width - scroll_size // 2 - 4, y + title_height + 7, x + width - scroll_size // 2 - 4, y + title_height + 12)
|
|
display.line(x + width - scroll_size // 2 + 2, y + title_height + 7, x + width - scroll_size // 2 + 2, y + title_height + 12)
|
|
display.line(x + width - scroll_size // 2 - 4, y + title_height + 11, x + width - scroll_size // 2 + 3, y + title_height + 11)
|
|
|
|
# bottom
|
|
display.line(x + width - scroll_size // 2 - 1, y + height - 3, x + width - scroll_size // 2 - 7, y + height - 9)
|
|
display.line(x + width - scroll_size // 2 - 1, y + height - 4, x + width - scroll_size // 2 - 6, y + height - 9)
|
|
display.line(x + width - scroll_size // 2 - 1, y + height - 3, x + width - scroll_size // 2 + 5, y + height - 9)
|
|
display.line(x + width - scroll_size // 2 - 1, y + height - 4, x + width - scroll_size // 2 + 4, y + height - 9)
|
|
display.line(x + width - scroll_size // 2 - 4, y + height - 8, x + width - scroll_size // 2 - 4, y + height - 13)
|
|
display.line(x + width - scroll_size // 2 + 2, y + height - 8, x + width - scroll_size // 2 + 2, y + height - 13)
|
|
display.line(x + width - scroll_size // 2 - 4, y + height - 12, x + width - scroll_size // 2 + 3, y + height - 12)
|
|
|
|
def draw_elements():
|
|
display.pen(15)
|
|
display.clear()
|
|
|
|
draw_ui(display, "Special")
|
|
|
|
draw_clippy()
|
|
|
|
changed = not badger2040.woken_by_button()
|
|
|
|
draw_elements()
|
|
|
|
while True:
|
|
if display.pressed(badger2040.BUTTON_A):
|
|
changed = True
|
|
button(display, badger2040.BUTTON_A)
|
|
if display.pressed(badger2040.BUTTON_B):
|
|
changed = True
|
|
button(display, badger2040.BUTTON_B)
|
|
if display.pressed(badger2040.BUTTON_C) or display.pressed(badger2040.BUTTON_UP) or display.pressed(badger2040.BUTTON_DOWN):
|
|
changed = True
|
|
# button(display, badger2040.BUTTON_C)
|
|
|
|
if changed:
|
|
display.led(128)
|
|
render()
|
|
badger_os.state_save("fortune", state)
|
|
display.led(0)
|
|
changed = False
|
|
|
|
display.halt()
|