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
|
||||
|
||||
# (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.
|
||||
#android.api = 27
|
||||
|
||||
@ -166,7 +166,7 @@
|
||||
max: 0.99
|
||||
step: 0.05
|
||||
orientation: 'horizontal'
|
||||
value: 0.88
|
||||
value: app.session_data['settings_smoothing']
|
||||
on_value: app.set_smoothing()
|
||||
|
||||
BackgroundLabel:
|
||||
@ -182,7 +182,7 @@
|
||||
max: 0.9
|
||||
step: 0.05
|
||||
orientation: 'horizontal'
|
||||
value: 0.777
|
||||
value: app.session_data['settings_compass_update']
|
||||
on_value: app.set_compass_update()
|
||||
|
||||
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 os import path
|
||||
import pickle
|
||||
|
||||
class IconButton(ButtonBehavior, Image):
|
||||
pass
|
||||
@ -63,13 +65,42 @@ class FlockompassApp(App):
|
||||
def dump(self, dt):
|
||||
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):
|
||||
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):
|
||||
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_enable()
|
||||
self.save_settings()
|
||||
|
||||
def set_destination(self):
|
||||
self.compass_enable()
|
||||
@ -139,7 +170,7 @@ class FlockompassApp(App):
|
||||
if self.cs.facade.field != (None, None, None):
|
||||
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)
|
||||
self.last_angle = smoothingFactor * self.last_angle + (1 - smoothingFactor) * angle
|
||||
|
||||
@ -182,7 +213,7 @@ class FlockompassApp(App):
|
||||
def compass_enable(self):
|
||||
self.cs.facade.enable()
|
||||
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):
|
||||
self.cs.facade.disable()
|
||||
@ -239,4 +270,5 @@ class FlockompassApp(App):
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = FlockompassApp()
|
||||
app.read_settings()
|
||||
app.run()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user