base version
[pystan] / debian / pystan / usr / lib / python2.5 / site-packages / pystan / lib / gui.py
diff --git a/debian/pystan/usr/lib/python2.5/site-packages/pystan/lib/gui.py b/debian/pystan/usr/lib/python2.5/site-packages/pystan/lib/gui.py
new file mode 100644 (file)
index 0000000..72caa77
--- /dev/null
@@ -0,0 +1,131 @@
+# -*- coding: UTF-8 -*-
+
+import gtk
+import hildon
+import webbrowser
+
+from stan import STAN
+from timetable import StanTimetable
+
+class StanGUI(hildon.Program):
+    #
+    def __init__(self):
+        hildon.Program.__init__(self)
+        self.stan = STAN()
+        self.window = hildon.Window()
+        self.window.set_title('pySTAN')
+        self.window.connect("destroy", gtk.main_quit)
+        self.add_window(self.window)
+
+        self.tabs = self.main_tabs()
+        self.window.add(self.tabs)
+        #
+        self.last_station = False
+
+    def main_tabs(self):
+       tabs = gtk.Notebook()
+       tabs.set_tab_pos(gtk.POS_TOP)
+       tabs.append_page(self.tab_lines(), gtk.Label('Par lignes'))
+       #tabs.append_page(self.tab_stations(), gtk.Label('Par arrets'))
+        #tabs.append_page(self.tab_search(), gtk.Label('Recherche'))
+       return tabs
+        #
+    def tab_search(self):
+       tab_search = gtk.Frame(None) #'Recherche de trajet')
+
+        from_location = gtk.Entry()
+        from_location_label = gtk.Label(u"Départ")
+        from_city = gtk.Entry()
+        from_city_label = gtk.Label(u"à")
+
+        to_location = gtk.Entry()
+        to_location_label = gtk.Label(u"Arrivée")
+        to_city = gtk.Entry()
+        to_city_label = gtk.Label(u"à")
+
+        datetime_select = gtk.Calendar()
+        datetime_select.display_options(gtk.CALENDAR_SHOW_DAY_NAMES | gtk.CALENDAR_WEEK_START_MONDAY)
+
+        restriction = gtk.Combo()
+        restriction.set_popdown_strings([u"partir après", u"arriver avant"])
+
+        vbox = gtk.VBox()
+        vbox.add(from_location_label)
+        vbox.add(from_location)
+        vbox.add(from_city)
+        vbox.add(to_location_label)
+        vbox.add(to_location)
+        vbox.add(to_city)
+
+        vbox.add(datetime_select)
+        vbox.add(restriction)
+
+        tab_search.add(vbox)
+
+        return tab_search
+
+    def tab_lines(self):
+       tab_lines = tab_lines = gtk.Frame(None) #'Recherche par lignes')
+
+       list_lines = gtk.combo_box_new_text()
+        list_lines.connect('changed', self.show_line_timetable)
+
+        for line in self.stan.lines():
+            list_lines.append_text( '-'.join(line['numbers']) + "\t" + line['name'] )
+
+        vbox = gtk.VBox()
+
+        alignment_list = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=1.0, yscale=0.10)
+        alignment_list.add(list_lines)
+       vbox.add(alignment_list)
+
+        self.timetable = StanTimetable()
+        self.timetable.create()
+        self.timetable.set_activated_callback(self.timetable_row_clicked)
+
+        alignment_tt = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=1.0, yscale=0.90)
+        alignment_tt.add(self.timetable)
+        vbox.add(alignment_tt)
+
+        tab_lines.add(vbox)
+       return tab_lines
+
+    def show_line_timetable(self, selection):
+        self.timetable.load( self.stan.lines()[selection.get_active()], '08/03/2009', '12' )
+
+    def timetable_row_clicked(self, station_name):
+        if self.last_station != station_name:
+            if self.last_station != False:
+                self.tabs.remove(self.tab_map)
+            self.last_station = station_name
+            self.tab_map = self.tab_geomap(station=station_name)
+            self.tabs.append_page(self.tab_map, gtk.Label(station_name))
+            self.tabs.show_all()
+            self.tabs.set_current_page(1)
+
+    def tab_stations(self):
+       tab_stations = gtk.Frame(None) #'Recherche par arrets')
+
+       list_stations = gtk.Combo()
+       list_stations.set_popdown_strings([])
+
+       tab_stations.add(list_stations)
+
+       return tab_stations
+
+    def tab_geomap(self, station):
+        tab_map = gtk.Frame(None)
+        map_button = gtk.Button()
+        #map_label = gtk.Label(u"Link to map")
+        map_button.connect('clicked', self.open_map, 'http://www.google.fr')
+
+        tab_map.add(map_button)
+        return tab_map
+
+    def open_map(self, data, url):
+        webbrowser.open(url)
+
+    def run(self):
+       self.window.show_all()
+       gtk.main()
+