From 3add50cbbc17960fce7dc4a73b38dc45e762fdee Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 6 Aug 2026 03:29:16 +0300 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=BA=D0=B8=20=D0=BB=D0=BE=D0=B1=D0=B1=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=BA=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mind_reader/ui/main_frame.py | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/mind_reader/ui/main_frame.py b/src/mind_reader/ui/main_frame.py index a0eaa98..a9df505 100644 --- a/src/mind_reader/ui/main_frame.py +++ b/src/mind_reader/ui/main_frame.py @@ -1,7 +1,9 @@ import wx +from mind_reader.core import GameState from mind_reader.ui.dialogs import ClientConnectDialog, ServerStartDialog from mind_reader.ui.menu_bar import AppMenuBar +from mind_reader.ui.views import LobbyPanel class MainFrame(wx.Frame): @@ -13,8 +15,14 @@ class MainFrame(wx.Frame): size=wx.Size(700, 500), style=wx.DEFAULT_FRAME_STYLE, ) + self.state: GameState | None = None + self.lobby_panel: LobbyPanel | None = None + self.Center() + self.main_sizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(self.main_sizer) + self.menu_bar = AppMenuBar(self) self.SetMenuBar(self.menu_bar) @@ -32,10 +40,29 @@ class MainFrame(wx.Frame): wx.EVT_MENU, self.on_disconnect, self.menu_bar.item_disconnect ) + def _show_lobby(self): + self._destroy_lobby() + + if self.state: + self.lobby_panel = LobbyPanel(self, self.state) + self.main_sizer.Add(self.lobby_panel, 1, wx.EXPAND) + self.Layout() + + def _destroy_lobby(self): + if self.lobby_panel: + self.main_sizer.Detach(self.lobby_panel) + self.lobby_panel.Destroy() + self.lobby_panel = None + self.Layout() + def on_client_connect(self, event): d = ClientConnectDialog(self) if d.ShowModal() == wx.ID_OK: name, ip = d.get_data() + self.state = GameState(name) + + self._show_lobby() + self.menu_bar.set_connected_state(True) self.SetStatusText(f"Подключено к {ip} | Ваше имя {name}") d.Destroy() @@ -44,10 +71,18 @@ class MainFrame(wx.Frame): d = ServerStartDialog(self) if d.ShowModal() == wx.ID_OK: name, ip = d.get_data() + self.state = GameState(name) + + self._show_lobby() + self.menu_bar.set_connected_state(True) self.SetStatusText(f"Сервер запущен на {ip} | Ваше имя {name}") d.Destroy() def on_disconnect(self, event): + self._destroy_lobby() + + self.state = None + self.menu_bar.set_connected_state(False) self.SetStatusText("Подключение отсутствует")