117 lines
4.6 KiB
Python
117 lines
4.6 KiB
Python
|
#!/usr/bin/env python2.5
|
||
|
# -*- coding: utf-8 -*-
|
||
|
__author__ = "Johannes 'josch' Schauer <j.schauer@email.de>"
|
||
|
__version__ = "prototype"
|
||
|
__copyright__ = "Copyright (c) 2009 J. Schauer"
|
||
|
__license__ = "GPL3"
|
||
|
|
||
|
from epydial import *
|
||
|
|
||
|
class Station(object):
|
||
|
def __init__(self, canvas, num, station, arrival=None, arrival_track=None, departure=None, departure_track=None, train_type=None, train_id=None):
|
||
|
self.rect = evas.Rectangle(canvas, pos=(480/20, (640*2)/11+num*640/7), size=((480*18)/20, 640/9), color="#38ffffff")
|
||
|
self.rect.layer = 2
|
||
|
|
||
|
if arrival:
|
||
|
arrival = datetime.strptime(arrival, "%Y-%m-%dT%H:%M:%S").strftime("%H:%M")
|
||
|
label1_text = ("%s %s Gl. %s"%(station, arrival, arrival_track)).encode("utf8")
|
||
|
else:
|
||
|
label1_text = station
|
||
|
self.label1 = evas.Text(canvas, text=label1_text, font=("Sans,Edje-Vera", 26), color="#80ffffff")
|
||
|
self.label1.layer = 3
|
||
|
self.label1.pass_events = True
|
||
|
self.label1.pos = (480/20+4, (640*2)/11+num*640/7+2)
|
||
|
|
||
|
if departure:
|
||
|
departure = datetime.strptime(departure, "%Y-%m-%dT%H:%M:%S").strftime("%H:%M")
|
||
|
label2_text = "%s Gl. %s - %s %s"%(departure, departure_track, train_type, train_id)
|
||
|
else:
|
||
|
label2_text = ""
|
||
|
self.label2 = evas.Text(canvas, text=label2_text, font=("Sans,Edje-Vera", 26), color="#80ffffff")
|
||
|
self.label2.layer = 3
|
||
|
self.label2.pass_events = True
|
||
|
self.label2.pos = (480/20+4, (640*2)/11+num*640/7+34)
|
||
|
|
||
|
def show(self):
|
||
|
self.rect.show()
|
||
|
self.label1.show()
|
||
|
self.label2.show()
|
||
|
|
||
|
def hide(self):
|
||
|
self.rect.hide()
|
||
|
self.label1.hide()
|
||
|
self.label2.hide()
|
||
|
|
||
|
class TimetableScreen(object):
|
||
|
def register_pyneo_callbacks(self):
|
||
|
pass
|
||
|
|
||
|
def __init__(self, screen_manager):
|
||
|
self.buttons = {}
|
||
|
self.visible = False
|
||
|
self.canvas = screen_manager.get_evas()
|
||
|
|
||
|
self.bg = evas.Image(self.canvas, pos=(0, 0), size=(WIDTH, HEIGHT), file=PyneoController.set_bg_image)
|
||
|
self.bg.fill = 0, 0, WIDTH, HEIGHT
|
||
|
self.bg.layer = 0
|
||
|
|
||
|
self.headline = evas.Text(self.canvas, font=("Sans,Edje-Vera", 40), color="#808080")
|
||
|
self.headline.layer = 1
|
||
|
|
||
|
self.subheadline = evas.Text(self.canvas, font=("Sans:style=Bold,Edje-Vera", 30), color="#808080")
|
||
|
self.subheadline.layer = 1
|
||
|
|
||
|
for pos, text, action in ((0, "back", lambda source, event: PyneoController.show_dialer_screen()),
|
||
|
(2, "previous", lambda source, event: None),
|
||
|
(3, "next", lambda source, event: None)):
|
||
|
self.buttons[text] = self.init_button(text, (pos+1)*16+pos*100, 524, 100, 100, action)
|
||
|
|
||
|
self.stations = list()
|
||
|
self.get_tracks()
|
||
|
|
||
|
def init_button(self, name, x, y, dx, dy, action):
|
||
|
button = evas.Image(self.canvas, pos=(x,y), size=(dx,dy), file="/usr/share/epydial/data/themes_data/blackwhite/images/%s.png" % name)
|
||
|
button.fill = 0, 0, dx, dy
|
||
|
button.layer = 99
|
||
|
button.on_mouse_up_add(action)
|
||
|
return button
|
||
|
|
||
|
def get_tracks(self):
|
||
|
def ok_cb(newmap):
|
||
|
newmap =dedbusmap(newmap)
|
||
|
arrival = datetime.strptime(newmap['arrival'], "%Y-%m-%dT%H:%M:%S").strftime("%H:%M")
|
||
|
departure = datetime.strptime(newmap['departure'], "%Y-%m-%dT%H:%M:%S").strftime("%H:%M")
|
||
|
self.subheadline.text = "%s - %s (%s EUR)"%(departure, arrival, round(newmap.get('cost', 0)/100.0, 2))
|
||
|
self.subheadline.pos = ((480-self.subheadline.horiz_advance)/2, 70)
|
||
|
for num, s in enumerate(newmap['stations']):
|
||
|
self.stations.append(Station(self.canvas, num, **s))
|
||
|
if self.visible:
|
||
|
for station in self.stations:
|
||
|
station.show()
|
||
|
def error_cb(msg):
|
||
|
print "error:", msg
|
||
|
self.headline.text = "Karlsruhe - Düsseldorf"
|
||
|
self.headline.pos = ((480-self.headline.horiz_advance)/2, 12)
|
||
|
PyneoController.get_track("Karlsruhe", "Düsseldorf", ok_cb, error_cb)
|
||
|
|
||
|
|
||
|
def show(self):
|
||
|
self.visible = True
|
||
|
self.bg.show()
|
||
|
self.headline.show()
|
||
|
self.subheadline.show()
|
||
|
for station in self.stations:
|
||
|
station.show()
|
||
|
for button in self.buttons.values():
|
||
|
button.show()
|
||
|
|
||
|
def hide(self):
|
||
|
self.visible = False
|
||
|
self.bg.hide()
|
||
|
self.headline.hide()
|
||
|
self.subheadline.hide()
|
||
|
for station in self.stations:
|
||
|
station.hide()
|
||
|
for button in self.buttons.values():
|
||
|
button.hide()
|