diff --git a/bale/content.py b/bale/content.py index a6b82c3..0a2ec91 100644 --- a/bale/content.py +++ b/bale/content.py @@ -1,6 +1,7 @@ from nicegui import ui from bale import elements as el import bale.logo as logo +from bale.tabs import Tab from bale.tabs.manage import Manage from bale.tabs.history import History from bale.tabs.automation import Automation @@ -43,6 +44,13 @@ class Content: self._tab_panels = ( ui.tab_panels(self._tabs, value="Manage", on_change=lambda e: self._tab_changed(e), animated=False).classes("w-full h-full").bind_visibility_from(self._header) ) + ui.timer(0.1, self.select_default, once=True) + + async def select_default(self): + tab = Tab(spinner=None) + default = tab.common.get("default", "") + if default != "": + await self.host_selected(default) async def _tab_changed(self, e): if e.value == "Manage": diff --git a/bale/drawer.py b/bale/drawer.py index 026cf05..7639dfa 100644 --- a/bale/drawer.py +++ b/bale/drawer.py @@ -107,6 +107,9 @@ class Drawer(object): result = await host_dialog if result == "save": if name != "" and name != host_input.value: + default = Tab(spinner=None).common.get("default", "") + if default == name: + Tab(spinner=None).common["default"] = "" for row in self._table.rows: if name == row["name"]: self._table.remove_rows(row) diff --git a/bale/tabs/manage.py b/bale/tabs/manage.py index ce50992..87eb6ee 100644 --- a/bale/tabs/manage.py +++ b/bale/tabs/manage.py @@ -13,6 +13,14 @@ logger = logging.getLogger(__name__) class Manage(Tab): def _build(self): + def set_default(value) -> None: + if value is True: + self.common.update({"default": self.host}) + el.notify(f"Default host is now {self.host}.", type="info") + else: + self.common.update({"default": ""}) + el.notify("Default host is now unset.", type="info") + with el.WColumn() as col: col.tailwind.height("full") self._confirm = el.WRow() @@ -27,7 +35,8 @@ class Manage(Tab): el.SmButton(text="Browse", on_click=self._browse) el.SmButton(text="Find", on_click=self._find) with ui.row().classes("items-center"): - self._auto = ui.checkbox("Auto", on_change=lambda e: self.common.update({"auto": e.value})) + self._default = ui.checkbox("Default", value=True if self.common.get("default", "") == self.host else False, on_change=lambda e: set_default(e.value)) + self._default.props("left-label keep-color color=primary") self._auto.props("left-label keep-color color=primary") self._auto.tailwind.text_color("primary") self._auto.value = self.common.get("auto", False)