From b0bc46f539001a539ddeb2fe5258d21edc61811a Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 25 Nov 2022 12:53:05 -0800 Subject: [PATCH] Make the casualty report scrollable. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2567. --- qt_ui/windows/QDebriefingWindow.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/qt_ui/windows/QDebriefingWindow.py b/qt_ui/windows/QDebriefingWindow.py index f658a162..e0d5431c 100644 --- a/qt_ui/windows/QDebriefingWindow.py +++ b/qt_ui/windows/QDebriefingWindow.py @@ -8,12 +8,13 @@ from PySide2.QtWidgets import ( QGroupBox, QLabel, QPushButton, + QScrollArea, QVBoxLayout, + QWidget, ) from game.debriefing import Debriefing - T = TypeVar("T") @@ -52,6 +53,19 @@ class LossGrid(QGridLayout): self.addWidget(QLabel(str(count)), row, 1) +class ScrollingCasualtyReportContainer(QGroupBox): + def __init__(self, debriefing: Debriefing, player: bool) -> None: + country = debriefing.player_country if player else debriefing.enemy_country + super().__init__(f"{country}'s lost units:") + scroll_content = QWidget() + scroll_content.setLayout(LossGrid(debriefing, player)) + scroll_area = QScrollArea() + scroll_area.setWidget(scroll_content) + layout = QVBoxLayout() + layout.addWidget(scroll_area) + self.setLayout(layout) + + class QDebriefingWindow(QDialog): def __init__(self, debriefing: Debriefing): super(QDebriefingWindow, self).__init__() @@ -75,12 +89,10 @@ class QDebriefingWindow(QDialog): title = QLabel("Casualty report") layout.addWidget(title) - player_lost_units = QGroupBox(f"{self.debriefing.player_country}'s lost units:") - player_lost_units.setLayout(LossGrid(debriefing, player=True)) + player_lost_units = ScrollingCasualtyReportContainer(debriefing, player=True) layout.addWidget(player_lost_units) - enemy_lost_units = QGroupBox(f"{self.debriefing.enemy_country}'s lost units:") - enemy_lost_units.setLayout(LossGrid(debriefing, player=False)) + enemy_lost_units = ScrollingCasualtyReportContainer(debriefing, player=False) layout.addWidget(enemy_lost_units) okay = QPushButton("Okay")