diff --git a/gui/tabs/terminal_tab.py b/gui/tabs/terminal_tab.py index b809d7c..e0ea1aa 100644 --- a/gui/tabs/terminal_tab.py +++ b/gui/tabs/terminal_tab.py @@ -32,13 +32,14 @@ class TerminalTab(ctk.CTkFrame): self._toolbar = ctk.CTkFrame(self, fg_color="transparent", height=32) self._toolbar.pack(fill="x", padx=5, pady=(5, 0)) self._toolbar.pack_propagate(False) - self._disconnect_btn = ctk.CTkButton( - self._toolbar, text=t("ctx_disconnect"), width=110, height=28, - fg_color="#dc2626", hover_color="#b91c1c", + self._conn_btn = ctk.CTkButton( + self._toolbar, text=t("ctx_connect"), width=120, height=28, + fg_color="#6b7280", hover_color="#4b5563", font=ctk.CTkFont(size=12), state="disabled", - command=self._on_disconnect_click, + command=self._on_conn_btn_click, ) - self._disconnect_btn.pack(side="right", padx=2) + self._conn_btn.pack(side="right", padx=2) + self._connected = False self._terminal = TerminalWidget( self, @@ -73,9 +74,12 @@ class TerminalTab(ctk.CTkFrame): self._current_alias = alias if alias: - self._disconnect_btn.configure(state="disabled") + self._set_conn_btn_disconnected() + self._conn_btn.configure(state="normal") self._terminal.set_status(t("term_click_to_connect").format(alias=alias), "#f59e0b") else: + self._set_conn_btn_disconnected() + self._conn_btn.configure(state="disabled") self._terminal.reset() self._terminal.set_status(t("term_disconnected"), "#888888") @@ -84,14 +88,29 @@ class TerminalTab(ctk.CTkFrame): if self._current_alias and not self._session: self._connect() - def _on_disconnect_click(self): - if self._on_disconnect_callback and self._current_alias: - self._on_disconnect_callback(self._current_alias) + def _on_conn_btn_click(self): + if self._connected: + if self._on_disconnect_callback and self._current_alias: + self._on_disconnect_callback(self._current_alias) + else: + self.connect() + + def _set_conn_btn_connected(self): + self._connected = True + self._conn_btn.configure( + text=t("ctx_disconnect"), fg_color="#dc2626", hover_color="#b91c1c", state="normal", + ) + + def _set_conn_btn_disconnected(self): + self._connected = False + self._conn_btn.configure( + text=t("ctx_connect"), fg_color="#6b7280", hover_color="#4b5563", + ) def disconnect(self): """Disconnect and update UI (called by app).""" self._disconnect() - self._disconnect_btn.configure(state="disabled") + self._set_conn_btn_disconnected() if self._current_alias: self._terminal.set_status(t("term_click_to_connect").format(alias=self._current_alias), "#f59e0b") @@ -164,7 +183,7 @@ class TerminalTab(ctk.CTkFrame): # Only grab focus if terminal tab is currently visible if self._terminal.winfo_ismapped(): self._terminal.focus_terminal() - self._disconnect_btn.configure(state="normal") + self._set_conn_btn_connected() self.after(0, _set_session) except Exception as e: self.after(0, lambda: self._terminal.set_status( diff --git a/releases/ServerManager-v1.9.23-win-x64.exe b/releases/ServerManager-v1.9.28-win-x64.exe similarity index 98% rename from releases/ServerManager-v1.9.23-win-x64.exe rename to releases/ServerManager-v1.9.28-win-x64.exe index 8a5c5c6..ba3ed02 100644 Binary files a/releases/ServerManager-v1.9.23-win-x64.exe and b/releases/ServerManager-v1.9.28-win-x64.exe differ diff --git a/version.py b/version.py index 6dbd9ba..1261fee 100755 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ """Version info for ServerManager.""" -__version__ = "1.9.27" +__version__ = "1.9.28" __app_name__ = "ServerManager" __author__ = "aibot777" __description__ = "Desktop GUI for managing remote servers"