diff --git a/src/warchron/controller/campaign_controller.py b/src/warchron/controller/campaign_controller.py index 96c3a9a..e0d37c1 100644 --- a/src/warchron/controller/campaign_controller.py +++ b/src/warchron/controller/campaign_controller.py @@ -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, ) diff --git a/src/warchron/controller/dtos.py b/src/warchron/controller/dtos.py index d96df92..573b0c3 100644 --- a/src/warchron/controller/dtos.py +++ b/src/warchron/controller/dtos.py @@ -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 diff --git a/src/warchron/controller/round_controller.py b/src/warchron/controller/round_controller.py index 52c3201..d15c0d9 100644 --- a/src/warchron/controller/round_controller.py +++ b/src/warchron/controller/round_controller.py @@ -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, diff --git a/src/warchron/model/battle.py b/src/warchron/model/battle.py index 219fc20..1b4a0e4 100644 --- a/src/warchron/model/battle.py +++ b/src/warchron/model/battle.py @@ -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 { diff --git a/src/warchron/model/campaign.py b/src/warchron/model/campaign.py index 4a847c0..fb16c97 100644 --- a/src/warchron/model/campaign.py +++ b/src/warchron/model/campaign.py @@ -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() diff --git a/src/warchron/model/model.py b/src/warchron/model/model.py index 36ab496..ca7cd10 100644 --- a/src/warchron/model/model.py +++ b/src/warchron/model/model.py @@ -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: diff --git a/src/warchron/model/sector.py b/src/warchron/model/sector.py index 3b76068..479dcf6 100644 --- a/src/warchron/model/sector.py +++ b/src/warchron/model/sector.py @@ -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 diff --git a/src/warchron/model/war.py b/src/warchron/model/war.py index 71cbe5c..a2fa125 100644 --- a/src/warchron/model/war.py +++ b/src/warchron/model/war.py @@ -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: diff --git a/src/warchron/view/battles_dialog.py b/src/warchron/view/battle_dialog.py similarity index 94% rename from src/warchron/view/battles_dialog.py rename to src/warchron/view/battle_dialog.py index 9e33255..b131740 100644 --- a/src/warchron/view/battles_dialog.py +++ b/src/warchron/view/battle_dialog.py @@ -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) diff --git a/src/warchron/view/choices_dialog.py b/src/warchron/view/choice_dialog.py similarity index 92% rename from src/warchron/view/choices_dialog.py rename to src/warchron/view/choice_dialog.py index 0c00e4f..e7d97a5 100644 --- a/src/warchron/view/choices_dialog.py +++ b/src/warchron/view/choice_dialog.py @@ -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) diff --git a/src/warchron/view/resources/arrow-switch.png b/src/warchron/view/resources/arrow-switch.png new file mode 100644 index 0000000..ab3dd30 Binary files /dev/null and b/src/warchron/view/resources/arrow-switch.png differ diff --git a/src/warchron/view/resources/balance.png b/src/warchron/view/resources/balance.png new file mode 100644 index 0000000..e213cd5 Binary files /dev/null and b/src/warchron/view/resources/balance.png differ diff --git a/src/warchron/view/resources/flag-white.png b/src/warchron/view/resources/flag-white.png new file mode 100644 index 0000000..725c20a Binary files /dev/null and b/src/warchron/view/resources/flag-white.png differ diff --git a/src/warchron/view/resources/hourglass.png b/src/warchron/view/resources/hourglass.png new file mode 100644 index 0000000..127c5d6 Binary files /dev/null and b/src/warchron/view/resources/hourglass.png differ diff --git a/src/warchron/view/resources/tick.png b/src/warchron/view/resources/tick.png new file mode 100644 index 0000000..2414885 Binary files /dev/null and b/src/warchron/view/resources/tick.png differ diff --git a/src/warchron/view/resources/trophy.png b/src/warchron/view/resources/trophy.png new file mode 100644 index 0000000..9a7f401 Binary files /dev/null and b/src/warchron/view/resources/trophy.png differ diff --git a/src/warchron/view/sector_dialog.py b/src/warchron/view/sector_dialog.py index 65e2802..783fb12 100644 --- a/src/warchron/view/sector_dialog.py +++ b/src/warchron/view/sector_dialog.py @@ -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 diff --git a/src/warchron/view/ui/ui_battle_result_dialog.py b/src/warchron/view/ui/ui_battle_dialog.py similarity index 75% rename from src/warchron/view/ui/ui_battle_result_dialog.py rename to src/warchron/view/ui/ui_battle_dialog.py index c236b14..40614cd 100644 --- a/src/warchron/view/ui/ui_battle_result_dialog.py +++ b/src/warchron/view/ui/ui_battle_dialog.py @@ -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() diff --git a/src/warchron/view/ui/ui_battle_result_dialog.ui b/src/warchron/view/ui/ui_battle_dialog.ui similarity index 100% rename from src/warchron/view/ui/ui_battle_result_dialog.ui rename to src/warchron/view/ui/ui_battle_dialog.ui diff --git a/src/warchron/view/ui/ui_choice_dialog.py b/src/warchron/view/ui/ui_choice_dialog.py new file mode 100644 index 0000000..19f7026 --- /dev/null +++ b/src/warchron/view/ui/ui_choice_dialog.py @@ -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()) diff --git a/src/warchron/view/ui/ui_choices_dialog.ui b/src/warchron/view/ui/ui_choice_dialog.ui similarity index 95% rename from src/warchron/view/ui/ui_choices_dialog.ui rename to src/warchron/view/ui/ui_choice_dialog.ui index 0259a2a..1a604c4 100644 --- a/src/warchron/view/ui/ui_choices_dialog.ui +++ b/src/warchron/view/ui/ui_choice_dialog.ui @@ -1,7 +1,7 @@ - choicesDialog - + choiceDialog + Qt::ApplicationModal @@ -99,7 +99,7 @@ buttonBox accepted() - choicesDialog + choiceDialog accept() @@ -115,7 +115,7 @@ buttonBox rejected() - choicesDialog + choiceDialog reject() diff --git a/src/warchron/view/ui/ui_choices_dialog.py b/src/warchron/view/ui/ui_choices_dialog.py deleted file mode 100644 index 62f87b0..0000000 --- a/src/warchron/view/ui/ui_choices_dialog.py +++ /dev/null @@ -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()) diff --git a/src/warchron/view/ui/ui_main_window.py b/src/warchron/view/ui/ui_main_window.py index 234c75f..a83afc4 100644 --- a/src/warchron/view/ui/ui_main_window.py +++ b/src/warchron/view/ui/ui_main_window.py @@ -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")) diff --git a/src/warchron/view/ui/ui_main_window.ui b/src/warchron/view/ui/ui_main_window.ui index 735b3c0..54d1ca3 100644 --- a/src/warchron/view/ui/ui_main_window.ui +++ b/src/warchron/view/ui/ui_main_window.ui @@ -552,6 +552,10 @@ End war + + + ../resources/flag-white.png../resources/flag-white.png + @@ -662,6 +666,11 @@ Round + + + Mission + + Major obj. @@ -788,6 +797,10 @@ End campaign + + + ../resources/flag-white.png../resources/flag-white.png + @@ -878,6 +891,10 @@ Resolve pairing + + + ../resources/arrow-switch.png../resources/arrow-switch.png + @@ -917,6 +934,21 @@ Player 2 + + + Score + + + + + Victory condition + + + + + Comment + + @@ -945,6 +977,10 @@ End round + + + ../resources/flag-white.png../resources/flag-white.png + diff --git a/src/warchron/view/view.py b/src/warchron/view/view.py index e7b999b..005c090 100644 --- a/src/warchron/view/view.py +++ b/src/warchron/view/view.py @@ -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()