From d8707c52aed5d4c48c82a2143834838299578104 Mon Sep 17 00:00:00 2001 From: Juke Date: Fri, 5 Feb 2010 03:52:45 +0100 Subject: [PATCH] VERSION 0.1.2 Correction indentation --- TODO | 13 +-- gtk_transilien.py | 247 ++++++++++++++++++++++++++--------------------------- 2 files changed, 128 insertions(+), 132 deletions(-) diff --git a/TODO b/TODO index c402dd5..dde4fcb 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,8 @@ 0.2.0 : - FIX : Intercepter les erreurs de Transilien.fr - FIX : Intercepter les erreurs Reseaux + TODO : Intercepter les erreurs de Transilien.fr + TODO : Intercepter les erreurs Reseaux TODO : Integrer python-conix TODO : Faire un widget sur le bureau - TODO : Modélisation Objet TODO : Integrer les bus RATP TODO : Integrer les prochains passage à une gare toute destination confondues TODO : Avoir la liste complete des gares dans un fichier @@ -20,15 +19,17 @@ TODO : Remplacer get_liste_train par un assesseur TODO : Remplacer get_liste_horaire par un assesseur TODO : Trier les gares par ordre alphabetique - FIX : Intercepter les entrées vides + TODO : Intercepter les entrées vides TODO : ajouter les argument à l'url avec httplib TODO : ajouter les quais TODO : ajouter les terminus TODO : enlever les print de debug - TODO : Corriger l'indentation TODO : corriger les noms des variables + TODO : corriger la taille des lignes + TODO : Fusionner liste horaire et liste train - + DONE 0.1.1 : Modélisation Objet + DONE 0.1.2 : Corriger l'indentation diff --git a/gtk_transilien.py b/gtk_transilien.py index fb8b156..9286149 100755 --- a/gtk_transilien.py +++ b/gtk_transilien.py @@ -16,148 +16,143 @@ initial_mode = FremantleRotation.AUTOMATIC class tableParser(HTMLParser.HTMLParser): - def __init__(self): - HTMLParser.HTMLParser.__init__(self) - self.table_horaires3 = False - self.code_de_mission = False - self.a_code_de_mission = False - self.heure_de_passage = False - self.liste_train = [] - self.liste_horaire = [] - - def handle_starttag(self, tag, attrs): - if (tag == 'table' and (dict(attrs)['class'] == 'horaires3')): - self.table_horaires3 = True - - elif self.table_horaires3 and tag == 'td': - try: - self.code_de_mission = ( - dict(attrs)['headers'] == 'Code_de_mission') - self.heure_de_passage = ( - dict(attrs)['headers'] == 'Heure_de_passage') - except KeyError: - if dict(attrs).has_key('headers'): - raise - else: - pass - else: - self.a_code_de_mission = (tag == 'a' and self.code_de_mission) - - def handle_data(self, data): - if self.a_code_de_mission: - self.liste_train.append(data.strip()) - if self.heure_de_passage: - self.liste_horaire.append(data.strip()) - - def handle_endtag(self,tag): - self.a_code_de_mission ^= (self.a_code_de_mission and tag == 'a') - self.heure_de_passage ^= (self.heure_de_passage and tag == 'td') + def __init__(self): + HTMLParser.HTMLParser.__init__(self) + self.table_horaires3 = False + self.code_de_mission = False + self.a_code_de_mission = False + self.heure_de_passage = False + self.liste_train = [] + self.liste_horaire = [] + + def handle_starttag(self, tag, attrs): + if (tag == 'table' and (dict(attrs)['class'] == 'horaires3')): + self.table_horaires3 = True + + elif self.table_horaires3 and tag == 'td': + try: + self.code_de_mission = ( + dict(attrs)['headers'] == 'Code_de_mission') + self.heure_de_passage = ( + dict(attrs)['headers'] == 'Heure_de_passage') + except KeyError: + if dict(attrs).has_key('headers'): + raise + else: + pass + else: + self.a_code_de_mission = (tag == 'a' and self.code_de_mission) + + def handle_data(self, data): + if self.a_code_de_mission: + self.liste_train.append(data.strip()) + if self.heure_de_passage: + self.liste_horaire.append(data.strip()) + + def handle_endtag(self,tag): + self.a_code_de_mission ^= (self.a_code_de_mission and tag == 'a') + self.heure_de_passage ^= (self.heure_de_passage and tag == 'td') class Trajet(object): - def __init__(self, gare_source, gare_dest): - self.gare_source = gare_source - self.gare_dest = gare_dest - self.parse() - def get_liste_train(self): - return self.p.liste_train - def get_liste_horaire(self): - return self.p.liste_horaire - def parse(self): - self.p = tableParser() - print "URL:" - print 'http://www.transilien.com/web/ITProchainsTrainsAvecDest.do?codeTr3aDepart='+self.gare_source.shortname+'&codeTr3aDest='+self.gare_dest.shortname+'&urlModule=/site/pid/184&gareAcc=true' - self.p.feed(urllib2.urlopen('http://www.transilien.com/web/ITProchainsTrainsAvecDest.do?codeTr3aDepart='+self.gare_source.shortname+'&codeTr3aDest='+self.gare_dest.shortname+'&urlModule=/site/pid/184&gareAcc=true').read()) + def __init__(self, gare_source, gare_dest): + self.gare_source = gare_source + self.gare_dest = gare_dest + self.parse() + def get_liste_train(self): + return self.p.liste_train + def get_liste_horaire(self): + return self.p.liste_horaire + def parse(self): + self.p = tableParser() + print "URL:" + print 'http://www.transilien.com/web/ITProchainsTrainsAvecDest.do?codeTr3aDepart='+self.gare_source.shortname+'&codeTr3aDest='+self.gare_dest.shortname+'&urlModule=/site/pid/184&gareAcc=true' + self.p.feed(urllib2.urlopen('http://www.transilien.com/web/ITProchainsTrainsAvecDest.do?codeTr3aDepart='+self.gare_source.shortname+'&codeTr3aDest='+self.gare_dest.shortname+'&urlModule=/site/pid/184&gareAcc=true').read()) class ConfFile(object): - def __init__(self, fichier): - self.c = ConfigParser.ConfigParser() - self.c.read(fichier) - def get_short_name(self, longname): - return self.c.get('ListeDesGares', longname) - def get_liste_des_gares(self): - return self.c.items('ListeDesGares') + def __init__(self, fichier): + self.c = ConfigParser.ConfigParser() + self.c.read(fichier) + def get_short_name(self, longname): + return self.c.get('ListeDesGares', longname) + def get_liste_des_gares(self): + return self.c.items('ListeDesGares') class LongNameGare(object): - def __init__(self, longname): - self.longname = longname - def get_gare(self, conffile): - short_name = conffile.get_short_name(self.longname) - return Gare(short_name) + def __init__(self, longname): + self.longname = longname + def get_gare(self, conffile): + short_name = conffile.get_short_name(self.longname) + return Gare(short_name) class Gare(object): - def __init__(self, shortname): - self.shortname = shortname + def __init__(self, shortname): + self.shortname = shortname class TransilienUI: - def __init__(self): - mainWindow = hildon.Window() - mainWindow.set_title("Horaires des Prochains Trains") - mainWindow.connect("destroy", self.on_mainWindow_destroy) + def __init__(self): + mainWindow = hildon.Window() + mainWindow.set_title("Horaires des Prochains Trains") + mainWindow.connect("destroy", self.on_mainWindow_destroy) - rotation_object = FremantleRotation(app_name, mainWindow, app_version, initial_mode) - refreshButton = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, + rotation_object = FremantleRotation(app_name, mainWindow, app_version, initial_mode) + refreshButton = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_HORIZONTAL, "Actualiser") - refreshButton.connect("clicked", self.on_refreshButton_clicked) - - self.treestore = gtk.TreeStore(str, str) - self.treeview = gtk.TreeView(self.treestore) - - self.tvcolumn_train = gtk.TreeViewColumn('Train', gtk.CellRendererText(), text=0) - self.treeview.append_column(self.tvcolumn_train) - - self.tvcolumn_horaire = gtk.TreeViewColumn('Horaire', gtk.CellRendererText(), text=1) - self.treeview.append_column(self.tvcolumn_horaire) - - - picker_button_source = hildon.PickerButton(gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL) - picker_button_source.set_title("Gare de Depart") - self.combo_source = hildon.TouchSelectorEntry(text=True) - self.combo_dest = hildon.TouchSelectorEntry(text=True) - - for i in ConfFile('example.cfg').get_liste_des_gares(): - self.combo_source.append_text(i[0]) - self.combo_dest.append_text(i[0]) - picker_button_source.set_selector(self.combo_source) - - - picker_button_dest = hildon.PickerButton(gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL) - picker_button_dest.set_title("Gare d'arrivee") - picker_button_dest.set_selector(self.combo_dest) - - vBox = gtk.VBox() - hBox = gtk.HBox() - vBox.pack_start(hBox) - hBox.pack_start(picker_button_source) - hBox.pack_start(picker_button_dest) - vBox.pack_start(self.treeview) - vBox.pack_start(refreshButton) - - - mainWindow.add(vBox) - mainWindow.show_all() - - def on_mainWindow_destroy(self, widget): - gtk.main_quit() - - def on_refreshButton_clicked(self, widget): - self.treestore.clear() - gare_source = LongNameGare(self.combo_source.get_current_text()).get_gare(ConfFile('example.cfg')) - gare_dest = LongNameGare(self.combo_dest.get_current_text()).get_gare(ConfFile('example.cfg')) - trajet = Trajet(gare_source, gare_dest) - print trajet - print trajet.get_liste_train() - z=0 - for i in trajet.get_liste_train(): - liste_horaire = trajet.get_liste_horaire() - print liste_horaire[z] - self.treestore.append(None, [i, liste_horaire[z]]) - z += 1 + refreshButton.connect("clicked", self.on_refreshButton_clicked) + + self.treestore = gtk.TreeStore(str, str) + self.treeview = gtk.TreeView(self.treestore) + + self.tvcolumn_train = gtk.TreeViewColumn('Train', gtk.CellRendererText(), text=0) + self.treeview.append_column(self.tvcolumn_train) + + self.tvcolumn_horaire = gtk.TreeViewColumn('Horaire', gtk.CellRendererText(), text=1) + self.treeview.append_column(self.tvcolumn_horaire) + + + picker_button_source = hildon.PickerButton(gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL) + picker_button_source.set_title("Gare de Depart") + self.combo_source = hildon.TouchSelectorEntry(text=True) + self.combo_dest = hildon.TouchSelectorEntry(text=True) + + for i in ConfFile('example.cfg').get_liste_des_gares(): + self.combo_source.append_text(i[0]) + self.combo_dest.append_text(i[0]) + picker_button_source.set_selector(self.combo_source) + + + picker_button_dest = hildon.PickerButton(gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL) + picker_button_dest.set_title("Gare d'arrivee") + picker_button_dest.set_selector(self.combo_dest) + + vBox = gtk.VBox() + hBox = gtk.HBox() + vBox.pack_start(hBox) + hBox.pack_start(picker_button_source) + hBox.pack_start(picker_button_dest) + vBox.pack_start(self.treeview) + vBox.pack_start(refreshButton) + + + mainWindow.add(vBox) + mainWindow.show_all() + + def on_mainWindow_destroy(self, widget): + gtk.main_quit() + + def on_refreshButton_clicked(self, widget): + self.treestore.clear() + trajet = Trajet(LongNameGare(self.combo_source.get_current_text()).get_gare(ConfFile('example.cfg')), LongNameGare(self.combo_dest.get_current_text()).get_gare(ConfFile('example.cfg'))) + z=0 + for i in trajet.get_liste_train(): + liste_horaire = trajet.get_liste_horaire() + self.treestore.append(None, [i, liste_horaire[z]]) + z += 1 if __name__ == "__main__": - TransilienUI() - gtk.main() + TransilienUI() + gtk.main() -- 1.7.9.5