refactor(ui): wip session_view.py

This commit is contained in:
2026-08-12 01:21:54 +03:00
parent 6254de74e4
commit da169b49fc
+36 -21
View File
@@ -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)