Skip to content

Commit

Permalink
fix: handle id_override for SavingDispatcher to allow more stable fil…
Browse files Browse the repository at this point in the history
…e naming
  • Loading branch information
bartei81 committed May 22, 2024
1 parent bbc58c7 commit 042f59e
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 11 deletions.
4 changes: 2 additions & 2 deletions rotary_controller_python/components/home/home_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ def __init__(self, device, **kv):
self.bars_container.add_widget(self.status_bar)
coord_bars = []
for i in range(4):
bar = CoordBar(inputIndex=i, device=self.device)
bar = CoordBar(inputIndex=i, device=self.device, id_override=f"{i}")
coord_bars.append(bar)
self.bars_container.add_widget(bar)

self.coord_bars = coord_bars
self.servo = ServoBar(device=self.device)
self.servo = ServoBar(device=self.device, id_override="0")
self.bars_container.add_widget(self.servo)

self._keyboard = Window._system_keyboard
Expand Down
2 changes: 1 addition & 1 deletion rotary_controller_python/components/plot/float_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
class FloatView(FloatLayout):
scene_canvas = ObjectProperty(None)
mouse_position = ListProperty([0, 0])
circle_pattern = ObjectProperty(CirclePatternDispatcher())
circle_pattern = ObjectProperty(CirclePatternDispatcher(id_override="0"))
zoom = NumericProperty(1.0)

def __init__(self, **kwargs):
Expand Down
14 changes: 12 additions & 2 deletions rotary_controller_python/dispatchers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os
import shutil
from pathlib import Path

import yaml
from kivy.logger import Logger
Expand All @@ -11,10 +12,15 @@

class SavingDispatcher(EventDispatcher):
_skip_save = []
id_override = StringProperty("")

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

# Check if we have an id_override
if self.id_override == "":
self.id_override = f"{self.uid}"

# Read the settings from file and into a dictionary
self.read_settings()
self.bind_settings()
Expand All @@ -32,8 +38,12 @@ def get_our_properties(self):

@property
def filename(self):
os.makedirs("settings/", exist_ok=True)
return f"settings/{self.__class__.__name__}-{self.uid}.yaml"
home_folder = os.environ.get('HOME')
settings_folder = Path(home_folder) / ".config" / "rotary-controller-python"

log.info(f"Identified settings folder as: {settings_folder}")
os.makedirs(settings_folder, exist_ok=True)
return f"{settings_folder}/{self.__class__.__name__}-{self.id_override}.yaml"

def read_settings(self):
props = self.get_our_properties()
Expand Down
4 changes: 2 additions & 2 deletions rotary_controller_python/dispatchers/formats.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ def update_format(self):
self.position_format = self.metric_position
self.factor = 1.0
else:
self.speed_format = self.metric_speed
self.position_format = self.metric_position
self.speed_format = self.imperial_speed
self.position_format = self.imperial_position
self.factor = 25.4

def toggle(self):
Expand Down
8 changes: 4 additions & 4 deletions rotary_controller_python/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class MainApp(App):

blink = BooleanProperty(False)
connected = BooleanProperty(False)
formats = FormatsDispatcher()
formats = FormatsDispatcher(id_override="0")
abs_inc = ConfigParserProperty(
defaultvalue="ABS", section="global", key="abs_inc", config=config, val_type=str
)
Expand Down Expand Up @@ -133,15 +133,15 @@ def update(self, *args):

if self.connection_manager.connected:
for bar in self.home.coord_bars:
bar.position = self.fast_data_values['scaleCurrent'][bar.inputIndex] / 1000
bar.position = (self.fast_data_values['scaleCurrent'][bar.inputIndex] / 1000)
self.home.servo.currentPosition = self.fast_data_values['servoCurrent']
self.home.servo.desiredPosition = self.fast_data_values['servoDesired']
self.home.servo.servoEnable = self.fast_data_values['servoEnable']
self.home.status_bar.speed = abs(self.fast_data_values['servoSpeed'])

# TODO: Find a better way to configure x and y axy for the plot view
self.tool_x = self.fast_data_values['scaleCurrent'][0]
self.tool_y = self.fast_data_values['scaleCurrent'][1]
self.tool_x = self.fast_data_values['scaleCurrent'][0] / 1000
self.tool_y = self.fast_data_values['scaleCurrent'][1] / 1000

self.connected = self.connection_manager.connected

Expand Down

0 comments on commit 042f59e

Please sign in to comment.