v1.8.95: resizable sidebar via PanedWindow — drag to widen server list

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-03-02 05:42:41 -05:00
parent 2174168200
commit 08307fbe9b
3 changed files with 18 additions and 5 deletions

View File

@@ -116,19 +116,27 @@ class App(ctk.CTk):
self.protocol("WM_DELETE_WINDOW", self._on_close) self.protocol("WM_DELETE_WINDOW", self._on_close)
def _build_layout(self): def _build_layout(self):
# PanedWindow — resizable sidebar | main area
self._paned = tkinter.PanedWindow(
self, orient="horizontal", sashwidth=4,
bg="#2b2b2b", sashrelief="flat", opaqueresize=True,
)
self._paned.pack(fill="both", expand=True)
# Sidebar # Sidebar
self.sidebar = Sidebar(self, self.store, on_select=self._on_server_select, session_pool=self.session_pool) self.sidebar = Sidebar(self._paned, self.store, on_select=self._on_server_select, session_pool=self.session_pool)
self.sidebar.pack(side="left", fill="y") self._paned.add(self.sidebar, minsize=180, width=250)
self.sidebar.add_callback = self._add_server self.sidebar.add_callback = self._add_server
self.sidebar.edit_callback = self._edit_server self.sidebar.edit_callback = self._edit_server
self.sidebar.delete_callback = self._delete_server self.sidebar.delete_callback = self._delete_server
self.sidebar.add_group_callback = self._add_group
self.sidebar.open_tab_callback = self._context_open_tab self.sidebar.open_tab_callback = self._context_open_tab
self.sidebar.check_status_callback = self._context_check_status self.sidebar.check_status_callback = self._context_check_status
self.sidebar.open_browser_callback = self._context_open_browser self.sidebar.open_browser_callback = self._context_open_browser
# Main area # Main area
self._main_frame = ctk.CTkFrame(self, fg_color="transparent") self._main_frame = ctk.CTkFrame(self._paned, fg_color="transparent")
self._main_frame.pack(side="right", fill="both", expand=True) self._paned.add(self._main_frame, minsize=500)
# Header bar (language + about) # Header bar (language + about)
header_bar = ctk.CTkFrame(self._main_frame, fg_color="transparent", height=40) header_bar = ctk.CTkFrame(self._main_frame, fg_color="transparent", height=40)
@@ -265,6 +273,11 @@ class App(ctk.CTk):
dialog = ServerDialog(self, self.store) dialog = ServerDialog(self, self.store)
self.wait_window(dialog) self.wait_window(dialog)
def _add_group(self):
from gui.group_dialog import GroupDialog
dialog = GroupDialog(self, self.store)
self.wait_window(dialog)
def _edit_server(self, alias: str): def _edit_server(self, alias: str):
server = self.store.get_server(alias) server = self.store.get_server(alias)
if server: if server:

Binary file not shown.

View File

@@ -1,6 +1,6 @@
"""Version info for ServerManager.""" """Version info for ServerManager."""
__version__ = "1.8.94" __version__ = "1.8.95"
__app_name__ = "ServerManager" __app_name__ = "ServerManager"
__author__ = "aibot777" __author__ = "aibot777"
__description__ = "Desktop GUI for managing remote servers" __description__ = "Desktop GUI for managing remote servers"