60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
from datetime import datetime
|
|
|
|
import pygame
|
|
|
|
from 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)
|
|
|
|
font = {
|
|
'RobotoSlab': {
|
|
30: pygame.font.Font("res/RobotoSlab-Regular.ttf", 30),
|
|
45: pygame.font.Font("res/RobotoSlab-Regular.ttf", 45),
|
|
60: pygame.font.Font("res/RobotoSlab-Regular.ttf", 60),
|
|
90: pygame.font.Font("res/RobotoSlab-Regular.ttf", 90),
|
|
360: pygame.font.Font("res/RobotoSlab-Regular.ttf", 360),
|
|
}
|
|
}
|
|
|
|
|
|
def time():
|
|
return font['RobotoSlab'][360].render(format(datetime.now(), '%I:%H').lstrip('0'), True, WHITE)
|
|
|
|
|
|
def date():
|
|
return font['RobotoSlab'][60].render(format(datetime.now(), '%A, %B %d'), True, GRAY)
|
|
|
|
|
|
def temperature():
|
|
f = font['RobotoSlab'][90]
|
|
return f.render('{0[current_conditions][temperature]}\u00b0'.format(get_weather()), True, WHITE)
|
|
|
|
|
|
def icon():
|
|
return pygame.image.load('res/png/12.png')
|
|
|
|
|
|
def header():
|
|
es = get_events()
|
|
|
|
def item(i):
|
|
f = font['RobotoSlab'][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
|