This repository has been archived on 2026-05-22. You can view files and clone it, but cannot push or open issues or pull requests.
Files
InfoDisplay/markup/panel_script.py

77 lines
1.7 KiB
Python

from datetime import datetime
import pygame
from markup.countdown import get_events
from panel import Panel
from wxget import get_weather
pygame.font.init()
WHITE = (255, 255, 255)
GRAY = (175, 175, 175)
BLACK = (0, 0, 0)
class Font(object):
def __init__(self, name):
self.file = name
self.fonts = {}
def __getitem__(self, size):
if size not in self.fonts:
self.fonts[size] = pygame.font.Font(self.file, size)
return self.fonts[size]
roboto = Font('res/RobotoSlab-Regular.ttf')
def __do_eval(t):
try:
return eval(t)
except:
return t
def text(size=60, t="", do_eval=False):
if do_eval:
t = __do_eval(t)
return roboto[size].render(t, True, WHITE)
def time(size=60, fmt='%I:%M', strip='0'):
return roboto[size].render(format(datetime.now(), fmt).lstrip(strip), True, WHITE)
def weather(size=60, fmt='{current_conditions.temperature}\u00b0'):
return roboto[size].render(fmt.format(**get_weather()), True, WHITE)
def image(path="", do_eval=False):
if do_eval:
path = __do_eval(path)
try:
return pygame.image.load(path)
except:
return text(size=15, t=path)
def header():
es = get_events()
def item(i):
f = roboto[30]
e = es[i]
l = e.label
t = '{days}d {hours}h {minutes}m'.format(**e.time)
return Panel((1280 // len(es), 70), anchor=((i + 1) / (len(es) + 1), .5), children=[
Panel(f.render(l, True, WHITE), anchor=(.5, .5), pivot=(.5, .9)),
Panel(f.render(t, True, GRAY), anchor=(.5, .5), pivot=(.5, .1)),
])
return Panel((1280, 70), anchor=(.5, .5), children=[
item(i) for i in range(len(get_events()))
]).surf