v1.9.28: terminal connect/disconnect toggle button with state indication
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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(
|
||||
|
||||
Binary file not shown.
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user