3232from kivy .uix .button import Button
3333from kivy .uix .textinput import TextInput
3434from kivy .uix .dropdown import DropDown
35+ from kivy .uix .image import Image
3536from kivy .resources import resource_add_path , resource_find
3637
3738from my_kivy .create_uix import kivyUi
3839from my_kivy .coloredlabel import ColoredLabel
3940from domain .logic import colorHtmlToKivy
4041from kivy .config import Config
4142from kivy .app import App
43+ from kivy .clock import Clock
44+
45+ class MyImage (Image ):
46+ frame_counter = 0
47+ frame_number = 36 # my example GIF had 36 frames
48+
49+ def on_texture (self , instance , value ):
50+ if self .frame_counter == self .frame_number + 1 :
51+ self .frame_counter = 0
52+ self .frame_counter += 1
4253
4354class RootWidget (FloatLayout ):
4455
@@ -75,7 +86,7 @@ def __init__(self, **kwargs):
7586
7687 self .addresse_label = ColoredLabel (text = "Adresse Non trouvé" , color = colorHtmlToKivy ('#ffffff' ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
7788 self .essence_label = ColoredLabel (text = "Type d'essence non correct" , color = colorHtmlToKivy ('#ffffff' ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
78-
89+
7990 self .fuel_DropDown = DropDown ()
8091 self .btn_Gazole = Button (text = 'Gazole' , size_hint_y = None , height = 44 )
8192 self .btn_Gazole .bind (on_release = lambda btn_Gazole : self .fuel_DropDown .select (self .btn_Gazole .text ))
@@ -91,13 +102,10 @@ def __init__(self, **kwargs):
91102 self .btn_GPLc .bind (on_release = lambda btn_GPLc : self .fuel_DropDown .select (self .btn_GPLc .text ))
92103 self .button_DropDown = Button (text = "Carburant utilisé" , size_hint = (.16666667 , .15 ), pos_hint = {'x' : .66666667 , 'y' : .85 })
93104 self .button_DropDown .bind (on_release = self .fuel_DropDown .open )
94- self .fuel_DropDown .bind (on_select = lambda instance , x : setattr (self .button_DropDown , 'text' , x ))
95-
105+ self .fuel_DropDown .bind (on_select = lambda instance , x : setattr (self .button_DropDown , 'text' , x ))
96106 self .submitButton = Button (text = "Mettre à jour" , size_hint = (.16666667 , .15 ), pos_hint = {'x' : .833333333 , 'y' : .85 })
97- self .submitButton .bind (on_press = lambda instance : self .updateMapView (self .street_entry .text , self .post_code_entry .text , self .city_entry .text , self .radius_entry .text , self .button_DropDown .text , self .addresse_label , self .essence_label ))
98- self .download_data_label = ColoredLabel (text = "Récupération des données" , color = (1 ,1 ,1 ,1 ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
99- self .loading_label = ColoredLabel (text = "Traitement des données" , color = (1 ,1 ,1 ,1 ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
100-
107+ self .submitButton .bind (on_press = lambda instance : self .intermediate (self .street_entry .text , self .post_code_entry .text , self .city_entry .text , self .radius_entry .text , self .button_DropDown .text , self .addresse_label , self .essence_label ))
108+ self .bit_scripts_logo = MyImage (source = "image/Logo_Bit-Scripts.gif" , size_hint = (.1 , .1 ), pos_hint = {'x' : .01 , 'y' : .01 })
101109
102110 self .add_widget (self .submitButton )
103111 self .fuel_DropDown .add_widget (self .btn_Gazole )
@@ -115,6 +123,7 @@ def __init__(self, **kwargs):
115123 self .add_widget (self .city_entry )
116124 self .add_widget (self .radius_label )
117125 self .add_widget (self .radius_entry )
126+ self .add_widget (self .bit_scripts_logo )
118127 self .locator = Nominatim (user_agent = "low-fuel" )
119128
120129 def on_text (self , instance , value ):
@@ -130,20 +139,27 @@ def on_text_(self, instance, value):
130139 else :
131140 self .city_entry .text = ''
132141
133- def updateMapView (self , street_entry , post_code_entry , city_entry , radius_entry , fuel_entry , addresse_label , essence_label ):
142+ def intermediate (self , street_entry , post_code_entry , city_entry , radius_entry , button_DropDown , addresse_label , essence_label ):
143+ self .download_data_label = ColoredLabel (text = "Récupération des données" , color = (1 ,1 ,1 ,1 ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
144+ self .loading_label = ColoredLabel (text = "Traitement des données" , color = (1 ,1 ,1 ,1 ), background_color = (0.34509803921568627 ,0.34509803921568627 ,0.34509803921568627 ,.65 ), size_hint = (.4 ,.2 ), pos_hint = {'x' : .3 , 'y' : .4 })
145+ self .add_widget (self .download_data_label )
146+ Clock .schedule_once (lambda dt : self .next_intermediate (street_entry , post_code_entry , city_entry , radius_entry , button_DropDown , addresse_label , essence_label ), 0 )
147+
148+
149+ def next_intermediate (self , street_entry , post_code_entry , city_entry , radius_entry , fuel_entry , addresse_label , essence_label ):
134150 self .remove_widget (self .addresse_label )
135151 self .remove_widget (self .essence_label )
152+ Clock .schedule_once (lambda dt : self .next_update (street_entry , post_code_entry , city_entry , radius_entry , fuel_entry , addresse_label , essence_label ), 0 )
136153
137- self .add_widget (self .download_data_label )
138-
154+ def next_update (self , street_entry , post_code_entry , city_entry , radius_entry , fuel_entry , addresse_label , essence_label ):
139155 self .street_entry_post = street_entry
140156 self .post_code_entry_post = post_code_entry
141157 self .city_entry_post = city_entry
142158 self .radius_entry_post = radius_entry
143159 self .fuel_entry_post = fuel_entry
144- self .addresse_label_post = addresse_label
145- self .essence_label_post = essence_label
146-
160+ self .addresse_label = addresse_label
161+ self .essence_label = essence_label
162+
147163 self .points = []
148164
149165 self .address = f'{ self .street_entry_post } { self .post_code_entry_post } { self .city_entry_post } '
@@ -158,7 +174,7 @@ def updateMapView(self, street_entry, post_code_entry, city_entry, radius_entry,
158174 else :
159175 for c in list (self .children ):
160176 if c == self .addresse_label : self .remove_widget (self .addresse_label )
161- if self .fuel_entry_post != 'Gazole' and self .fuel_entry_post != 'SP98' and self .fuel_entry_post != 'SP95' and self .fuel_entry_post != 'GPLc' and self .fuel_entry_post != 'E10' and self .fuel_entry_post != 'E85' :
177+ if self .fuel_entry_post != 'Gazole' and self .fuel_entry_post != 'SP98' and self .fuel_entry_post != 'SP95' and self .fuel_entry_post != 'GPLc' and self .fuel_entry_post != 'E10' and self .fuel_entry_post != 'E85' :
162178 self .remove_widget (self .download_data_label )
163179 self .add_widget (self .essence_label )
164180 return None
@@ -181,9 +197,16 @@ def updateMapView(self, street_entry, post_code_entry, city_entry, radius_entry,
181197 self .path_of_file : str = 'info.gouv/prix-carburants.json'
182198 # TODO ajout irve : https://public.opendatasoft.com/api/records/1.0/search/?dataset=fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques-irve&q=&lang=fr&rows=20&facet=n_enseigne&facet=nbre_pdc&facet=puiss_max&facet=accessibilite&facet=nom_epci&facet=commune&facet=nom_reg&facet=nom_dep&geofilter.distance=47.439%2C+0.699%2C+5000
183199 self .remove_widget (self .download_data_label )
184-
200+ Clock .schedule_once (lambda dt : self .near_updateMapView (self .street_entry_post , self .post_code_entry_post , self .city_entry_post ), 0 )
201+
202+ def near_updateMapView (self , street_entry , post_code_entry , city_entry ):
185203 self .add_widget (self .loading_label )
204+ Clock .schedule_once (lambda dt : self .updateMapView (street_entry , post_code_entry , city_entry ), 0 )
186205
206+ def updateMapView (self , street_entry , post_code_entry , city_entry ):
207+ self .street_entry_post = street_entry
208+ self .post_code_entry_post = post_code_entry
209+ self .city_entry_post = city_entry
187210 self .parsejson = ParseJson (self .url_data , self .path_of_file , self .user_address )
188211
189212 self .my_sell_points : List [SellPoint ] = self .parsejson .station_list ()
@@ -247,7 +270,9 @@ def updateMapView(self, street_entry, post_code_entry, city_entry, radius_entry,
247270 self .points .append ((self .sellpoint .address [3 ], self .sellpoint .address [4 ], self .data_text , self .color ))
248271
249272 self .remove_widget (self .loading_label )
273+ Clock .schedule_once (lambda dt : self .end_of_update_mapview (), 0 )
250274
275+ def end_of_update_mapview (self ):
251276 kivy = kivyUi (self .points , self , self .mapview )
252277 kivy .createMarkerPopup (self .points )
253278 kivy .newLat = self .location [0 ]
0 commit comments