diff --git a/main.py b/main.py index 3fc5d45..1efa55d 100755 --- a/main.py +++ b/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 - - 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" + 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 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) diff --git a/tinge/HueBridge/__init__.py b/tinge/HueBridge/__init__.py index 680edd8..888900a 100644 --- a/tinge/HueBridge/__init__.py +++ b/tinge/HueBridge/__init__.py @@ -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