save settings in pickle for future sessions
This commit is contained in:
parent
e40f5776c4
commit
3069e37d28
@ -85,7 +85,7 @@ fullscreen = 0
|
|||||||
#android.presplash_color = #FFFFFF
|
#android.presplash_color = #FFFFFF
|
||||||
|
|
||||||
# (list) Permissions
|
# (list) Permissions
|
||||||
android.permissions = INTERNET,ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,WAKE_LOCK
|
android.permissions = INTERNET,ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,WAKE_LOCK,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
|
||||||
|
|
||||||
# (int) Target Android API, should be as high as possible.
|
# (int) Target Android API, should be as high as possible.
|
||||||
#android.api = 27
|
#android.api = 27
|
||||||
|
|||||||
@ -166,7 +166,7 @@
|
|||||||
max: 0.99
|
max: 0.99
|
||||||
step: 0.05
|
step: 0.05
|
||||||
orientation: 'horizontal'
|
orientation: 'horizontal'
|
||||||
value: 0.88
|
value: app.session_data['settings_smoothing']
|
||||||
on_value: app.set_smoothing()
|
on_value: app.set_smoothing()
|
||||||
|
|
||||||
BackgroundLabel:
|
BackgroundLabel:
|
||||||
@ -182,7 +182,7 @@
|
|||||||
max: 0.9
|
max: 0.9
|
||||||
step: 0.05
|
step: 0.05
|
||||||
orientation: 'horizontal'
|
orientation: 'horizontal'
|
||||||
value: 0.777
|
value: app.session_data['settings_compass_update']
|
||||||
on_value: app.set_compass_update()
|
on_value: app.set_compass_update()
|
||||||
|
|
||||||
BackgroundLabel:
|
BackgroundLabel:
|
||||||
|
|||||||
40
main.py
40
main.py
@ -15,6 +15,8 @@ from math import atan2, sin, cos, degrees, floor
|
|||||||
|
|
||||||
from geopy.distance import geodesic
|
from geopy.distance import geodesic
|
||||||
|
|
||||||
|
from os import path
|
||||||
|
import pickle
|
||||||
|
|
||||||
class IconButton(ButtonBehavior, Image):
|
class IconButton(ButtonBehavior, Image):
|
||||||
pass
|
pass
|
||||||
@ -63,13 +65,42 @@ class FlockompassApp(App):
|
|||||||
def dump(self, dt):
|
def dump(self, dt):
|
||||||
print(dt, self.gps_data, self.session_data)
|
print(dt, self.gps_data, self.session_data)
|
||||||
|
|
||||||
|
def read_settings(self):
|
||||||
|
app_folder = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||||
|
|
||||||
|
if path.isfile(pickle_path):
|
||||||
|
with open(pickle_path, 'rb') as f:
|
||||||
|
settings = pickle.load(f)
|
||||||
|
else:
|
||||||
|
settings = {'settings_smoothing': 0.88,
|
||||||
|
'settings_compass_update': 0.777
|
||||||
|
}
|
||||||
|
with open(pickle_path, 'wb') as f:
|
||||||
|
pickle.dump(settings, f)
|
||||||
|
|
||||||
|
self.session_data.update(settings)
|
||||||
|
|
||||||
|
def save_settings(self):
|
||||||
|
app_folder = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||||
|
|
||||||
|
settings = {k: self.session_data[k]
|
||||||
|
for k in self.session_data
|
||||||
|
if k.startswith('settings_')}
|
||||||
|
|
||||||
|
with open(pickle_path, 'wb') as f:
|
||||||
|
pickle.dump(settings, f)
|
||||||
|
|
||||||
def set_smoothing(self):
|
def set_smoothing(self):
|
||||||
self.session_data['smoothing'] = self.ss.ids.slider_smoothing.value
|
self.session_data['settings_smoothing'] = self.ss.ids.slider_smoothing.value
|
||||||
|
self.save_settings()
|
||||||
|
|
||||||
def set_compass_update(self):
|
def set_compass_update(self):
|
||||||
self.session_data['compass_update'] = self.ss.ids.slider_compass_update.value
|
self.session_data['settings_compass_update'] = self.ss.ids.slider_compass_update.value
|
||||||
self.compass_disable()
|
self.compass_disable()
|
||||||
self.compass_enable()
|
self.compass_enable()
|
||||||
|
self.save_settings()
|
||||||
|
|
||||||
def set_destination(self):
|
def set_destination(self):
|
||||||
self.compass_enable()
|
self.compass_enable()
|
||||||
@ -139,7 +170,7 @@ class FlockompassApp(App):
|
|||||||
if self.cs.facade.field != (None, None, None):
|
if self.cs.facade.field != (None, None, None):
|
||||||
x, y, z = self.cs.facade.field
|
x, y, z = self.cs.facade.field
|
||||||
|
|
||||||
smoothingFactor = self.session_data.get('smoothing', 0.88)
|
smoothingFactor = self.session_data.get('settings_smoothing', 0.88)
|
||||||
angle = atan2(y, x)
|
angle = atan2(y, x)
|
||||||
self.last_angle = smoothingFactor * self.last_angle + (1 - smoothingFactor) * angle
|
self.last_angle = smoothingFactor * self.last_angle + (1 - smoothingFactor) * angle
|
||||||
|
|
||||||
@ -182,7 +213,7 @@ class FlockompassApp(App):
|
|||||||
def compass_enable(self):
|
def compass_enable(self):
|
||||||
self.cs.facade.enable()
|
self.cs.facade.enable()
|
||||||
Clock.schedule_interval(self.get_field,
|
Clock.schedule_interval(self.get_field,
|
||||||
1.0 - self.session_data.get('compass_update', 0.777))
|
1.0 - self.session_data.get('settings_compass_update', 0.777))
|
||||||
|
|
||||||
def compass_disable(self):
|
def compass_disable(self):
|
||||||
self.cs.facade.disable()
|
self.cs.facade.disable()
|
||||||
@ -239,4 +270,5 @@ class FlockompassApp(App):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app = FlockompassApp()
|
app = FlockompassApp()
|
||||||
|
app.read_settings()
|
||||||
app.run()
|
app.run()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user