This commit fixes #19 and #2

All long labels have been removed as the bridge list interface and
discovery interface was reworked. Discovery of new lights happens
automatically and bridges are refereshed when changes happen.
This commit is contained in:
Micke Nordin 2021-06-05 23:57:18 +02:00
父節點 43657440a3
當前提交 816f9e6dab
簽署人: micke
GPG key ID: 014B273D614BE877
共有 2 個文件被更改,包括 26 次插入21 次删除

19
main.py
查看文件

@ -55,25 +55,25 @@ class Hui(wx.Frame):
"""Add bridges to sizer, the entry point of the program
"""
self.SetTitle('Tinge - All Bridges')
one_unreachable: bool = False
all_unreachable: bool = True
no_bridges: bool = True
if self.m_tinge.get_bridges():
no_bridges = False
for bridge in self.m_tinge.get_bridges():
if bridge.is_reachable():
bridge.refresh_bridge()
all_unreachable = False
btn: wx.Button = wx.Button(self.pnl, label=str(bridge))
self.sizer.Add(btn, 0, wx.EXPAND)
self.Bind(wx.EVT_BUTTON,
lambda event, mbridge=bridge: self.goto_bridge(mbridge), btn)
else:
one_unreachable = True
label = "{} {} ({})".format(self.m_unreachable_icon, str(bridge), "unreachable")
btn: wx.Button = wx.Button(self.pnl, label=label)
self.sizer.Add(btn, 0, wx.EXPAND)
if one_unreachable or no_bridges:
if one_unreachable:
warn_label = "{} At least one previously discovered bridge unreachable.".format(self.m_unreachable_icon)
warning: wx.StaticText = wx.StaticText(self.pnl, label=warn_label, style=wx.ALIGN_CENTER)
self.sizer.Add(warning, 0, wx.EXPAND)
label = "Press Hue Bridge button, and then here within 30 seconds to connect"
if no_bridges or all_unreachable:
label = "Discover bridge"
btn: wx.Button = wx.Button(self.pnl, label=label)
self.sizer.Add(btn, 0, wx.EXPAND)
self.Bind(wx.EVT_BUTTON,
@ -113,7 +113,8 @@ class Hui(wx.Frame):
lambda event, mgroupid=groupid: self.goto_group(mgroupid), group_btn)
self.sizer.Add(inner_sizer, 0, wx.EXPAND)
if has_unattached:
unattached_label: wx.StaticText = wx.StaticText(self.pnl, label=" ⚬ Unattached lights ⚬ ", style=wx.ALIGN_CENTER)
unattached_label: wx.StaticText = wx.StaticText(self.pnl, label=" ⚬ Unattached lights ⚬ ",
style=wx.ALIGN_CENTER)
self.sizer.Add(unattached_label, 0, wx.EXPAND)
for light in self.cur_bridge.unattached_lights:
inner_sizer = wx.BoxSizer(orient=wx.HORIZONTAL)

查看文件

@ -23,28 +23,32 @@ class HueBridge:
self.m_ipaddress: str = ipaddress
self.m_username: str = username
self.m_is_reachable = is_reachable
self.unattached_lights: list[HueLight] = list()
if name:
self.m_name: str = name
else:
self.m_name = self.m_ipaddress
if is_reachable:
self.m_lights: list[HueLight] = self.discover_lights()
self.discover_new_lights()
self.m_new_lights: list[HueLight] = self.get_new_lights()
self.unattached_lights: list[HueLight] = list()
self.m_groups: list[HueGroup] = self.discover_groups()
for light in self.get_lights():
is_in_group: bool = False
for group in self.get_groups():
if group.is_light_in_group(light.get_id()):
is_in_group = True
if not is_in_group:
self.unattached_lights.append(light)
self.refresh_bridge()
else:
self.m_lights: list[HueLight] = list()
self.m_new_lights: list[HueLight] = list()
self.m_groups: list[HueGroup] = list()
def refresh_bridge(self):
self.m_lights: list[HueLight] = self.discover_lights()
self.discover_new_lights()
self.m_new_lights: list[HueLight] = self.get_new_lights()
self.m_groups: list[HueGroup] = self.discover_groups()
self.unattached_lights: list[HueLight] = list()
for light in self.get_lights():
is_in_group: bool = False
for group in self.get_groups():
if group.is_light_in_group(light.get_id()):
is_in_group = True
if not is_in_group:
self.unattached_lights.append(light)
def __str__(self) -> str:
"""The string representation of this bridge