Skip to content

Commit

Permalink
fix: new setup popup with screens
Browse files Browse the repository at this point in the history
fix: better file naming for settings with some logs
  • Loading branch information
bartei81 committed May 22, 2024
1 parent 042f59e commit a16cba6
Show file tree
Hide file tree
Showing 8 changed files with 165 additions and 50 deletions.
8 changes: 7 additions & 1 deletion rotary_controller_python/components/setup/logs_panel.kv
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,10 @@
size_hint_y: None
height: self.texture_size[1]
text_size: self.width, None
padding: 10, 10
padding: 10, 10

Button:
size_hint_y: None
height: 32
text: "Back"
on_release: root.parent.parent.current = "menu"
7 changes: 6 additions & 1 deletion rotary_controller_python/components/setup/scale_panel.kv
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,9 @@
NumberItem:
name: "Mode"
value: root.scale.mode
on_value: root.scale.mode = self.value
on_value: root.scale.mode = self.value
Button:
size_hint_y: None
height: 32
text: "Back"
on_release: root.parent.parent.current = "menu"
7 changes: 6 additions & 1 deletion rotary_controller_python/components/setup/servo_panel.kv
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,9 @@
NumberItem:
name: "Index"
value: root.servo.index
on_value: root.servo.index = self.value
on_value: root.servo.index = self.value
Button:
size_hint_y: None
height: 32
text: "Back"
on_release: root.parent.parent.current = "menu"
91 changes: 73 additions & 18 deletions rotary_controller_python/components/setup/setup_popup.kv
Original file line number Diff line number Diff line change
@@ -1,24 +1,79 @@
#: import SetupScreenManager components.setup.setup_screen_manager

<SetupPopup>:
id: setup_popup
title: "Setup"
size_hint: 0.9, 0.9
auto_dismiss: False
tabbed_panel: tabbed_panel

BoxLayout:
orientation: "vertical"
TabbedPanel:
do_default_tab: False
id: tabbed_panel
BoxLayout:
size_hint_y: None
height: 48
orientation: "horizontal"
SetupScreenManager:
setup_popup: setup_popup
current: 'menu'
# Screen:
# name: 'menu'
# BoxLayout:
# orientation: "vertical"
# Button:
# text: "Scale 0"
# on_release: root.manager.current = "scale_0"
# Button:
# text: "Scale 1"
# on_release: root.manager.current = "scale_1"
# Button:
# text: "Scale 2"
# on_release: root.manager.current = "scale_2"
# Button:
# text: "Scale 3"
# on_release: root.manager.current = "scale_3"
# Button:
# text: "Servo"
# on_release: root.manager.current = "servo"
# Button:
# text: "Logs"
# on_release: root.manager.current = "logs"
# Button:
# text: "Exit"
# on_release: root.dismiss()

# Screen:
# name: 'scale_0'
# BoxLayout:
# orientation: "vertical"
# Button:
# text: "Scale 0"
# on_release: root.manager.current = "scale_0"
# Button:
# text: "Back"
# on_release: root.manager.current = "menu"
#
# Screen:
# name: 'scale_1'
# BoxLayout:
# orientation: "vertical"
# Button:
# text: "Scale 1"
# on_release: root.manager.current = "scale_1"
# Button:
# text: "Back"
# on_release: root.manager.current = "menu"



Button:
text: "UI Settings"
on_release: app.open_custom_settings()
Button:
font_name: "fonts/Font Awesome 6 Free-Solid-900.otf"
text: "\uf00c"
background_color: "#349e65"
on_release: root.dismiss()
# BoxLayout:
# orientation: "vertical"
# TabbedPanel:
# do_default_tab: False
# id: tabbed_panel
# BoxLayout:
# size_hint_y: None
# height: 48
# orientation: "horizontal"
#
# Button:
# text: "UI Settings"
# on_release: app.open_custom_settings()
# Button:
# font_name: "fonts/Font Awesome 6 Free-Solid-900.otf"
# text: "\uf00c"
# background_color: "#349e65"
# on_release: root.dismiss()
28 changes: 2 additions & 26 deletions rotary_controller_python/components/setup/setup_popup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from kivy.logger import Logger
from kivy.properties import ObjectProperty
from kivy.uix.popup import Popup
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.tabbedpanel import TabbedPanelItem

from rotary_controller_python.components.setup.logs_panel import LogsPanel
Expand All @@ -19,32 +20,7 @@


class SetupPopup(Popup):
tabbed_panel = ObjectProperty()

def __init__(self, **kv):
super().__init__(**kv)
app = App.get_running_app()
panes = []

# Add tabs for the input scales
for i in range(4):
pane = TabbedPanelItem(text=f"Input {i}")
pane.add_widget(ScalePanel(scale=app.home.coord_bars[i]))
self.tabbed_panel.add_widget(pane)
panes.append(pane)

# Add Tab for the servo motor configuration
servo_pane = TabbedPanelItem(text=f"Servo")
servo_pane.add_widget(ServoPanel(servo=app.home.servo))
self.tabbed_panel.add_widget(servo_pane)
panes.append(servo_pane)

# Add Tab to allow reviewing the application logs
log_pane = TabbedPanelItem(text=f"Logs")
log_pane.add_widget(LogsPanel())
self.tabbed_panel.add_widget(log_pane)

self.tabbed_panel.default_tab = panes[0]
screen_manager: ScreenManager = ObjectProperty()

def on_dismiss(self):
app = App.get_running_app()
Expand Down
26 changes: 26 additions & 0 deletions rotary_controller_python/components/setup/setup_screen_manager.kv
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<SetupScreenManager>:
Screen:
name: 'menu'
BoxLayout:
orientation: "vertical"
Button:
text: "Scale 0"
on_release: root.current = "scale_0"
Button:
text: "Scale 1"
on_release: root.current = "scale_1"
Button:
text: "Scale 2"
on_release: root.current = "scale_2"
Button:
text: "Scale 3"
on_release: root.current = "scale_3"
Button:
text: "Servo"
on_release: root.current = "servo"
Button:
text: "Logs"
on_release: root.current = "logs"
Button:
text: "Exit"
on_release: root.setup_popup.dismiss()
41 changes: 41 additions & 0 deletions rotary_controller_python/components/setup/setup_screen_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import os

from kivy.app import App
from kivy.lang import Builder
from kivy.logger import Logger
from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import Screen, ScreenManager

from rotary_controller_python.components.setup.logs_panel import LogsPanel
from rotary_controller_python.components.setup.scale_panel import ScalePanel
from rotary_controller_python.components.setup.servo_panel import ServoPanel

log = Logger.getChild(__name__)
kv_file = os.path.join(os.path.dirname(__file__), __file__.replace(".py", ".kv"))
if os.path.exists(kv_file):
log.info(f"Loading KV file: {kv_file}")
Builder.load_file(kv_file)


class SetupScreenManager(ScreenManager):
setup_popup = ObjectProperty()

def __init__(self, **kv):
super().__init__(**kv)
app = App.get_running_app()

# Add tabs for the input scales
for i in range(4):
screen = Screen(name=f"scale_{i}")
screen.add_widget(ScalePanel(scale=app.home.coord_bars[i]))
self.add_widget(screen)

# Add Tab for the servo motor configuration
screen = Screen(name="servo")
screen.add_widget(ServoPanel(servo=app.home.servo))
self.add_widget(screen)

# Add Tab to allow reviewing the application logs
screen = Screen(name="logs")
screen.add_widget(LogsPanel())
self.add_widget(screen)
7 changes: 4 additions & 3 deletions rotary_controller_python/dispatchers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ def get_our_properties(self):
def filename(self):
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"

settings_path = settings_folder / f"{self.__class__.__name__}-{self.id_override}.yaml"
log.debug(f"Identified settings path as: {settings_path}")
return settings_path

def read_settings(self):
props = self.get_our_properties()
Expand Down

0 comments on commit a16cba6

Please sign in to comment.