tinge/main.py

66 lines
1.8 KiB
Python
Raw Normal View History

2023-11-19 14:55:17 +01:00
from logging import disable
2023-11-18 20:38:49 +01:00
import kivy
kivy.require('2.2.1')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
2023-11-19 14:55:17 +01:00
from kivy.uix.button import Button, ColorProperty
from kivy.uix.label import Label
2023-11-18 20:38:49 +01:00
from kivy.uix.screenmanager import Screen, ScreenManager
2023-11-19 14:55:17 +01:00
from src.tinge import HueBridge, Tinge
2023-11-18 20:38:49 +01:00
class HueApp(App):
def build(self):
self.tinge = Tinge()
sm = ScreenManager()
sm.add_widget(BridgeScreen(self.tinge))
return sm
class BridgeScreen(Screen):
bridges = []
layout = BoxLayout()
def __init__(self, tinge, **kwargs):
super(BridgeScreen, self).__init__(**kwargs)
self.tinge = tinge
2023-11-19 14:55:17 +01:00
for bridge_button in self.set_bridge_buttons():
2023-11-18 20:38:49 +01:00
self.layout.add_widget(bridge_button)
def press_button(self, bridge, button):
print(bridge.get_ipaddress())
def manually_add(self, button):
2023-11-19 14:55:17 +01:00
bridges = self.tinge.discover_new_bridges()
2023-11-18 20:38:49 +01:00
if bridges:
for bridge in bridges:
2023-11-19 14:55:17 +01:00
if not bridge in self.tinge.get_bridges():
self.tinge.append_bridge(bridge)
def set_bridge_buttons(self):
buttons = []
bridges = self.tinge.get_bridges()
for bridge in bridges:
2023-11-18 20:38:49 +01:00
bridge_button = Button(
2023-11-19 14:55:17 +01:00
text=str(bridge.get_ipaddress()),
size_hint=(1, 0.1),
on_press=lambda button: self.press_button(bridge, button))
2023-11-18 20:38:49 +01:00
buttons.append(bridge_button)
2023-11-19 14:55:17 +01:00
bridge_button = Button(
text='Discover Bridges',
size_hint=(1, 0.1),
on_press=lambda button: self.manually_add(button))
buttons.append(bridge_button)
sizer = Label(disabled = True)
buttons.append(sizer)
2023-11-18 20:38:49 +01:00
return buttons
if __name__ == '__main__':
HueApp().run()