diff --git a/src/mind_reader/ui/views/session_view.py b/src/mind_reader/ui/views/session_view.py index 37107e1..43c5c20 100644 --- a/src/mind_reader/ui/views/session_view.py +++ b/src/mind_reader/ui/views/session_view.py @@ -180,31 +180,25 @@ class SessionPanel(wx.Panel): def _setup(self) -> None: main_sizer = wx.BoxSizer(wx.VERTICAL) - setter_title = wx.StaticText( - self, label=f"Загадывает: {self._setter_name}" + setter_sizer = self._create_sequence_section( + title=f"Загадывает: {self._setter_name}", + sequence=self._setter_sequence, + sequence_length=self._sequence_length, + initial_card_state=CardState.SETTER_NOT_SET, ) - setter_sizer = wx.BoxSizer(wx.HORIZONTAL) - for _ in range(self._sequence_length): - card = Card(self, CardState.SETTER_NOT_SET) - setter_sizer.Add(card, 0, wx.ALL, 4) - self._setter_sequence.append(card) - guesser_title = wx.StaticText( - self, label=f"Отгадывает: {self._guesser_name}" + guesser_sizer = self._create_sequence_section( + title=f"Угадывает: {self._guesser_name}", + sequence=self._guesser_sequence, + sequence_length=self._sequence_length, + initial_card_state=CardState.GUESSER_DISABLED, ) - guesser_sizer = wx.BoxSizer(wx.HORIZONTAL) - for _ in range(self._sequence_length): - card = Card(self, CardState.GUESSER_DISABLED) - guesser_sizer.Add(card, 0, wx.ALL, 4) - self._guesser_sequence.append(card) controls_sizer = self._create_controls_sizer() secondary_sizer = wx.BoxSizer(wx.VERTICAL) - secondary_sizer.Add(setter_title, 0, wx.LEFT | wx.TOP, 9) - secondary_sizer.Add(setter_sizer, 0, wx.ALL, 5) - secondary_sizer.Add(guesser_title, 0, wx.LEFT | wx.TOP, 9) - secondary_sizer.Add(guesser_sizer, 0, wx.ALL, 5) + secondary_sizer.Add(setter_sizer, 0, wx.EXPAND) + secondary_sizer.Add(guesser_sizer, 0, wx.EXPAND) secondary_sizer.Add( controls_sizer, 0, wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, 25 ) @@ -213,6 +207,27 @@ class SessionPanel(wx.Panel): self.SetSizer(main_sizer) + def _create_sequence_section( + self, + title: str, + sequence: list[Card], + sequence_length: int, + initial_card_state: CardState, + ) -> wx.Sizer: + section_sizer = wx.BoxSizer(wx.VERTICAL) + title_label = wx.StaticText(self, label=title) + cards_sizer = wx.BoxSizer(wx.HORIZONTAL) + + for _ in range(sequence_length): + card = Card(self, initial_card_state) + cards_sizer.Add(card, 0, wx.ALL, 4) + sequence.append(card) + + section_sizer.Add(title_label, 0, wx.LEFT | wx.TOP, 9) + section_sizer.Add(cards_sizer, 0, wx.ALL, 5) + + return section_sizer + def _create_controls_sizer(self) -> wx.Sizer: left = wx.Button(self, label=ArrowSymbol.LEFT, size=wx.Size(145, 55)) right = wx.Button(self, label=ArrowSymbol.RIGHT, size=wx.Size(145, 55)) @@ -279,14 +294,14 @@ class SessionPanel(wx.Panel): def update_statusbar( self, - statusbar_text: Optional[str], + message: Optional[str], stats: SessionStats, ): if not self._statusbar: return - if statusbar_text is not None: - self._statusbar.SetStatusText(statusbar_text, 0) + if message is not None: + self._statusbar.SetStatusText(message, 0) progress = f" Прогресс {stats.setted}/{stats.total} " self._statusbar.SetStatusText(progress, 1)