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)
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
self.sidebar = Sidebar(self, self.store, on_select=self._on_server_select, session_pool=self.session_pool)
self.sidebar.pack(side="left", fill="y")
self.sidebar = Sidebar(self._paned, self.store, on_select=self._on_server_select, session_pool=self.session_pool)
self._paned.add(self.sidebar, minsize=180, width=250)
self.sidebar.add_callback = self._add_server
self.sidebar.edit_callback = self._edit_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.check_status_callback = self._context_check_status
self.sidebar.open_browser_callback = self._context_open_browser
# Main area
self._main_frame = ctk.CTkFrame(self, fg_color="transparent")
self._main_frame.pack(side="right", fill="both", expand=True)
self._main_frame = ctk.CTkFrame(self._paned, fg_color="transparent")
self._paned.add(self._main_frame, minsize=500)
# Header bar (language + about)
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)
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):
server = self.store.get_server(alias)
if server: