Compare commits

..

2 commits

Author SHA1 Message Date
Maxime Réaux
a9cd4c9e27 improve draw & battle display 2026-02-12 10:07:03 +01:00
Maxime Réaux
93aae78f0d fix sector missing fields 2026-02-12 09:10:03 +01:00
25 changed files with 382 additions and 163 deletions

View file

@ -36,6 +36,8 @@ class CampaignController:
major=war.get_objective_name(sect.major_objective_id),
minor=war.get_objective_name(sect.minor_objective_id),
influence=war.get_objective_name(sect.influence_objective_id),
mission=sect.mission,
description=sect.description,
)
for sect in sectors
]
@ -214,6 +216,8 @@ class CampaignController:
major_id = dialog.get_major_id()
minor_id = dialog.get_minor_id()
influence_id = dialog.get_influence_id()
mission = dialog.get_mission()
description = dialog.get_description()
if not self._validate_sector_inputs(
name, round_id, major_id, minor_id, influence_id
):
@ -225,6 +229,8 @@ class CampaignController:
major_id,
minor_id,
influence_id,
mission,
description,
)
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
@ -251,6 +257,8 @@ class CampaignController:
default_major_id=sect.major_objective_id,
default_minor_id=sect.minor_objective_id,
default_influence_id=sect.influence_objective_id,
default_mission=sect.mission,
default_description=sect.description,
)
if sect_dialog.exec() == QDialog.DialogCode.Accepted:
name = sect_dialog.get_sector_name()
@ -258,6 +266,8 @@ class CampaignController:
major_id = sect_dialog.get_major_id()
minor_id = sect_dialog.get_minor_id()
influence_id = sect_dialog.get_influence_id()
mission = sect_dialog.get_mission()
description = sect_dialog.get_description()
self.app.model.update_sector(
sector_id,
name=name,
@ -265,4 +275,6 @@ class CampaignController:
major_id=major_id,
minor_id=minor_id,
influence_id=influence_id,
mission=mission,
description=description,
)

View file

@ -66,6 +66,8 @@ class SectorDTO:
major: str | None
minor: str | None
influence: str | None
mission: str | None
description: str | None
@dataclass
@ -93,3 +95,6 @@ class BattleDTO:
score: str | None
victory_condition: str | None
comment: str | None
state_icon: str | None
player1_icon: str | None
player2_icon: str | None

View file

@ -8,8 +8,8 @@ if TYPE_CHECKING:
from warchron.controller.app_controller import AppController
from warchron.controller.dtos import ParticipantOption, SectorDTO, ChoiceDTO, BattleDTO
from warchron.model.closure_service import ClosureService
from warchron.view.choices_dialog import ChoicesDialog
from warchron.view.battles_dialog import BattlesDialog
from warchron.view.choice_dialog import ChoiceDialog
from warchron.view.battle_dialog import BattleDialog
class RoundController:
@ -54,10 +54,14 @@ class RoundController:
battles_for_display: List[BattleDTO] = []
for sect in sectors:
battle = rnd.get_battle(sect.id)
if not battle:
battle = self.app.model.create_battle(
round_id=rnd.id, sector_id=sect.id
)
state_icon = ".\\src\\warchron\\view\\ui\\../resources/hourglass.png"
if battle.is_finished():
state_icon = ".\\src\\warchron\\view\\ui\\../resources/tick.png"
if battle.player_1_id:
camp_part = camp.participants[battle.player_1_id]
player_1_name = self.app.model.get_participant_name(
@ -79,6 +83,16 @@ class RoundController:
)
else:
winner_name = ""
p1_icon = None
p2_icon = None
if battle.is_draw():
p1_icon = ".\\src\\warchron\\view\\ui\\../resources/balance.png"
p2_icon = ".\\src\\warchron\\view\\ui\\../resources/balance.png"
elif battle.winner_id:
if battle.winner_id == battle.player_1_id:
p1_icon = ".\\src\\warchron\\view\\ui\\../resources/trophy.png"
elif battle.winner_id == battle.player_2_id:
p2_icon = ".\\src\\warchron\\view\\ui\\../resources/trophy.png"
battles_for_display.append(
BattleDTO(
id=battle.sector_id,
@ -89,6 +103,9 @@ class RoundController:
score=battle.score,
victory_condition=battle.victory_condition,
comment=battle.comment,
state_icon=state_icon,
player1_icon=p1_icon,
player2_icon=p2_icon,
)
)
self.app.view.display_round_battles(battles_for_display)
@ -143,6 +160,8 @@ class RoundController:
major=war.get_objective_name(sect.major_objective_id),
minor=war.get_objective_name(sect.minor_objective_id),
influence=war.get_objective_name(sect.influence_objective_id),
mission=sect.mission,
description=sect.description,
)
for sect in sectors
]
@ -152,7 +171,7 @@ class RoundController:
participant = camp.participants[choice.participant_id]
player = self.app.model.get_player_from_campaign_participant(participant)
part_opt = ParticipantOption(id=participant.id, name=player.name)
dialog = ChoicesDialog(
dialog = ChoiceDialog(
self.app.view,
participants=[part_opt],
default_participant_id=participant.id,
@ -192,13 +211,15 @@ class RoundController:
major=war.get_objective_name(sect.major_objective_id),
minor=war.get_objective_name(sect.minor_objective_id),
influence=war.get_objective_name(sect.influence_objective_id),
mission=sect.mission,
description=sect.description,
)
part_opts: List[ParticipantOption] = []
for participant in participants:
player = self.app.model.get_player_from_campaign_participant(participant)
part_opts.append(ParticipantOption(id=participant.id, name=player.name))
dialog = BattlesDialog(
dialog = BattleDialog(
self.app.view,
sectors=[sect_dto],
default_sector_id=sect.id,

View file

@ -40,9 +40,20 @@ class Battle:
def set_comment(self, new_comment: str | None) -> None:
self.comment = new_comment
# TODO improve draw detection
def is_draw(self) -> bool:
return self.winner_id is None and self.score is not None
if self.winner_id is not None:
return False
# Case 1: score entered → interpreted as unresolved outcome
if self.score and self.score.strip():
return True
# Case 2: explicit draw mention
if self.victory_condition:
if "draw" in self.victory_condition.casefold():
return True
return False
def is_finished(self) -> bool:
return self.winner_id is not None or self.is_draw()
def toDict(self) -> Dict[str, Any]:
return {

View file

@ -152,8 +152,12 @@ class Campaign:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
) -> Sector:
sect = Sector(name, round_id, major_id, minor_id, influence_id)
sect = Sector(
name, round_id, major_id, minor_id, influence_id, mission, description
)
self.sectors[sect.id] = sect
return sect
@ -177,6 +181,8 @@ class Campaign:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
) -> None:
sect = self.get_sector(sector_id)
old_round_id = sect.round_id
@ -187,6 +193,8 @@ class Campaign:
sect.set_major(major_id)
sect.set_minor(minor_id)
sect.set_influence(influence_id)
sect.set_mission(mission)
sect.set_description(description)
if old_round_id == round_id:
apply_update()

View file

@ -301,9 +301,13 @@ class Model:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
) -> Sector:
camp = self.get_campaign(campaign_id)
return camp.add_sector(name, round_id, major_id, minor_id, influence_id)
return camp.add_sector(
name, round_id, major_id, minor_id, influence_id, mission, description
)
# TODO replace multiloops by internal has_* method
def get_sector(self, sector_id: str) -> Sector:
@ -323,6 +327,8 @@ class Model:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
) -> None:
war = self.get_war_by_sector(sector_id)
war.update_sector(
@ -332,6 +338,8 @@ class Model:
major_id=major_id,
minor_id=minor_id,
influence_id=influence_id,
mission=mission,
description=description,
)
def remove_sector(self, sector_id: str) -> None:

View file

@ -11,6 +11,8 @@ class Sector:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
):
self.id: str = str(uuid4())
self.name: str = name
@ -18,8 +20,8 @@ class Sector:
self.major_objective_id: str | None = major_id # ref to War.objectives
self.minor_objective_id: str | None = minor_id # ref to War.objectives
self.influence_objective_id: str | None = influence_id # ref to War.objectives
self.mission: str | None = None
self.description: str | None = None
self.mission: str | None = mission
self.description: str | None = description
def set_id(self, new_id: str) -> None:
self.id = new_id
@ -39,6 +41,12 @@ class Sector:
def set_influence(self, new_influence_id: str | None) -> None:
self.influence_objective_id = new_influence_id
def set_mission(self, new_mission_id: str | None) -> None:
self.mission = new_mission_id
def set_description(self, new_description: str | None) -> None:
self.description = new_description
def toDict(self) -> Dict[str, Any]:
return {
"id": self.id,
@ -59,6 +67,8 @@ class Sector:
data.get("major_objective_id") or None,
data.get("minor_objective_id") or None,
data.get("influence_objective_id") or None,
data.get("mission") or None,
data.get("description") or None,
)
sec.set_id(data["id"])
sec.mission = data.get("mission") or None

View file

@ -233,9 +233,13 @@ class War:
major_id: str,
minor_id: str,
influence_id: str,
mission: str,
description: str,
) -> Sector:
camp = self.get_campaign(campaign_id)
return camp.add_sector(name, round_id, major_id, minor_id, influence_id)
return camp.add_sector(
name, round_id, major_id, minor_id, influence_id, mission, description
)
# TODO replace multiloops by internal has_* method
def get_sector(self, sector_id: str) -> Sector:
@ -254,6 +258,8 @@ class War:
major_id: str | None,
minor_id: str | None,
influence_id: str | None,
mission: str | None,
description: str | None,
) -> None:
camp = self.get_campaign_by_sector(sector_id)
camp.update_sector(
@ -263,6 +269,8 @@ class War:
major_id=major_id,
minor_id=minor_id,
influence_id=influence_id,
mission=mission,
description=description,
)
def remove_sector(self, sector_id: str) -> None:

View file

@ -4,10 +4,10 @@ from PyQt6.QtWidgets import QWidget, QDialog
from warchron.controller.dtos import ParticipantOption, SectorDTO
from warchron.view.helpers import select_if_exists
from warchron.view.ui.ui_battle_result_dialog import Ui_battleResultDialog
from warchron.view.ui.ui_battle_dialog import Ui_battleDialog
class BattlesDialog(QDialog):
class BattleDialog(QDialog):
def __init__(
self,
parent: QWidget | None = None,
@ -23,7 +23,7 @@ class BattlesDialog(QDialog):
default_comment: str | None = None,
) -> None:
super().__init__(parent)
self.ui: Ui_battleResultDialog = Ui_battleResultDialog()
self.ui: Ui_battleDialog = Ui_battleDialog()
self.ui.setupUi(self) # type: ignore
for sect in sectors:
self.ui.sectorComboBox.addItem(sect.name, sect.id)

View file

@ -4,10 +4,10 @@ from PyQt6.QtWidgets import QWidget, QDialog
from warchron.controller.dtos import ParticipantOption, SectorDTO
from warchron.view.helpers import select_if_exists
from warchron.view.ui.ui_choices_dialog import Ui_choicesDialog
from warchron.view.ui.ui_choice_dialog import Ui_choiceDialog
class ChoicesDialog(QDialog):
class ChoiceDialog(QDialog):
def __init__(
self,
parent: QWidget | None = None,
@ -20,7 +20,7 @@ class ChoicesDialog(QDialog):
default_comment: str | None = None,
) -> None:
super().__init__(parent)
self.ui: Ui_choicesDialog = Ui_choicesDialog()
self.ui: Ui_choiceDialog = Ui_choiceDialog()
self.ui.setupUi(self) # type: ignore
for part in participants:
self.ui.playerComboBox.addItem(part.name, part.id)

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

View file

@ -19,6 +19,8 @@ class SectorDialog(QDialog):
default_major_id: str | None = None,
default_minor_id: str | None = None,
default_influence_id: str | None = None,
default_mission: str | None = None,
default_description: str | None = None,
) -> None:
super().__init__(parent)
self.ui: Ui_sectorDialog = Ui_sectorDialog()
@ -38,6 +40,8 @@ class SectorDialog(QDialog):
select_if_exists(self.ui.majorComboBox, default_major_id)
select_if_exists(self.ui.minorComboBox, default_minor_id)
select_if_exists(self.ui.influenceComboBox, default_influence_id)
self.ui.sectorMission.setText(default_mission)
self.ui.sectorDescription.setPlainText(default_description)
def get_sector_name(self) -> str:
return self.ui.sectorName.text().strip()
@ -58,5 +62,10 @@ class SectorDialog(QDialog):
text = cast(str, self.ui.influenceComboBox.currentData())
return text if text else None
def get_mission(self) -> str | None:
text = self.ui.sectorMission.text().strip()
return text if text else None
# TODO fix mission + description missing
def get_description(self) -> str | None:
text = self.ui.sectorDescription.toPlainText().strip()
return text if text else None

View file

@ -9,13 +9,17 @@
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_battleResultDialog(object):
class Ui_battleDialog(object):
def setupUi(self, battleResultDialog):
battleResultDialog.setObjectName("battleResultDialog")
battleResultDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
battleResultDialog.resize(668, 317)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
icon.addPixmap(
QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"),
QtGui.QIcon.Mode.Normal,
QtGui.QIcon.State.Off,
)
battleResultDialog.setWindowIcon(icon)
self.gridLayout = QtWidgets.QGridLayout(battleResultDialog)
self.gridLayout.setObjectName("gridLayout")
@ -23,10 +27,14 @@ class Ui_battleResultDialog(object):
self.label_7.setObjectName("label_7")
self.gridLayout.addWidget(self.label_7, 0, 0, 1, 1)
self.sectorComboBox = QtWidgets.QComboBox(parent=battleResultDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.sectorComboBox.sizePolicy().hasHeightForWidth())
sizePolicy.setHeightForWidth(
self.sectorComboBox.sizePolicy().hasHeightForWidth()
)
self.sectorComboBox.setSizePolicy(sizePolicy)
self.sectorComboBox.setObjectName("sectorComboBox")
self.gridLayout.addWidget(self.sectorComboBox, 0, 1, 1, 1)
@ -34,10 +42,14 @@ class Ui_battleResultDialog(object):
self.label_5.setObjectName("label_5")
self.gridLayout.addWidget(self.label_5, 0, 2, 1, 1)
self.player1ComboBox = QtWidgets.QComboBox(parent=battleResultDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.player1ComboBox.sizePolicy().hasHeightForWidth())
sizePolicy.setHeightForWidth(
self.player1ComboBox.sizePolicy().hasHeightForWidth()
)
self.player1ComboBox.setSizePolicy(sizePolicy)
self.player1ComboBox.setObjectName("player1ComboBox")
self.gridLayout.addWidget(self.player1ComboBox, 0, 3, 1, 1)
@ -45,23 +57,36 @@ class Ui_battleResultDialog(object):
self.label_6.setObjectName("label_6")
self.gridLayout.addWidget(self.label_6, 0, 4, 1, 1)
self.player2ComboBox = QtWidgets.QComboBox(parent=battleResultDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.player2ComboBox.sizePolicy().hasHeightForWidth())
sizePolicy.setHeightForWidth(
self.player2ComboBox.sizePolicy().hasHeightForWidth()
)
self.player2ComboBox.setSizePolicy(sizePolicy)
self.player2ComboBox.setObjectName("player2ComboBox")
self.gridLayout.addWidget(self.player2ComboBox, 0, 5, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
spacerItem = QtWidgets.QSpacerItem(
20,
40,
QtWidgets.QSizePolicy.Policy.Minimum,
QtWidgets.QSizePolicy.Policy.Expanding,
)
self.gridLayout.addItem(spacerItem, 1, 1, 1, 1)
self.label = QtWidgets.QLabel(parent=battleResultDialog)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
self.winnerComboBox = QtWidgets.QComboBox(parent=battleResultDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.winnerComboBox.sizePolicy().hasHeightForWidth())
sizePolicy.setHeightForWidth(
self.winnerComboBox.sizePolicy().hasHeightForWidth()
)
self.winnerComboBox.setSizePolicy(sizePolicy)
self.winnerComboBox.setObjectName("winnerComboBox")
self.gridLayout.addWidget(self.winnerComboBox, 2, 1, 1, 1)
@ -85,18 +110,23 @@ class Ui_battleResultDialog(object):
self.gridLayout.addWidget(self.battleComment, 4, 1, 1, 5)
self.buttonBox = QtWidgets.QDialogButtonBox(parent=battleResultDialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.gridLayout.addWidget(self.buttonBox, 5, 4, 1, 2)
self.retranslateUi(battleResultDialog)
self.buttonBox.accepted.connect(battleResultDialog.accept) # type: ignore
self.buttonBox.rejected.connect(battleResultDialog.reject) # type: ignore
self.buttonBox.accepted.connect(battleResultDialog.accept) # type: ignore
self.buttonBox.rejected.connect(battleResultDialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(battleResultDialog)
def retranslateUi(self, battleResultDialog):
_translate = QtCore.QCoreApplication.translate
battleResultDialog.setWindowTitle(_translate("battleResultDialog", "Battle result"))
battleResultDialog.setWindowTitle(
_translate("battleResultDialog", "Battle result")
)
self.label_7.setText(_translate("battleResultDialog", "Sector"))
self.label_5.setText(_translate("battleResultDialog", "Player 1"))
self.label_6.setText(_translate("battleResultDialog", "Player 2"))
@ -108,6 +138,7 @@ class Ui_battleResultDialog(object):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
battleResultDialog = QtWidgets.QDialog()
ui = Ui_battleResultDialog()

View file

@ -0,0 +1,108 @@
# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_choice_dialog.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_choiceDialog(object):
def setupUi(self, choiceDialog):
choiceDialog.setObjectName("choiceDialog")
choiceDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
choiceDialog.resize(561, 246)
icon = QtGui.QIcon()
icon.addPixmap(
QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"),
QtGui.QIcon.Mode.Normal,
QtGui.QIcon.State.Off,
)
choiceDialog.setWindowIcon(icon)
self.gridLayout = QtWidgets.QGridLayout(choiceDialog)
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(parent=choiceDialog)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.playerComboBox = QtWidgets.QComboBox(parent=choiceDialog)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.playerComboBox.sizePolicy().hasHeightForWidth()
)
self.playerComboBox.setSizePolicy(sizePolicy)
self.playerComboBox.setObjectName("playerComboBox")
self.gridLayout.addWidget(self.playerComboBox, 0, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=choiceDialog)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.priorityComboBox = QtWidgets.QComboBox(parent=choiceDialog)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.priorityComboBox.sizePolicy().hasHeightForWidth()
)
self.priorityComboBox.setSizePolicy(sizePolicy)
self.priorityComboBox.setObjectName("priorityComboBox")
self.gridLayout.addWidget(self.priorityComboBox, 1, 1, 1, 1)
self.label_3 = QtWidgets.QLabel(parent=choiceDialog)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
self.secondaryComboBox = QtWidgets.QComboBox(parent=choiceDialog)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.secondaryComboBox.sizePolicy().hasHeightForWidth()
)
self.secondaryComboBox.setSizePolicy(sizePolicy)
self.secondaryComboBox.setObjectName("secondaryComboBox")
self.gridLayout.addWidget(self.secondaryComboBox, 2, 1, 1, 1)
self.label_4 = QtWidgets.QLabel(parent=choiceDialog)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
self.choiceComment = QtWidgets.QPlainTextEdit(parent=choiceDialog)
self.choiceComment.setObjectName("choiceComment")
self.gridLayout.addWidget(self.choiceComment, 3, 1, 1, 1)
self.buttonBox = QtWidgets.QDialogButtonBox(parent=choiceDialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 2)
self.retranslateUi(choiceDialog)
self.buttonBox.accepted.connect(choiceDialog.accept) # type: ignore
self.buttonBox.rejected.connect(choiceDialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(choiceDialog)
def retranslateUi(self, choiceDialog):
_translate = QtCore.QCoreApplication.translate
choiceDialog.setWindowTitle(_translate("choiceDialog", "Choices"))
self.label.setText(_translate("choiceDialog", "Player"))
self.label_2.setText(_translate("choiceDialog", "Priority"))
self.label_3.setText(_translate("choiceDialog", "Secondary"))
self.label_4.setText(_translate("choiceDialog", "Comment"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
choiceDialog = QtWidgets.QDialog()
ui = Ui_choiceDialog()
ui.setupUi(choiceDialog)
choiceDialog.show()
sys.exit(app.exec())

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>choicesDialog</class>
<widget class="QDialog" name="choicesDialog">
<class>choiceDialog</class>
<widget class="QDialog" name="choiceDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
@ -99,7 +99,7 @@
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>choicesDialog</receiver>
<receiver>choiceDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
@ -115,7 +115,7 @@
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>choicesDialog</receiver>
<receiver>choiceDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">

View file

@ -1,88 +0,0 @@
# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_choices_dialog.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_choicesDialog(object):
def setupUi(self, choicesDialog):
choicesDialog.setObjectName("choicesDialog")
choicesDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
choicesDialog.resize(561, 246)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
choicesDialog.setWindowIcon(icon)
self.gridLayout = QtWidgets.QGridLayout(choicesDialog)
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(parent=choicesDialog)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.playerComboBox = QtWidgets.QComboBox(parent=choicesDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.playerComboBox.sizePolicy().hasHeightForWidth())
self.playerComboBox.setSizePolicy(sizePolicy)
self.playerComboBox.setObjectName("playerComboBox")
self.gridLayout.addWidget(self.playerComboBox, 0, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=choicesDialog)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.priorityComboBox = QtWidgets.QComboBox(parent=choicesDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.priorityComboBox.sizePolicy().hasHeightForWidth())
self.priorityComboBox.setSizePolicy(sizePolicy)
self.priorityComboBox.setObjectName("priorityComboBox")
self.gridLayout.addWidget(self.priorityComboBox, 1, 1, 1, 1)
self.label_3 = QtWidgets.QLabel(parent=choicesDialog)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
self.secondaryComboBox = QtWidgets.QComboBox(parent=choicesDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.secondaryComboBox.sizePolicy().hasHeightForWidth())
self.secondaryComboBox.setSizePolicy(sizePolicy)
self.secondaryComboBox.setObjectName("secondaryComboBox")
self.gridLayout.addWidget(self.secondaryComboBox, 2, 1, 1, 1)
self.label_4 = QtWidgets.QLabel(parent=choicesDialog)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
self.choiceComment = QtWidgets.QPlainTextEdit(parent=choicesDialog)
self.choiceComment.setObjectName("choiceComment")
self.gridLayout.addWidget(self.choiceComment, 3, 1, 1, 1)
self.buttonBox = QtWidgets.QDialogButtonBox(parent=choicesDialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 2)
self.retranslateUi(choicesDialog)
self.buttonBox.accepted.connect(choicesDialog.accept) # type: ignore
self.buttonBox.rejected.connect(choicesDialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(choicesDialog)
def retranslateUi(self, choicesDialog):
_translate = QtCore.QCoreApplication.translate
choicesDialog.setWindowTitle(_translate("choicesDialog", "Choices"))
self.label.setText(_translate("choicesDialog", "Player"))
self.label_2.setText(_translate("choicesDialog", "Priority"))
self.label_3.setText(_translate("choicesDialog", "Secondary"))
self.label_4.setText(_translate("choicesDialog", "Comment"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
choicesDialog = QtWidgets.QDialog()
ui = Ui_choicesDialog()
ui.setupUi(choicesDialog)
choicesDialog.show()
sys.exit(app.exec())

View file

@ -229,6 +229,9 @@ class Ui_MainWindow(object):
self.horizontalLayout_6.addItem(spacerItem10)
self.endWarBtn = QtWidgets.QPushButton(parent=self.pageWar)
self.endWarBtn.setEnabled(True)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/flag-white.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.endWarBtn.setIcon(icon3)
self.endWarBtn.setObjectName("endWarBtn")
self.horizontalLayout_6.addWidget(self.endWarBtn)
self.verticalLayout_10.addLayout(self.horizontalLayout_6)
@ -272,7 +275,7 @@ class Ui_MainWindow(object):
self.sectorsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
self.sectorsTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
self.sectorsTable.setObjectName("sectorsTable")
self.sectorsTable.setColumnCount(6)
self.sectorsTable.setColumnCount(7)
self.sectorsTable.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.sectorsTable.setHorizontalHeaderItem(0, item)
@ -286,6 +289,8 @@ class Ui_MainWindow(object):
self.sectorsTable.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.sectorsTable.setHorizontalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.sectorsTable.setHorizontalHeaderItem(6, item)
self.sectorsTable.horizontalHeader().setStretchLastSection(False)
self.verticalLayout_5.addWidget(self.sectorsTable)
self.verticalLayout_7.addWidget(self.groupBox_3)
@ -327,6 +332,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_10.addItem(spacerItem14)
self.endCampaignBtn = QtWidgets.QPushButton(parent=self.pageCampaign)
self.endCampaignBtn.setEnabled(True)
self.endCampaignBtn.setIcon(icon3)
self.endCampaignBtn.setObjectName("endCampaignBtn")
self.horizontalLayout_10.addWidget(self.endCampaignBtn)
self.verticalLayout_7.addLayout(self.horizontalLayout_10)
@ -370,6 +376,9 @@ class Ui_MainWindow(object):
self.horizontalLayout_13.addItem(spacerItem15)
self.resolvePairingBtn = QtWidgets.QPushButton(parent=self.pageRound)
self.resolvePairingBtn.setEnabled(False)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/arrow-switch.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.resolvePairingBtn.setIcon(icon4)
self.resolvePairingBtn.setObjectName("resolvePairingBtn")
self.horizontalLayout_13.addWidget(self.resolvePairingBtn)
self.verticalLayout_8.addLayout(self.horizontalLayout_13)
@ -381,7 +390,7 @@ class Ui_MainWindow(object):
self.battlesTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
self.battlesTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
self.battlesTable.setObjectName("battlesTable")
self.battlesTable.setColumnCount(3)
self.battlesTable.setColumnCount(6)
self.battlesTable.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.battlesTable.setHorizontalHeaderItem(0, item)
@ -389,6 +398,12 @@ class Ui_MainWindow(object):
self.battlesTable.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.battlesTable.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.battlesTable.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.battlesTable.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.battlesTable.setHorizontalHeaderItem(5, item)
self.battlesTable.horizontalHeader().setStretchLastSection(False)
self.horizontalLayout_12.addWidget(self.battlesTable)
self.verticalLayout_8.addWidget(self.groupBox_6)
@ -398,14 +413,15 @@ class Ui_MainWindow(object):
self.horizontalLayout_9.addItem(spacerItem16)
self.endRoundBtn = QtWidgets.QPushButton(parent=self.pageRound)
self.endRoundBtn.setEnabled(True)
self.endRoundBtn.setIcon(icon3)
self.endRoundBtn.setObjectName("endRoundBtn")
self.horizontalLayout_9.addWidget(self.endRoundBtn)
self.verticalLayout_8.addLayout(self.horizontalLayout_9)
self.selectedDetailsStack.addWidget(self.pageRound)
self.verticalLayout_3.addWidget(self.splitter)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/swords-small.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.tabWidget.addTab(self.warsTab, icon3, "")
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/swords-small.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.tabWidget.addTab(self.warsTab, icon5, "")
self.verticalLayout_9.addWidget(self.tabWidget)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
@ -422,52 +438,52 @@ class Ui_MainWindow(object):
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionNew = QtGui.QAction(parent=MainWindow)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/document.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionNew.setIcon(icon4)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/document.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionNew.setIcon(icon6)
self.actionNew.setObjectName("actionNew")
self.actionOpen = QtGui.QAction(parent=MainWindow)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/folder.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionOpen.setIcon(icon5)
icon7 = QtGui.QIcon()
icon7.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/folder.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionOpen.setIcon(icon7)
self.actionOpen.setObjectName("actionOpen")
self.actionSave = QtGui.QAction(parent=MainWindow)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/disk.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionSave.setIcon(icon6)
icon8 = QtGui.QIcon()
icon8.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/disk.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionSave.setIcon(icon8)
self.actionSave.setObjectName("actionSave")
self.actionExit = QtGui.QAction(parent=MainWindow)
icon7 = QtGui.QIcon()
icon7.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/door--arrow.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionExit.setIcon(icon7)
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/door--arrow.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionExit.setIcon(icon9)
self.actionExit.setObjectName("actionExit")
self.actionUndo = QtGui.QAction(parent=MainWindow)
self.actionUndo.setEnabled(False)
icon8 = QtGui.QIcon()
icon8.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/arrow-curve-180-left.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionUndo.setIcon(icon8)
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/arrow-curve-180-left.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionUndo.setIcon(icon10)
self.actionUndo.setObjectName("actionUndo")
self.actionRedo = QtGui.QAction(parent=MainWindow)
self.actionRedo.setEnabled(False)
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/arrow-curve.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionRedo.setIcon(icon9)
icon11 = QtGui.QIcon()
icon11.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/arrow-curve.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionRedo.setIcon(icon11)
self.actionRedo.setObjectName("actionRedo")
self.actionAbout = QtGui.QAction(parent=MainWindow)
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/question.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionAbout.setIcon(icon10)
icon12 = QtGui.QIcon()
icon12.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/question.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionAbout.setIcon(icon12)
self.actionAbout.setObjectName("actionAbout")
self.actionExport = QtGui.QAction(parent=MainWindow)
self.actionExport.setEnabled(False)
icon11 = QtGui.QIcon()
icon11.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/notebook--arrow.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionExport.setIcon(icon11)
icon13 = QtGui.QIcon()
icon13.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/notebook--arrow.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionExport.setIcon(icon13)
self.actionExport.setObjectName("actionExport")
self.actionSave_as = QtGui.QAction(parent=MainWindow)
icon12 = QtGui.QIcon()
icon12.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/disk--pencil.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionSave_as.setIcon(icon12)
icon14 = QtGui.QIcon()
icon14.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/disk--pencil.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
self.actionSave_as.setIcon(icon14)
self.actionSave_as.setObjectName("actionSave_as")
self.menuFile.addAction(self.actionNew)
self.menuFile.addAction(self.actionOpen)
@ -546,12 +562,14 @@ class Ui_MainWindow(object):
item = self.sectorsTable.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Round"))
item = self.sectorsTable.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Major obj."))
item.setText(_translate("MainWindow", "Mission"))
item = self.sectorsTable.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Minor opp."))
item.setText(_translate("MainWindow", "Major obj."))
item = self.sectorsTable.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Influence imp."))
item.setText(_translate("MainWindow", "Minor opp."))
item = self.sectorsTable.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "Influence imp."))
item = self.sectorsTable.horizontalHeaderItem(6)
item.setText(_translate("MainWindow", "Description"))
self.groupBox_4.setTitle(_translate("MainWindow", "Participants"))
self.addCampaignParticipantBtn.setText(_translate("MainWindow", "Add participant"))
@ -585,6 +603,12 @@ class Ui_MainWindow(object):
item.setText(_translate("MainWindow", "Player 1"))
item = self.battlesTable.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Player 2"))
item = self.battlesTable.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Score"))
item = self.battlesTable.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Victory condition"))
item = self.battlesTable.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "Comment"))
self.endRoundBtn.setText(_translate("MainWindow", "End round"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.warsTab), _translate("MainWindow", "Wars"))
self.menuFile.setTitle(_translate("MainWindow", "File"))

View file

@ -552,6 +552,10 @@
<property name="text">
<string>End war</string>
</property>
<property name="icon">
<iconset>
<normaloff>../resources/flag-white.png</normaloff>../resources/flag-white.png</iconset>
</property>
</widget>
</item>
</layout>
@ -662,6 +666,11 @@
<string>Round</string>
</property>
</column>
<column>
<property name="text">
<string>Mission</string>
</property>
</column>
<column>
<property name="text">
<string>Major obj.</string>
@ -788,6 +797,10 @@
<property name="text">
<string>End campaign</string>
</property>
<property name="icon">
<iconset>
<normaloff>../resources/flag-white.png</normaloff>../resources/flag-white.png</iconset>
</property>
</widget>
</item>
</layout>
@ -878,6 +891,10 @@
<property name="text">
<string>Resolve pairing</string>
</property>
<property name="icon">
<iconset>
<normaloff>../resources/arrow-switch.png</normaloff>../resources/arrow-switch.png</iconset>
</property>
</widget>
</item>
</layout>
@ -917,6 +934,21 @@
<string>Player 2</string>
</property>
</column>
<column>
<property name="text">
<string>Score</string>
</property>
</column>
<column>
<property name="text">
<string>Victory condition</string>
</property>
</column>
<column>
<property name="text">
<string>Comment</string>
</property>
</column>
</widget>
</item>
</layout>
@ -945,6 +977,10 @@
<property name="text">
<string>End round</string>
</property>
<property name="icon">
<iconset>
<normaloff>../resources/flag-white.png</normaloff>../resources/flag-white.png</iconset>
</property>
</widget>
</item>
</layout>

View file

@ -431,15 +431,19 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
round_item = QtWidgets.QTableWidgetItem(
format_round_label(sect.round_index)
)
mission_item = QtWidgets.QTableWidgetItem(sect.mission)
major_item = QtWidgets.QTableWidgetItem(sect.major)
minor_item = QtWidgets.QTableWidgetItem(sect.minor)
influence_item = QtWidgets.QTableWidgetItem(sect.influence)
description_item = QtWidgets.QTableWidgetItem(sect.description)
name_item.setData(Qt.ItemDataRole.UserRole, sect.id)
table.setItem(row, 0, name_item)
table.setItem(row, 1, round_item)
table.setItem(row, 2, major_item)
table.setItem(row, 3, minor_item)
table.setItem(row, 4, influence_item)
table.setItem(row, 2, mission_item)
table.setItem(row, 3, major_item)
table.setItem(row, 4, minor_item)
table.setItem(row, 5, influence_item)
table.setItem(row, 6, description_item)
table.resizeColumnsToContents()
def display_campaign_participants(
@ -525,10 +529,22 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
table.setRowCount(len(sectors))
for row, battle in enumerate(sectors):
sector_item = QtWidgets.QTableWidgetItem(battle.sector_name)
if battle.state_icon:
sector_item.setIcon(QIcon(battle.state_icon))
player_1_item = QtWidgets.QTableWidgetItem(battle.player_1)
if battle.player1_icon:
player_1_item.setIcon(QIcon(battle.player1_icon))
player_2_item = QtWidgets.QTableWidgetItem(battle.player_2)
if battle.player2_icon:
player_2_item.setIcon(QIcon(battle.player2_icon))
score_item = QtWidgets.QTableWidgetItem(battle.score)
vp_item = QtWidgets.QTableWidgetItem(battle.victory_condition)
comment_item = QtWidgets.QTableWidgetItem(battle.comment)
sector_item.setData(Qt.ItemDataRole.UserRole, battle.id)
table.setItem(row, 0, sector_item)
table.setItem(row, 1, player_1_item)
table.setItem(row, 2, player_2_item)
table.setItem(row, 3, score_item)
table.setItem(row, 4, vp_item)
table.setItem(row, 5, comment_item)
table.resizeColumnsToContents()