You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
4.6 KiB
Python

10 years ago
#!/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()