diff --git a/example.json b/example.json
index 6dba8a4..e94efdd 100644
--- a/example.json
+++ b/example.json
@@ -30,7 +30,7 @@
"name": "Llael War 2025",
"year": 2025,
- "participants": {
+ "entrants": {
"e7844fbb-8366-44e4-bb43-89b9eef6ef64": {
"war_points": 0,
"influence_tokens": 1
diff --git a/src/warchron/constants.py b/src/warchron/constants.py
deleted file mode 100644
index 1d431b6..0000000
--- a/src/warchron/constants.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from enum import StrEnum
-from enum import Enum, auto
-
-from PyQt6.QtCore import Qt
-
-ROLE_TYPE = Qt.ItemDataRole.UserRole
-ROLE_ID = Qt.ItemDataRole.UserRole + 1
-
-class ItemType(StrEnum):
- PLAYER = "player"
- WAR = "war"
- CAMPAIGN = "campaign"
- ROUND = "round"
- OBJECTIVE = "objective"
- WAR_PARTICIPANT = "war_participant"
-
-class RefreshScope(Enum):
- NONE = auto()
- PLAYERS_LIST = auto()
- WARS_TREE = auto()
- WAR_DETAILS = auto()
- CAMPAIGN_DETAILS = auto()
- ROUND_DETAILS = auto()
-
diff --git a/src/warchron/controller/controller.py b/src/warchron/controller/controller.py
index af71bbd..62c1397 100644
--- a/src/warchron/controller/controller.py
+++ b/src/warchron/controller/controller.py
@@ -5,8 +5,7 @@ from PyQt6.QtWidgets import QMessageBox, QDialog
from warchron.model.model import Model
from warchron.view.view import View
-from warchron.constants import ItemType, RefreshScope
-from warchron.view.view import PlayerDialog, WarDialog, CampaignDialog, ObjectiveDialog, ParticipantDialog
+from warchron.view.view import PlayerDialog, WarDialog, CampaignDialog
class Controller:
def __init__(self, model: Model, view: View):
@@ -35,8 +34,6 @@ class Controller:
self.view.actionSave_as.triggered.connect(self.save_as)
self.view.addPlayerBtn.clicked.connect(self.add_player)
self.view.addWarBtn.clicked.connect(self.add_war)
- self.view.addObjectiveBtn.clicked.connect(self.add_objective)
- self.view.addWarParticipantBtn.clicked.connect(self.add_war_participant)
self.view.on_edit_item = self.edit_item
self.view.on_delete_item = self.delete_item
@@ -53,8 +50,6 @@ class Controller:
elif reply == QMessageBox.StandardButton.Cancel:
return False
return True
-
- # Menu bar methods
def new(self):
if self.is_dirty:
@@ -110,8 +105,6 @@ class Controller:
self.is_dirty = False
self.update_window_title()
-# Display methods
-
def update_window_title(self):
base = "WarChron"
if self.current_file:
@@ -128,169 +121,32 @@ class Controller:
def refresh_wars_view(self):
wars = self.model.get_all_wars()
- self.view.display_wars_tree(wars)
+ self.view.display_wars(wars)
- def _fill_war_details(self, war_id: str):
- war = self.model.get_war(war_id)
- self.view.show_war_details(name=war.name, year=war.year)
- objectives = war.get_all_objectives()
- self.view.display_war_objectives(objectives)
- participants = war.get_all_war_participants()
- participants_for_display = [
- (self.model.get_player_name(p.id), p.faction, p.id)
- for p in participants
- ]
- self.view.display_war_participants(participants_for_display)
-
- def _fill_campaign_details(self, campaign_id: str):
- camp = self.model.get_campaign(campaign_id)
- self.view.show_campaign_details(name=camp.name, month=camp.month)
-
- def _fill_round_details(self, round_id: str):
- index = self.model.get_round_index(round_id)
- self.view.show_round_details(index=index)
+ def refresh_views(self):
+ current = self.view.get_current_tab()
+ if current == "players":
+ self.refresh_players_view()
+ elif current == "wars":
+ self.refresh_wars_view()
def on_tree_selection_changed(self, selection):
self.selected_war_id = None
self.selected_campaign_id = None
self.selected_round_id = None
if selection:
- item_type = selection["type"]
- item_id = selection["id"]
- if item_type == ItemType.WAR:
- self.selected_war_id = item_id
- self.view.show_details(ItemType.WAR)
- self._fill_war_details(item_id)
- elif item_type == ItemType.CAMPAIGN:
- self.selected_campaign_id = item_id
- self.view.show_details(ItemType.CAMPAIGN)
- self._fill_campaign_details(item_id)
- elif item_type == ItemType.ROUND:
- self.selected_round_id = item_id
- self.view.show_details(ItemType.ROUND)
- self._fill_round_details(item_id)
- else:
- self.view.show_details(None)
- self.update_actions_state()
- return
+ if selection["type"] == "war":
+ self.selected_war_id = selection["id"]
+ elif selection["type"] == "campaign":
+ self.selected_campaign_id = selection["id"]
+ elif selection["type"] == "round":
+ self.selected_round_id = selection["id"]
self.update_actions_state()
def update_actions_state(self):
self.view.set_add_campaign_enabled(self.selected_war_id is not None)
self.view.set_add_round_enabled(self.selected_campaign_id is not None)
- def refresh(self, scope: RefreshScope):
- match scope:
- case RefreshScope.PLAYERS_LIST:
- self.refresh_players_view()
- case RefreshScope.WARS_TREE:
- self.refresh_wars_view()
- case RefreshScope.WAR_DETAILS:
- if self.selected_war_id:
- self.view.show_details(ItemType.WAR)
- self._fill_war_details(self.selected_war_id)
- case RefreshScope.CAMPAIGN_DETAILS:
- if self.selected_campaign_id:
- self.view.show_details(ItemType.CAMPAIGN)
- self._fill_campaign_details(self.selected_campaign_id)
- case RefreshScope.ROUND_DETAILS:
- if self.selected_round_id:
- self.view.show_details(ItemType.ROUND)
- self._fill_round_details(self.selected_round_id)
- self.update_window_title()
-
-# Common command methods
-
- def refresh_and_select(self, scope: RefreshScope, *, item_type: ItemType, item_id: str):
- self.refresh(scope)
- self.view.select_tree_item(item_type=item_type, item_id=item_id)
-
- def edit_item(self, item_type: str, item_id: str):
- if item_type == ItemType.PLAYER:
- play = self.model.get_player(item_id)
- dialog = PlayerDialog(self.view, default_name=play.name)
- if dialog.exec() == QDialog.DialogCode.Accepted:
- name = dialog.get_player_name()
- if not self._validate_player_inputs(name):
- return
- self.model.update_player(item_id, name=name)
- self.refresh(RefreshScope.PLAYERS_LIST)
- elif item_type == ItemType.WAR:
- war = self.model.get_war(item_id)
- dialog = WarDialog(self.view, default_name=war.name, default_year=war.year)
- if dialog.exec() == QDialog.DialogCode.Accepted:
- name = dialog.get_war_name()
- year = dialog.get_war_year()
- if not self._validate_war_inputs(name, year):
- return
- self.model.update_war(item_id, name=name, year=year)
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id)
- elif item_type == ItemType.CAMPAIGN:
- camp = self.model.get_campaign(item_id)
- dialog = CampaignDialog(self.view, default_name=camp.name, default_month=camp.month)
- if dialog.exec() == QDialog.DialogCode.Accepted:
- name = dialog.get_campaign_name()
- month = dialog.get_campaign_month()
- if not self._validate_campaign_inputs(name, month):
- return
- self.model.update_campaign(item_id, name=name, month=month)
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp.id)
- elif item_type == ItemType.OBJECTIVE:
- obj = self.model.get_objective(item_id)
- dialog = ObjectiveDialog(self.view, default_name=obj.name, default_description=obj.description)
- if dialog.exec() == QDialog.DialogCode.Accepted:
- name = dialog.get_objective_name()
- description = dialog.get_objective_description()
- if not self._validate_objective_inputs(name, description):
- return
- self.model.update_objective(item_id, name=name, description=description)
- self.refresh(RefreshScope.WAR_DETAILS)
- elif item_type == ItemType.WAR_PARTICIPANT:
- part = self.model.get_war_participant(item_id)
- player = self.model.get_player(part.id)
- dialog = ParticipantDialog(self.view, players=[player], default_player_id=part.id, default_faction=part.faction)
- if dialog.exec() == QDialog.DialogCode.Accepted:
- id = dialog.get_player_id()
- faction = dialog.get_participant_faction()
- self.model.update_war_participant(item_id, faction=faction)
- self.refresh(RefreshScope.WAR_DETAILS)
- self.is_dirty = True
-
- def delete_item(self, item_type: str, item_id: str):
- reply = QMessageBox.question(
- self.view,
- "Confirm deletion",
- "Are you sure you want to delete this item?",
- QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
- )
- if reply != QMessageBox.StandardButton.Yes:
- return
- if item_type == ItemType.PLAYER:
- self.model.remove_player(item_id)
- self.refresh(RefreshScope.PLAYERS_LIST)
- elif item_type == ItemType.WAR:
- self.model.remove_war(item_id)
- self.refresh(RefreshScope.WARS_TREE)
- elif item_type == ItemType.CAMPAIGN:
- war = self.model.get_war_by_campaign(item_id)
- war_id = war.id
- self.model.remove_campaign(item_id)
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war_id)
- elif item_type == ItemType.OBJECTIVE:
- self.model.remove_objective(item_id)
- self.refresh(RefreshScope.WAR_DETAILS)
- elif item_type == ItemType.WAR_PARTICIPANT:
- self.model.remove_war_participant(item_id)
- self.refresh(RefreshScope.WAR_DETAILS)
- elif item_type == ItemType.ROUND:
- camp = self.model.get_campaign_by_round(item_id)
- camp_id = camp.id
- self.model.remove_round(item_id)
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp_id)
- self.is_dirty = True
-
-# Player methods
-
def _validate_player_inputs(self, name: str) -> bool:
if not name.strip():
QMessageBox.warning(
@@ -310,9 +166,8 @@ class Controller:
return
self.model.add_player(name)
self.is_dirty = True
- self.refresh(RefreshScope.PLAYERS_LIST)
-
-# War methods
+ self.refresh_players_view()
+ self.update_window_title()
def _validate_war_inputs(self, name: str, year: int) -> bool:
if not name.strip():
@@ -339,54 +194,10 @@ class Controller:
year = dialog.get_war_year()
if not self._validate_war_inputs(name, year):
return
- war = self.model.add_war(name, year)
+ self.model.add_war(name, year)
self.is_dirty = True
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id)
-
-# Objective methods
-
- def _validate_objective_inputs(self, name: str, description: int) -> bool:
- if not name.strip():
- QMessageBox.warning(
- self.view,
- "Invalid name",
- "Campaign name cannot be empty."
- )
- return False
- return True
-
- def add_objective(self):
- if not self.selected_war_id:
- return
- dialog = ObjectiveDialog(self.view)
- if dialog.exec() != QDialog.DialogCode.Accepted:
- return
- name = dialog.get_objective_name()
- description = dialog.get_objective_description()
- if not name:
- return
- self.model.add_objective(self.selected_war_id, name, description)
- self.is_dirty = True
- self.refresh(RefreshScope.WAR_DETAILS)
-
-# War participant methods
-
- def add_war_participant(self):
- if not self.selected_war_id:
- return
- players = self.model.get_available_players(self.selected_war_id)
- dialog = ParticipantDialog(self.view, players=players)
- if dialog.exec() != QDialog.DialogCode.Accepted:
- return
- player_id = dialog.get_player_id()
- faction = dialog.get_participant_faction()
- if not player_id:
- return
- self.model.add_war_participant(self.selected_war_id, player_id, faction)
- self.is_dirty = True
- self.refresh(RefreshScope.WAR_DETAILS)
-
-# Campaign methods
+ self.refresh_wars_view()
+ self.update_window_title()
def _validate_campaign_inputs(self, name: str, month: int) -> bool:
if not name.strip():
@@ -415,15 +226,66 @@ class Controller:
month = dialog.get_campaign_month()
if not self._validate_campaign_inputs(name, month):
return
- camp = self.model.add_campaign(self.selected_war_id, name, month)
+ self.model.add_campaign(self.selected_war_id, name, month)
self.is_dirty = True
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp.id)
-
-# Round methods
+ self.refresh_wars_view()
+ self.update_window_title()
def add_round(self):
if not self.selected_campaign_id:
return
- rnd = self.model.add_round(self.selected_campaign_id)
+ self.model.add_round(self.selected_campaign_id)
self.is_dirty = True
- self.refresh_and_select(RefreshScope.WARS_TREE, item_type=ItemType.ROUND, item_id=rnd.id)
\ No newline at end of file
+ self.refresh_wars_view()
+ self.update_window_title()
+
+ def edit_item(self, item_type: str, item_id: str):
+ if item_type == "player":
+ play = self.model.get_player(item_id)
+ dialog = PlayerDialog(self.view, default_name=play.name)
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ name = dialog.get_player_name()
+ if not self._validate_player_inputs(name):
+ return
+ self.model.update_player(item_id, name=name)
+ elif item_type == "war":
+ war = self.model.get_war(item_id)
+ dialog = WarDialog(self.view, default_name=war.name, default_year=war.year)
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ name = dialog.get_war_name()
+ year = dialog.get_war_year()
+ if not self._validate_war_inputs(name, year):
+ return
+ self.model.update_war(item_id, name=name, year=year)
+ elif item_type == "campaign":
+ camp = self.model.get_campaign(item_id)
+ dialog = CampaignDialog(self.view, default_name=camp.name, default_month=camp.month)
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ name = dialog.get_campaign_name()
+ month = dialog.get_campaign_month()
+ if not self._validate_campaign_inputs(name, month):
+ return
+ self.model.update_campaign(item_id, name=name, month=month)
+ self.is_dirty = True
+ self.refresh_views()
+
+ def delete_item(self, item_type: str, item_id: str):
+ reply = QMessageBox.question(
+ self.view,
+ "Confirm deletion",
+ "Are you sure you want to delete this item?",
+ QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
+ )
+ if reply != QMessageBox.StandardButton.Yes:
+ return
+ if item_type == "player":
+ self.model.remove_player(item_id)
+ elif item_type == "war":
+ self.model.remove_war(item_id)
+ elif item_type == "campaign":
+ self.model.remove_campaign(item_id)
+ elif item_type == "round":
+ self.model.remove_round(item_id)
+ self.is_dirty = True
+ self.refresh_views()
+
diff --git a/src/warchron/model/campaign.py b/src/warchron/model/campaign.py
index 76c9d9b..66dd16d 100644
--- a/src/warchron/model/campaign.py
+++ b/src/warchron/model/campaign.py
@@ -1,29 +1,27 @@
-from __future__ import annotations
from uuid import uuid4
from datetime import datetime
from warchron.model.round import Round
class Campaign:
- def __init__(self, name: str, month: int):
- self.id: str = str(uuid4())
- self.name: str = name
- self.month: int = month
- self.participants = {}
- self.sectors = {}
+ def __init__(self, name, month):
+ self.id = str(uuid4())
+ self.name = name
+ self.month = month
+ self.entrants = {}
self.rounds = []
self.is_over = False
- def set_id(self, new_id: str):
+ def set_id(self, new_id):
self.id = new_id
- def set_name(self, new_name: str):
+ def set_name(self, new_name):
self.name = new_name
- def set_month(self, new_month: int):
+ def set_month(self, new_month):
self.month = new_month
- def set_state(self, new_state: bool):
+ def set_state(self, new_state):
self.is_over = new_state
def toDict(self):
@@ -31,7 +29,7 @@ class Campaign:
"id" : self.id,
"name" : self.name,
"month" : self.month,
- # "participants" : self.participants,
+ # "entrants" : self.entrants,
"rounds": [rnd.toDict() for rnd in self.rounds],
"is_over": self.is_over
}
@@ -40,16 +38,13 @@ class Campaign:
def fromDict(data: dict):
camp = Campaign(name=data["name"], month=data["month"])
camp.set_id(data["id"])
- # camp.participants = data.get("participants", {})
+ # camp.entrants = data.get("entrants", {})
for rnd_data in data.get("rounds", []):
camp.rounds.append(Round.fromDict(rnd_data))
camp.set_state(data.get("is_over", False))
return camp
-
- def has_round(self, round_id: str) -> bool:
- return any(r.id == round_id for r in self.rounds)
- def get_round(self, round_id: str) -> Round:
+ def get_round(self, round_id) -> Round:
return self.rounds[round_id]
def get_all_rounds(self) -> list[Round]:
@@ -64,25 +59,3 @@ class Campaign:
rnd = next((r for r in self.rounds if r.id == round_id), None)
if rnd:
self.rounds.remove(rnd)
-
- def get_round_index(self, round_id: str) -> int:
- for index, rnd in enumerate(self.rounds, start=1):
- if rnd.id == round_id:
- return index
- raise KeyError("Round not found in campaign")
-
-class CampaignParticipant:
- def __init__(self,war_participant_id: str, leader: str):
- self.id: str = war_participant_id # ref to War.participants
- self.leader: str = leader
- self.victory_points = 0
- self.objective_points = {}
-
-class Sector:
- def __init__(self, name: str, round_id: str, major_id: str, minor_id: str, influence_id: str):
- self.id: str = str(uuid4())
- self.name: str = name
- self.major_objective_id: str = major_id
- self.minor_objective_id: str = minor_id
- self.influence_objective_id: str = influence_id
- self.round_id: str = round_id
diff --git a/src/warchron/model/model.py b/src/warchron/model/model.py
index 6f8c222..f488eed 100644
--- a/src/warchron/model/model.py
+++ b/src/warchron/model/model.py
@@ -4,16 +4,14 @@ import shutil
from datetime import datetime
from warchron.model.player import Player
-from warchron.model.war import War, Objective, WarParticipant
+from warchron.model.war import War
from warchron.model.campaign import Campaign
from warchron.model.round import Round
class Model:
def __init__(self):
- self.players: dict[str, Player] = {}
- self.wars: dict[str, War] = {}
-
-# File management methods
+ self.players = {}
+ self.wars = {}
def new(self):
self.players.clear()
@@ -55,8 +53,6 @@ class Model:
with open(path, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2)
-# Player methods
-
def add_player(self, name):
player = Player(name)
self.players[player.id] = player
@@ -64,22 +60,17 @@ class Model:
def get_player(self, id):
return self.players[id]
-
- def get_player_name(self, player_id: str) -> str:
- return self.players[player_id].name
-
+
def update_player(self, player_id: str, *, name: str):
player = self.get_player(player_id)
player.set_name(name)
+ def delete_player(self, id):
+ del self.players[id]
+
def get_all_players(self) -> list[Player]:
return list(self.players.values())
- def remove_player(self, player_id: str):
- del self.players[player_id]
-
-# War methods
-
def get_default_war_values(self) -> dict:
return {
"year": datetime.now().year
@@ -100,20 +91,6 @@ class Model:
return war
raise KeyError(f"Campaign {campaign_id} not found in any War")
- def get_war_by_objective(self, objective_id: str) -> War:
- for war in self.wars.values():
- for obj in war.objectives.values():
- if obj.id == objective_id:
- return war
- raise KeyError(f"Objective {objective_id} not found in any War")
-
- def get_war_by_war_participant(self, participant_id: str) -> War:
- for war in self.wars.values():
- for part in war.participants.values():
- if part.id == participant_id:
- return war
- raise KeyError(f"Participant {participant_id} not found in any War")
-
def update_war(self, war_id: str, *, name: str, year: int):
war = self.get_war(war_id)
war.set_name(name)
@@ -122,61 +99,6 @@ class Model:
def get_all_wars(self) -> list[War]:
return list(self.wars.values())
- def remove_war(self, war_id: str):
- del self.wars[war_id]
-
-# Objective methods
-
- def add_objective(self, war_id: str, name: str, description: str) -> Objective:
- war = self.get_war(war_id)
- return war.add_objective(name, description)
-
- def get_objective(self, objective_id) -> Objective:
- for war in self.wars.values():
- for obj in war.objectives.values():
- if obj.id == objective_id:
- return obj
- raise KeyError("Objective not found")
-
- def update_objective(self, objective_id: str, *, name: str, description: str):
- war = self.get_war_by_objective(objective_id)
- war.update_objective(objective_id, name=name, description=description)
-
- def remove_objective(self, objective_id: str):
- war = self.get_war_by_objective(objective_id)
- war.remove_objective(objective_id)
-
-# War participant methods
-
- def get_available_players(self, war_id: str) -> list[Player]:
- war = self.get_war(war_id)
- return [
- player
- for player in self.players.values()
- if not war.has_participant(player.id)
- ]
-
- def add_war_participant(self, war_id: str, player_id: str, faction: str) -> Objective:
- war = self.get_war(war_id)
- return war.add_war_participant(player_id, faction)
-
- def get_war_participant(self, participant_id) -> WarParticipant:
- for war in self.wars.values():
- for part in war.participants.values():
- if part.id == participant_id:
- return part
- raise KeyError("Participant not found")
-
- def update_war_participant(self, participant_id: str, *, faction: str):
- war = self.get_war_by_war_participant(participant_id)
- war.update_war_participant(participant_id, faction=faction)
-
- def remove_war_participant(self, participant_id: str):
- war = self.get_war_by_war_participant(participant_id)
- war.remove_war_participant(participant_id)
-
-# Campaign methods
-
def get_default_campaign_values(self, war_id: str) -> dict:
war = self.get_war(war_id)
return war.get_default_campaign_values()
@@ -203,12 +125,6 @@ class Model:
war = self.get_war_by_campaign(campaign_id)
war.update_campaign(campaign_id, name=name, month=month)
- def remove_campaign(self, campaign_id: str):
- war = self.get_war_by_campaign(campaign_id)
- war.remove_campaign(campaign_id)
-
-# Round methods
-
def add_round(self, campaign_id: str) -> Round:
campaign = self.get_campaign(campaign_id)
return campaign.add_round()
@@ -220,11 +136,17 @@ class Model:
if rnd.id == round_id:
return rnd
raise KeyError("Round not found")
+
+ def remove_player(self, player_id: str):
+ del self.players[player_id]
- def get_round_index(self, round_id: str) -> int:
- camp = self.get_campaign_by_round(round_id)
- return camp.get_round_index(round_id)
+ def remove_war(self, war_id: str):
+ del self.wars[war_id]
+
+ def remove_campaign(self, campaign_id: str):
+ war = self.get_war_by_campaign(campaign_id)
+ war.remove_campaign(campaign_id)
def remove_round(self, round_id: str):
camp = self.get_campaign_by_round(round_id)
- camp.remove_round(round_id)
+ camp.remove_round(round_id)
\ No newline at end of file
diff --git a/src/warchron/model/round.py b/src/warchron/model/round.py
index a32d0d6..c80012f 100644
--- a/src/warchron/model/round.py
+++ b/src/warchron/model/round.py
@@ -2,16 +2,16 @@ from uuid import uuid4
class Round:
def __init__(self):
- self.id: str = str(uuid4())
+ self.id = str(uuid4())
self.sectors = {}
self.choices = {}
self.battles = {}
- self.is_over: bool = False
+ self.is_over = False
- def set_id(self, new_id: str):
+ def set_id(self, new_id):
self.id = new_id
- def set_state(self, new_state: bool):
+ def set_state(self, new_state):
self.is_over = new_state
def toDict(self):
diff --git a/src/warchron/model/war.py b/src/warchron/model/war.py
index 9e3b402..0633564 100644
--- a/src/warchron/model/war.py
+++ b/src/warchron/model/war.py
@@ -1,30 +1,27 @@
-from __future__ import annotations
from uuid import uuid4
from datetime import datetime
from warchron.model.campaign import Campaign
-
class War:
- def __init__(self, name: str, year: int):
- self.id: str = str(uuid4())
- self.name: str = name
- self.year: int = year
- self.participants: dict[str, WarParticipant] = {}
- self.objectives: dict[str, Objective] = {}
+ def __init__(self, name, year):
+ self.id = str(uuid4())
+ self.name = name
+ self.year = year
+ self.entrants = {}
self.campaigns = []
- self.is_over: bool = False
+ self.is_over = False
- def set_id(self, new_id: str):
+ def set_id(self, new_id):
self.id = new_id
- def set_name(self, new_name: str):
+ def set_name(self, new_name):
self.name = new_name
- def set_year(self, new_year: int):
+ def set_year(self, new_year):
self.year = new_year
- def set_state(self, new_state: bool):
+ def set_state(self, new_state):
self.is_over = new_state
def toDict(self):
@@ -32,7 +29,7 @@ class War:
"id" : self.id,
"name" : self.name,
"year" : self.year,
- # "participants" : self.participants,
+ # "entrants" : self.entrants,
"campaigns": [camp.toDict() for camp in self.campaigns],
"is_over": self.is_over
}
@@ -41,66 +38,12 @@ class War:
def fromDict(data: dict):
war = War(name=data["name"], year=data["year"])
war.set_id(data["id"])
- # war.participants = data.get("participants", {})
+ # war.entrants = data.get("entrants", {})
for camp_data in data.get("campaigns", []):
war.campaigns.append(Campaign.fromDict(camp_data))
war.set_state(data.get("is_over", False))
return war
-# Objective methods
-
- def add_objective(self, name: str, description: str) -> Objective:
- objective = Objective(name, description)
- self.objectives[objective.id] = objective
- return objective
-
- def get_objective(self, id: str) -> Objective:
- return self.objectives[id]
-
- def get_all_objectives(self) -> list[Objective]:
- return list(self.objectives.values())
-
- def update_objective(self, objective_id: str, *, name: str, description: str):
- obj = self.get_objective(objective_id)
- obj.set_name(name)
- obj.set_description(description)
-
- def remove_objective(self, objective_id: str):
- del self.objectives[objective_id]
-
-# War participant methods
-
- def get_all_war_participants_ids(self) -> set[str]:
- return set(self.participants.keys())
-
- def has_participant(self, player_id: str) -> bool:
- return player_id in self.participants
-
- def add_war_participant(self, player_id: str, faction: str) -> WarParticipant:
- if player_id in self.participants:
- raise ValueError("Player already registered in this war")
- participant = WarParticipant(player_id, faction)
- self.participants[participant.id] = participant
- return participant
-
- def get_war_participant(self, id: str) -> WarParticipant:
- return self.participants[id]
-
- def get_all_war_participants(self) -> list[WarParticipant]:
- return list(self.participants.values())
-
- def update_war_participant(self, player_id: str, *, faction: str):
- part = self.get_war_participant(player_id)
- part.set_faction(faction)
-
- def remove_war_participant(self, player_id: str):
- del self.participants[player_id]
-
-# Campaign methods
-
- def has_campaign(self, campaign_id: str) -> bool:
- return any(c.id == campaign_id for c in self.campaigns)
-
def get_default_campaign_values(self) -> dict:
return {
"month": datetime.now().month
@@ -113,7 +56,7 @@ class War:
self.campaigns.append(campaign)
return campaign
- def get_campaign(self, campaign_id: str) -> Campaign:
+ def get_campaign(self, campaign_id) -> Campaign:
for camp in self.campaigns:
if camp.id == campaign_id:
return camp
@@ -136,31 +79,4 @@ class War:
def remove_campaign(self, campaign_id: str):
camp = self.get_campaign(campaign_id)
- self.campaigns.remove(camp)
-
-class Objective:
- def __init__(self, name: str, description: str):
- self.id: str = str(uuid4())
- self.name: str = name
- self.description: str = description
-
- def set_id(self, new_id: str):
- self.id = new_id
-
- def set_name(self, new_name: str):
- self.name = new_name
-
- def set_description(self, new_description: str):
- self.description = new_description
-
-class WarParticipant:
- def __init__(self, player_id: str, faction: str):
- self.id: str = player_id # ref to Model.players
- self.faction: str = faction
-
- def set_id(self, new_id: str):
- self.id = new_id
-
- def set_faction(self, new_faction: str):
- self.faction = new_faction
-
+ self.campaigns.remove(camp)
\ No newline at end of file
diff --git a/src/warchron/view/ui/ui_main_window.py b/src/warchron/view/ui/ui_main_window.py
index 5bfbf54..f9839e1 100644
--- a/src/warchron/view/ui/ui_main_window.py
+++ b/src/warchron/view/ui/ui_main_window.py
@@ -26,7 +26,7 @@ class Ui_MainWindow(object):
self.playersTable = QtWidgets.QTableWidget(parent=self.playersTab)
self.playersTable.setGeometry(QtCore.QRect(10, 60, 741, 431))
self.playersTable.setObjectName("playersTable")
- self.playersTable.setColumnCount(4)
+ self.playersTable.setColumnCount(3)
self.playersTable.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.playersTable.setHorizontalHeaderItem(0, item)
@@ -34,8 +34,6 @@ class Ui_MainWindow(object):
self.playersTable.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.playersTable.setHorizontalHeaderItem(2, item)
- item = QtWidgets.QTableWidgetItem()
- self.playersTable.setHorizontalHeaderItem(3, item)
self.addPlayerBtn = QtWidgets.QPushButton(parent=self.playersTab)
self.addPlayerBtn.setGeometry(QtCore.QRect(20, 20, 75, 23))
self.addPlayerBtn.setObjectName("addPlayerBtn")
@@ -47,6 +45,9 @@ class Ui_MainWindow(object):
self.warsTree = QtWidgets.QTreeWidget(parent=self.warsTab)
self.warsTree.setGeometry(QtCore.QRect(10, 60, 211, 431))
self.warsTree.setObjectName("warsTree")
+ item_0 = QtWidgets.QTreeWidgetItem(self.warsTree)
+ item_1 = QtWidgets.QTreeWidgetItem(item_0)
+ item_2 = QtWidgets.QTreeWidgetItem(item_1)
self.addWarBtn = QtWidgets.QPushButton(parent=self.warsTab)
self.addWarBtn.setGeometry(QtCore.QRect(20, 20, 75, 23))
self.addWarBtn.setObjectName("addWarBtn")
@@ -81,50 +82,104 @@ class Ui_MainWindow(object):
font.setPointSize(12)
self.warYear.setFont(font)
self.warYear.setObjectName("warYear")
- self.labelParticipants = QtWidgets.QLabel(parent=self.pageWar)
- self.labelParticipants.setGeometry(QtCore.QRect(10, 150, 111, 16))
- self.labelParticipants.setObjectName("labelParticipants")
- self.addWarParticipantBtn = QtWidgets.QPushButton(parent=self.pageWar)
- self.addWarParticipantBtn.setGeometry(QtCore.QRect(420, 270, 81, 23))
- self.addWarParticipantBtn.setObjectName("addWarParticipantBtn")
- self.warParticipantsTable = QtWidgets.QTableWidget(parent=self.pageWar)
- self.warParticipantsTable.setGeometry(QtCore.QRect(10, 170, 401, 211))
- self.warParticipantsTable.setObjectName("warParticipantsTable")
- self.warParticipantsTable.setColumnCount(5)
- self.warParticipantsTable.setRowCount(0)
+ self.labelEntrants = QtWidgets.QLabel(parent=self.pageWar)
+ self.labelEntrants.setGeometry(QtCore.QRect(10, 200, 47, 13))
+ self.labelEntrants.setObjectName("labelEntrants")
+ self.addEntrantBtn = QtWidgets.QPushButton(parent=self.pageWar)
+ self.addEntrantBtn.setGeometry(QtCore.QRect(430, 310, 75, 23))
+ self.addEntrantBtn.setObjectName("addEntrantBtn")
+ self.playersTable_2 = QtWidgets.QTableWidget(parent=self.pageWar)
+ self.playersTable_2.setGeometry(QtCore.QRect(10, 220, 401, 201))
+ self.playersTable_2.setObjectName("playersTable_2")
+ self.playersTable_2.setColumnCount(4)
+ self.playersTable_2.setRowCount(6)
item = QtWidgets.QTableWidgetItem()
- self.warParticipantsTable.setHorizontalHeaderItem(0, item)
+ self.playersTable_2.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
- self.warParticipantsTable.setHorizontalHeaderItem(1, item)
+ self.playersTable_2.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
- self.warParticipantsTable.setHorizontalHeaderItem(2, item)
+ self.playersTable_2.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
- self.warParticipantsTable.setHorizontalHeaderItem(3, item)
+ self.playersTable_2.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
- self.warParticipantsTable.setHorizontalHeaderItem(4, item)
- self.endWarBtn = QtWidgets.QPushButton(parent=self.pageWar)
- self.endWarBtn.setEnabled(True)
- self.endWarBtn.setGeometry(QtCore.QRect(230, 400, 61, 23))
- self.endWarBtn.setObjectName("endWarBtn")
- self.objectivesTable = QtWidgets.QTableWidget(parent=self.pageWar)
- self.objectivesTable.setGeometry(QtCore.QRect(10, 60, 401, 71))
- self.objectivesTable.setObjectName("objectivesTable")
- self.objectivesTable.setColumnCount(2)
- self.objectivesTable.setRowCount(0)
+ self.playersTable_2.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
- self.objectivesTable.setHorizontalHeaderItem(0, item)
+ self.playersTable_2.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
- self.objectivesTable.setHorizontalHeaderItem(1, item)
- self.labelObjectives = QtWidgets.QLabel(parent=self.pageWar)
- self.labelObjectives.setGeometry(QtCore.QRect(10, 40, 111, 20))
- self.labelObjectives.setObjectName("labelObjectives")
- self.addObjectiveBtn = QtWidgets.QPushButton(parent=self.pageWar)
- self.addObjectiveBtn.setEnabled(True)
- self.addObjectiveBtn.setGeometry(QtCore.QRect(420, 80, 91, 23))
+ self.playersTable_2.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(0, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(0, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(1, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(1, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(2, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(2, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(2, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(3, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(3, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(3, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(3, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(4, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(4, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(4, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(4, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(5, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(5, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(5, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_2.setItem(5, 3, item)
+ self.addCampaignBtn_2 = QtWidgets.QPushButton(parent=self.pageWar)
+ self.addCampaignBtn_2.setEnabled(True)
+ self.addCampaignBtn_2.setGeometry(QtCore.QRect(230, 120, 91, 23))
font = QtGui.QFont()
font.setPointSize(10)
- self.addObjectiveBtn.setFont(font)
- self.addObjectiveBtn.setObjectName("addObjectiveBtn")
+ self.addCampaignBtn_2.setFont(font)
+ self.addCampaignBtn_2.setObjectName("addCampaignBtn_2")
+ self.listWidget = QtWidgets.QListWidget(parent=self.pageWar)
+ self.listWidget.setGeometry(QtCore.QRect(10, 80, 211, 91))
+ self.listWidget.setObjectName("listWidget")
+ item = QtWidgets.QListWidgetItem()
+ self.listWidget.addItem(item)
+ self.labelCampaigns = QtWidgets.QLabel(parent=self.pageWar)
+ self.labelCampaigns.setGeometry(QtCore.QRect(10, 60, 61, 16))
+ self.labelCampaigns.setObjectName("labelCampaigns")
+ self.addRoundBtn_8 = QtWidgets.QPushButton(parent=self.pageWar)
+ self.addRoundBtn_8.setEnabled(True)
+ self.addRoundBtn_8.setGeometry(QtCore.QRect(410, 400, 91, 23))
+ self.addRoundBtn_8.setObjectName("addRoundBtn_8")
self.selectedDetailsStack.addWidget(self.pageWar)
self.pageCampaign = QtWidgets.QWidget()
self.pageCampaign.setObjectName("pageCampaign")
@@ -134,106 +189,350 @@ class Ui_MainWindow(object):
font.setPointSize(12)
self.campaignName.setFont(font)
self.campaignName.setObjectName("campaignName")
- self.labelSectors = QtWidgets.QLabel(parent=self.pageCampaign)
- self.labelSectors.setGeometry(QtCore.QRect(10, 40, 91, 16))
- self.labelSectors.setObjectName("labelSectors")
- self.addCampaignParticipantBtn = QtWidgets.QPushButton(parent=self.pageCampaign)
- self.addCampaignParticipantBtn.setGeometry(QtCore.QRect(420, 270, 75, 23))
- self.addCampaignParticipantBtn.setObjectName("addCampaignParticipantBtn")
+ self.labelRound = QtWidgets.QLabel(parent=self.pageCampaign)
+ self.labelRound.setGeometry(QtCore.QRect(10, 50, 91, 16))
+ self.labelRound.setObjectName("labelRound")
+ self.addEntrantBtn_2 = QtWidgets.QPushButton(parent=self.pageCampaign)
+ self.addEntrantBtn_2.setGeometry(QtCore.QRect(420, 310, 75, 23))
+ self.addEntrantBtn_2.setObjectName("addEntrantBtn_2")
self.campaignMonth = QtWidgets.QLabel(parent=self.pageCampaign)
self.campaignMonth.setGeometry(QtCore.QRect(280, 10, 121, 16))
font = QtGui.QFont()
font.setPointSize(12)
self.campaignMonth.setFont(font)
self.campaignMonth.setObjectName("campaignMonth")
- self.labelParticipants_2 = QtWidgets.QLabel(parent=self.pageCampaign)
- self.labelParticipants_2.setGeometry(QtCore.QRect(10, 180, 47, 13))
- self.labelParticipants_2.setObjectName("labelParticipants_2")
- self.campaignParticipantsTable = QtWidgets.QTableWidget(parent=self.pageCampaign)
- self.campaignParticipantsTable.setGeometry(QtCore.QRect(10, 200, 401, 181))
- self.campaignParticipantsTable.setObjectName("campaignParticipantsTable")
- self.campaignParticipantsTable.setColumnCount(4)
- self.campaignParticipantsTable.setRowCount(0)
+ self.labelEntrants_2 = QtWidgets.QLabel(parent=self.pageCampaign)
+ self.labelEntrants_2.setGeometry(QtCore.QRect(10, 200, 47, 13))
+ self.labelEntrants_2.setObjectName("labelEntrants_2")
+ self.playersTable_3 = QtWidgets.QTableWidget(parent=self.pageCampaign)
+ self.playersTable_3.setGeometry(QtCore.QRect(10, 220, 401, 201))
+ self.playersTable_3.setObjectName("playersTable_3")
+ self.playersTable_3.setColumnCount(4)
+ self.playersTable_3.setRowCount(6)
item = QtWidgets.QTableWidgetItem()
- self.campaignParticipantsTable.setHorizontalHeaderItem(0, item)
+ self.playersTable_3.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
- self.campaignParticipantsTable.setHorizontalHeaderItem(1, item)
+ self.playersTable_3.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
- self.campaignParticipantsTable.setHorizontalHeaderItem(2, item)
+ self.playersTable_3.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
- self.campaignParticipantsTable.setHorizontalHeaderItem(3, item)
- self.sectorsTable = QtWidgets.QTableWidget(parent=self.pageCampaign)
- self.sectorsTable.setGeometry(QtCore.QRect(10, 60, 401, 101))
- self.sectorsTable.setObjectName("sectorsTable")
- self.sectorsTable.setColumnCount(5)
- self.sectorsTable.setRowCount(0)
+ self.playersTable_3.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
- self.sectorsTable.setHorizontalHeaderItem(0, item)
+ self.playersTable_3.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
- self.sectorsTable.setHorizontalHeaderItem(1, item)
+ self.playersTable_3.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
- self.sectorsTable.setHorizontalHeaderItem(2, item)
+ self.playersTable_3.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
- self.sectorsTable.setHorizontalHeaderItem(3, item)
+ self.playersTable_3.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
- self.sectorsTable.setHorizontalHeaderItem(4, item)
+ self.playersTable_3.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(0, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(0, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(1, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(1, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(2, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(2, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(2, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(3, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(3, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(3, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(3, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(4, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(4, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(4, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(4, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(5, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(5, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(5, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_3.setItem(5, 3, item)
+ self.addRoundBtn_2 = QtWidgets.QPushButton(parent=self.pageCampaign)
+ self.addRoundBtn_2.setEnabled(True)
+ self.addRoundBtn_2.setGeometry(QtCore.QRect(360, 90, 91, 23))
+ self.addRoundBtn_2.setObjectName("addRoundBtn_2")
+ self.playersTable_4 = QtWidgets.QTableWidget(parent=self.pageCampaign)
+ self.playersTable_4.setGeometry(QtCore.QRect(10, 80, 331, 91))
+ self.playersTable_4.setObjectName("playersTable_4")
+ self.playersTable_4.setColumnCount(3)
+ self.playersTable_4.setRowCount(3)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setVerticalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setVerticalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setVerticalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(0, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(1, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(2, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_4.setItem(2, 2, item)
self.addSectorBtn = QtWidgets.QPushButton(parent=self.pageCampaign)
- self.addSectorBtn.setEnabled(True)
- self.addSectorBtn.setGeometry(QtCore.QRect(420, 110, 71, 23))
+ self.addSectorBtn.setEnabled(False)
+ self.addSectorBtn.setGeometry(QtCore.QRect(360, 130, 91, 23))
self.addSectorBtn.setObjectName("addSectorBtn")
self.endCampaignBtn = QtWidgets.QPushButton(parent=self.pageCampaign)
self.endCampaignBtn.setEnabled(True)
- self.endCampaignBtn.setGeometry(QtCore.QRect(210, 400, 91, 23))
+ self.endCampaignBtn.setGeometry(QtCore.QRect(410, 400, 91, 23))
self.endCampaignBtn.setObjectName("endCampaignBtn")
self.selectedDetailsStack.addWidget(self.pageCampaign)
self.pageRound = QtWidgets.QWidget()
self.pageRound.setObjectName("pageRound")
self.labelChoices = QtWidgets.QLabel(parent=self.pageRound)
- self.labelChoices.setGeometry(QtCore.QRect(10, 40, 91, 16))
+ self.labelChoices.setGeometry(QtCore.QRect(10, 170, 91, 16))
self.labelChoices.setObjectName("labelChoices")
self.choicesTable = QtWidgets.QTableWidget(parent=self.pageRound)
- self.choicesTable.setGeometry(QtCore.QRect(10, 60, 301, 141))
+ self.choicesTable.setGeometry(QtCore.QRect(10, 190, 271, 91))
self.choicesTable.setObjectName("choicesTable")
- self.choicesTable.setColumnCount(3)
- self.choicesTable.setRowCount(0)
+ self.choicesTable.setColumnCount(2)
+ self.choicesTable.setRowCount(6)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.choicesTable.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.choicesTable.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
- self.choicesTable.setHorizontalHeaderItem(2, item)
+ self.choicesTable.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(2, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(3, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(3, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(4, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(4, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(5, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable.setItem(5, 1, item)
self.roundNb = QtWidgets.QLabel(parent=self.pageRound)
self.roundNb.setGeometry(QtCore.QRect(10, 10, 241, 16))
font = QtGui.QFont()
font.setPointSize(12)
self.roundNb.setFont(font)
self.roundNb.setObjectName("roundNb")
- self.resolvePairingBtn = QtWidgets.QPushButton(parent=self.pageRound)
- self.resolvePairingBtn.setEnabled(True)
- self.resolvePairingBtn.setGeometry(QtCore.QRect(320, 110, 91, 23))
- self.resolvePairingBtn.setObjectName("resolvePairingBtn")
- self.battlesTable = QtWidgets.QTableWidget(parent=self.pageRound)
- self.battlesTable.setGeometry(QtCore.QRect(10, 240, 301, 111))
- self.battlesTable.setObjectName("battlesTable")
- self.battlesTable.setColumnCount(3)
- self.battlesTable.setRowCount(0)
+ self.resolveBtn = QtWidgets.QPushButton(parent=self.pageRound)
+ self.resolveBtn.setEnabled(True)
+ self.resolveBtn.setGeometry(QtCore.QRect(290, 220, 91, 23))
+ self.resolveBtn.setObjectName("resolveBtn")
+ self.playersTable_6 = QtWidgets.QTableWidget(parent=self.pageRound)
+ self.playersTable_6.setGeometry(QtCore.QRect(10, 320, 271, 91))
+ self.playersTable_6.setObjectName("playersTable_6")
+ self.playersTable_6.setColumnCount(2)
+ self.playersTable_6.setRowCount(3)
item = QtWidgets.QTableWidgetItem()
- self.battlesTable.setHorizontalHeaderItem(0, item)
+ self.playersTable_6.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
- self.battlesTable.setHorizontalHeaderItem(1, item)
+ self.playersTable_6.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
- self.battlesTable.setHorizontalHeaderItem(2, item)
- self.enterResultBtn = QtWidgets.QPushButton(parent=self.pageRound)
- self.enterResultBtn.setEnabled(True)
- self.enterResultBtn.setGeometry(QtCore.QRect(320, 290, 91, 23))
- self.enterResultBtn.setObjectName("enterResultBtn")
+ self.playersTable_6.setVerticalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.playersTable_6.setItem(2, 1, item)
+ self.resultBtn = QtWidgets.QPushButton(parent=self.pageRound)
+ self.resultBtn.setEnabled(True)
+ self.resultBtn.setGeometry(QtCore.QRect(290, 360, 91, 23))
+ self.resultBtn.setObjectName("resultBtn")
self.endRoundBtn = QtWidgets.QPushButton(parent=self.pageRound)
self.endRoundBtn.setEnabled(True)
- self.endRoundBtn.setGeometry(QtCore.QRect(220, 400, 71, 23))
+ self.endRoundBtn.setGeometry(QtCore.QRect(410, 400, 91, 23))
self.endRoundBtn.setObjectName("endRoundBtn")
- self.labelBattles = QtWidgets.QLabel(parent=self.pageRound)
- self.labelBattles.setGeometry(QtCore.QRect(10, 220, 91, 16))
- self.labelBattles.setObjectName("labelBattles")
+ self.labelChoices_2 = QtWidgets.QLabel(parent=self.pageRound)
+ self.labelChoices_2.setGeometry(QtCore.QRect(10, 300, 91, 16))
+ self.labelChoices_2.setObjectName("labelChoices_2")
+ self.choicesTable_2 = QtWidgets.QTableWidget(parent=self.pageRound)
+ self.choicesTable_2.setGeometry(QtCore.QRect(10, 70, 421, 91))
+ self.choicesTable_2.setObjectName("choicesTable_2")
+ self.choicesTable_2.setColumnCount(4)
+ self.choicesTable_2.setRowCount(9)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(5, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(6, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(7, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setVerticalHeaderItem(8, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(0, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(0, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(0, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(0, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(1, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(1, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(1, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(1, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(2, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(2, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(2, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(2, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(3, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(3, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(3, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(3, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(4, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(4, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(4, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(4, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(5, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(5, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(5, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(5, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(6, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(6, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(6, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(6, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(7, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(7, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(7, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(7, 3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(8, 0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(8, 1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(8, 2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.choicesTable_2.setItem(8, 3, item)
+ self.labelChoices_3 = QtWidgets.QLabel(parent=self.pageRound)
+ self.labelChoices_3.setGeometry(QtCore.QRect(10, 40, 91, 16))
+ self.labelChoices_3.setObjectName("labelChoices_3")
+ self.addSectorBtn_2 = QtWidgets.QPushButton(parent=self.pageRound)
+ self.addSectorBtn_2.setEnabled(True)
+ self.addSectorBtn_2.setGeometry(QtCore.QRect(430, 100, 91, 23))
+ self.addSectorBtn_2.setObjectName("addSectorBtn_2")
self.selectedDetailsStack.addWidget(self.pageRound)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/swords-small.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
@@ -327,78 +626,342 @@ class Ui_MainWindow(object):
item.setText(_translate("MainWindow", "Wars"))
item = self.playersTable.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Wins"))
- item = self.playersTable.horizontalHeaderItem(3)
- item.setText(_translate("MainWindow", "Rewards"))
self.addPlayerBtn.setText(_translate("MainWindow", "Add player"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.playersTab), _translate("MainWindow", "Players"))
+ __sortingEnabled = self.warsTree.isSortingEnabled()
+ self.warsTree.setSortingEnabled(False)
+ self.warsTree.topLevelItem(0).setText(0, _translate("MainWindow", "warItem"))
+ self.warsTree.topLevelItem(0).child(0).setText(0, _translate("MainWindow", "campaignItem"))
+ self.warsTree.topLevelItem(0).child(0).child(0).setText(0, _translate("MainWindow", "roundItem"))
+ self.warsTree.setSortingEnabled(__sortingEnabled)
self.addWarBtn.setText(_translate("MainWindow", "Add war"))
self.addCampaignBtn.setText(_translate("MainWindow", "Add Campaign"))
self.addRoundBtn.setText(_translate("MainWindow", "Add Round"))
self.labelSelect.setText(_translate("MainWindow", "Select an element within the tree to show/edit details."))
self.warName.setText(_translate("MainWindow", "warName"))
self.warYear.setText(_translate("MainWindow", "warYear"))
- self.labelParticipants.setText(_translate("MainWindow", "Participants"))
- self.addWarParticipantBtn.setText(_translate("MainWindow", "Add participant"))
- item = self.warParticipantsTable.horizontalHeaderItem(0)
+ self.labelEntrants.setText(_translate("MainWindow", "Entrants"))
+ self.addEntrantBtn.setText(_translate("MainWindow", "Add entrant"))
+ item = self.playersTable_2.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Name"))
- item = self.warParticipantsTable.horizontalHeaderItem(1)
+ item = self.playersTable_2.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Faction"))
- item = self.warParticipantsTable.horizontalHeaderItem(2)
+ item = self.playersTable_2.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Campaigns"))
- item = self.warParticipantsTable.horizontalHeaderItem(3)
- item.setText(_translate("MainWindow", "Victory pts."))
- item = self.warParticipantsTable.horizontalHeaderItem(4)
- item.setText(_translate("MainWindow", "Theme pts"))
- self.endWarBtn.setText(_translate("MainWindow", "End war"))
- item = self.objectivesTable.horizontalHeaderItem(0)
- item.setText(_translate("MainWindow", "Name"))
- item = self.objectivesTable.horizontalHeaderItem(1)
- item.setText(_translate("MainWindow", "Description"))
- self.labelObjectives.setText(_translate("MainWindow", "Objectives"))
- self.addObjectiveBtn.setText(_translate("MainWindow", "Add objective"))
+ item = self.playersTable_2.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Wins"))
+ __sortingEnabled = self.playersTable_2.isSortingEnabled()
+ self.playersTable_2.setSortingEnabled(False)
+ item = self.playersTable_2.item(0, 0)
+ item.setText(_translate("MainWindow", "Alice"))
+ item = self.playersTable_2.item(0, 1)
+ item.setText(_translate("MainWindow", "army A"))
+ item = self.playersTable_2.item(0, 2)
+ item.setText(_translate("MainWindow", "2"))
+ item = self.playersTable_2.item(0, 3)
+ item.setText(_translate("MainWindow", "1"))
+ item = self.playersTable_2.item(1, 0)
+ item.setText(_translate("MainWindow", "Bob"))
+ item = self.playersTable_2.item(1, 1)
+ item.setText(_translate("MainWindow", "army B"))
+ item = self.playersTable_2.item(1, 2)
+ item.setText(_translate("MainWindow", "2"))
+ item = self.playersTable_2.item(1, 3)
+ item.setText(_translate("MainWindow", "1"))
+ item = self.playersTable_2.item(2, 0)
+ item.setText(_translate("MainWindow", "Charlie"))
+ item = self.playersTable_2.item(2, 1)
+ item.setText(_translate("MainWindow", "army C"))
+ item = self.playersTable_2.item(2, 2)
+ item.setText(_translate("MainWindow", "2"))
+ item = self.playersTable_2.item(2, 3)
+ item.setText(_translate("MainWindow", "0"))
+ item = self.playersTable_2.item(3, 0)
+ item.setText(_translate("MainWindow", "Dave"))
+ item = self.playersTable_2.item(3, 1)
+ item.setText(_translate("MainWindow", "army D"))
+ item = self.playersTable_2.item(3, 2)
+ item.setText(_translate("MainWindow", "1"))
+ item = self.playersTable_2.item(3, 3)
+ item.setText(_translate("MainWindow", "0"))
+ item = self.playersTable_2.item(4, 0)
+ item.setText(_translate("MainWindow", "Eve"))
+ item = self.playersTable_2.item(4, 1)
+ item.setText(_translate("MainWindow", "army E"))
+ item = self.playersTable_2.item(4, 2)
+ item.setText(_translate("MainWindow", "1"))
+ item = self.playersTable_2.item(4, 3)
+ item.setText(_translate("MainWindow", "0"))
+ item = self.playersTable_2.item(5, 0)
+ item.setText(_translate("MainWindow", "Fred"))
+ item = self.playersTable_2.item(5, 1)
+ item.setText(_translate("MainWindow", "army F"))
+ item = self.playersTable_2.item(5, 2)
+ item.setText(_translate("MainWindow", "2"))
+ item = self.playersTable_2.item(5, 3)
+ item.setText(_translate("MainWindow", "0"))
+ self.playersTable_2.setSortingEnabled(__sortingEnabled)
+ self.addCampaignBtn_2.setText(_translate("MainWindow", "Add Campaign"))
+ __sortingEnabled = self.listWidget.isSortingEnabled()
+ self.listWidget.setSortingEnabled(False)
+ item = self.listWidget.item(0)
+ item.setText(_translate("MainWindow", "campaignName"))
+ self.listWidget.setSortingEnabled(__sortingEnabled)
+ self.labelCampaigns.setText(_translate("MainWindow", "Campaigns"))
+ self.addRoundBtn_8.setText(_translate("MainWindow", "End war"))
self.campaignName.setText(_translate("MainWindow", "campaignName"))
- self.labelSectors.setText(_translate("MainWindow", "Sectors"))
- self.addCampaignParticipantBtn.setText(_translate("MainWindow", "Add participant"))
+ self.labelRound.setText(_translate("MainWindow", "Sectors by round"))
+ self.addEntrantBtn_2.setText(_translate("MainWindow", "Add entrant"))
self.campaignMonth.setText(_translate("MainWindow", "campaignMonth"))
- self.labelParticipants_2.setText(_translate("MainWindow", "Participants"))
- item = self.campaignParticipantsTable.horizontalHeaderItem(0)
+ self.labelEntrants_2.setText(_translate("MainWindow", "Entrants"))
+ item = self.playersTable_3.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Name"))
- item = self.campaignParticipantsTable.horizontalHeaderItem(1)
+ item = self.playersTable_3.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Leader"))
- item = self.campaignParticipantsTable.horizontalHeaderItem(2)
- item.setText(_translate("MainWindow", "Victory pts."))
- item = self.campaignParticipantsTable.horizontalHeaderItem(3)
- item.setText(_translate("MainWindow", "Theme pts."))
- item = self.sectorsTable.horizontalHeaderItem(0)
- item.setText(_translate("MainWindow", "Name"))
- item = self.sectorsTable.horizontalHeaderItem(1)
- item.setText(_translate("MainWindow", "Round"))
- item = self.sectorsTable.horizontalHeaderItem(2)
- item.setText(_translate("MainWindow", "Major obj."))
- item = self.sectorsTable.horizontalHeaderItem(3)
- item.setText(_translate("MainWindow", "Minor opp."))
- item = self.sectorsTable.horizontalHeaderItem(4)
- item.setText(_translate("MainWindow", "Influence imp."))
+ item = self.playersTable_3.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Battles"))
+ item = self.playersTable_3.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Wins"))
+ __sortingEnabled = self.playersTable_3.isSortingEnabled()
+ self.playersTable_3.setSortingEnabled(False)
+ item = self.playersTable_3.item(0, 0)
+ item.setText(_translate("MainWindow", "Alice"))
+ item = self.playersTable_3.item(0, 1)
+ item.setText(_translate("MainWindow", "boss A"))
+ item = self.playersTable_3.item(0, 2)
+ item.setText(_translate("MainWindow", "6"))
+ item = self.playersTable_3.item(0, 3)
+ item.setText(_translate("MainWindow", "5"))
+ item = self.playersTable_3.item(1, 0)
+ item.setText(_translate("MainWindow", "Bob"))
+ item = self.playersTable_3.item(1, 1)
+ item.setText(_translate("MainWindow", "boss B"))
+ item = self.playersTable_3.item(1, 2)
+ item.setText(_translate("MainWindow", "6"))
+ item = self.playersTable_3.item(1, 3)
+ item.setText(_translate("MainWindow", "5"))
+ item = self.playersTable_3.item(2, 0)
+ item.setText(_translate("MainWindow", "Charlie"))
+ item = self.playersTable_3.item(2, 1)
+ item.setText(_translate("MainWindow", "boss C"))
+ item = self.playersTable_3.item(2, 2)
+ item.setText(_translate("MainWindow", "6"))
+ item = self.playersTable_3.item(2, 3)
+ item.setText(_translate("MainWindow", "3"))
+ item = self.playersTable_3.item(3, 0)
+ item.setText(_translate("MainWindow", "Dave"))
+ item = self.playersTable_3.item(3, 1)
+ item.setText(_translate("MainWindow", "boss D"))
+ item = self.playersTable_3.item(3, 2)
+ item.setText(_translate("MainWindow", "3"))
+ item = self.playersTable_3.item(3, 3)
+ item.setText(_translate("MainWindow", "2"))
+ item = self.playersTable_3.item(4, 0)
+ item.setText(_translate("MainWindow", "Eve"))
+ item = self.playersTable_3.item(4, 1)
+ item.setText(_translate("MainWindow", "boss E"))
+ item = self.playersTable_3.item(4, 2)
+ item.setText(_translate("MainWindow", "3"))
+ item = self.playersTable_3.item(4, 3)
+ item.setText(_translate("MainWindow", "1"))
+ item = self.playersTable_3.item(5, 0)
+ item.setText(_translate("MainWindow", "Fred"))
+ item = self.playersTable_3.item(5, 1)
+ item.setText(_translate("MainWindow", "boss F"))
+ item = self.playersTable_3.item(5, 2)
+ item.setText(_translate("MainWindow", "6"))
+ item = self.playersTable_3.item(5, 3)
+ item.setText(_translate("MainWindow", "2"))
+ self.playersTable_3.setSortingEnabled(__sortingEnabled)
+ self.addRoundBtn_2.setText(_translate("MainWindow", "Add Round"))
+ item = self.playersTable_4.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Round 1"))
+ item = self.playersTable_4.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Round 2"))
+ item = self.playersTable_4.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Round 3"))
+ __sortingEnabled = self.playersTable_4.isSortingEnabled()
+ self.playersTable_4.setSortingEnabled(False)
+ item = self.playersTable_4.item(0, 0)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.playersTable_4.item(0, 1)
+ item.setText(_translate("MainWindow", "Zone D"))
+ item = self.playersTable_4.item(0, 2)
+ item.setText(_translate("MainWindow", "Zone G"))
+ item = self.playersTable_4.item(1, 0)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.playersTable_4.item(1, 1)
+ item.setText(_translate("MainWindow", "Zone E"))
+ item = self.playersTable_4.item(1, 2)
+ item.setText(_translate("MainWindow", "Zone H"))
+ item = self.playersTable_4.item(2, 0)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.playersTable_4.item(2, 1)
+ item.setText(_translate("MainWindow", "Zone F"))
+ item = self.playersTable_4.item(2, 2)
+ item.setText(_translate("MainWindow", "Zone I"))
+ self.playersTable_4.setSortingEnabled(__sortingEnabled)
self.addSectorBtn.setText(_translate("MainWindow", "Add Sector"))
self.endCampaignBtn.setText(_translate("MainWindow", "End campaign"))
self.labelChoices.setText(_translate("MainWindow", "Choices"))
+ item = self.choicesTable.verticalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Alice"))
+ item = self.choicesTable.verticalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Bob"))
+ item = self.choicesTable.verticalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Charlie"))
+ item = self.choicesTable.verticalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Dave"))
+ item = self.choicesTable.verticalHeaderItem(4)
+ item.setText(_translate("MainWindow", "Eve"))
+ item = self.choicesTable.verticalHeaderItem(5)
+ item.setText(_translate("MainWindow", "Fred"))
item = self.choicesTable.horizontalHeaderItem(0)
- item.setText(_translate("MainWindow", "Player"))
- item = self.choicesTable.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Prioritary"))
- item = self.choicesTable.horizontalHeaderItem(2)
+ item = self.choicesTable.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Secondary"))
+ __sortingEnabled = self.choicesTable.isSortingEnabled()
+ self.choicesTable.setSortingEnabled(False)
+ item = self.choicesTable.item(0, 0)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.choicesTable.item(0, 1)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.choicesTable.item(1, 0)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.choicesTable.item(1, 1)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.choicesTable.item(2, 0)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.choicesTable.item(2, 1)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.choicesTable.item(3, 0)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.choicesTable.item(3, 1)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.choicesTable.item(4, 0)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.choicesTable.item(4, 1)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.choicesTable.item(5, 0)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.choicesTable.item(5, 1)
+ item.setText(_translate("MainWindow", "Zone C"))
+ self.choicesTable.setSortingEnabled(__sortingEnabled)
self.roundNb.setText(_translate("MainWindow", "Round Nb"))
- self.resolvePairingBtn.setText(_translate("MainWindow", "Resolve pairing"))
- item = self.battlesTable.horizontalHeaderItem(0)
- item.setText(_translate("MainWindow", "Sector"))
- item = self.battlesTable.horizontalHeaderItem(1)
+ self.resolveBtn.setText(_translate("MainWindow", "Resolve pairing"))
+ item = self.playersTable_6.verticalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.playersTable_6.verticalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.playersTable_6.verticalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.playersTable_6.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Player 1"))
- item = self.battlesTable.horizontalHeaderItem(2)
+ item = self.playersTable_6.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Player 2"))
- self.enterResultBtn.setText(_translate("MainWindow", "Enter results"))
+ __sortingEnabled = self.playersTable_6.isSortingEnabled()
+ self.playersTable_6.setSortingEnabled(False)
+ item = self.playersTable_6.item(0, 0)
+ item.setText(_translate("MainWindow", "Alice"))
+ item = self.playersTable_6.item(0, 1)
+ item.setText(_translate("MainWindow", "Charlie"))
+ item = self.playersTable_6.item(1, 0)
+ item.setText(_translate("MainWindow", "Bob"))
+ item = self.playersTable_6.item(1, 1)
+ item.setText(_translate("MainWindow", "Fred"))
+ item = self.playersTable_6.item(2, 0)
+ item.setText(_translate("MainWindow", "Dave"))
+ item = self.playersTable_6.item(2, 1)
+ item.setText(_translate("MainWindow", "Eve"))
+ self.playersTable_6.setSortingEnabled(__sortingEnabled)
+ self.resultBtn.setText(_translate("MainWindow", "Enter results"))
self.endRoundBtn.setText(_translate("MainWindow", "End round"))
- self.labelBattles.setText(_translate("MainWindow", "Battles"))
+ self.labelChoices_2.setText(_translate("MainWindow", "Battles"))
+ item = self.choicesTable_2.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Name"))
+ item = self.choicesTable_2.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Major"))
+ item = self.choicesTable_2.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Minor"))
+ item = self.choicesTable_2.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Influence"))
+ __sortingEnabled = self.choicesTable_2.isSortingEnabled()
+ self.choicesTable_2.setSortingEnabled(False)
+ item = self.choicesTable_2.item(0, 0)
+ item.setText(_translate("MainWindow", "Zone A"))
+ item = self.choicesTable_2.item(0, 1)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(0, 2)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(0, 3)
+ item.setText(_translate("MainWindow", "False"))
+ item = self.choicesTable_2.item(1, 0)
+ item.setText(_translate("MainWindow", "Zone B"))
+ item = self.choicesTable_2.item(1, 1)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(1, 2)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(1, 3)
+ item.setText(_translate("MainWindow", "True"))
+ item = self.choicesTable_2.item(2, 0)
+ item.setText(_translate("MainWindow", "Zone C"))
+ item = self.choicesTable_2.item(2, 1)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(2, 2)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(2, 3)
+ item.setText(_translate("MainWindow", "False"))
+ item = self.choicesTable_2.item(3, 0)
+ item.setText(_translate("MainWindow", "Zone D"))
+ item = self.choicesTable_2.item(3, 1)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(3, 2)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(3, 3)
+ item.setText(_translate("MainWindow", "True"))
+ item = self.choicesTable_2.item(4, 0)
+ item.setText(_translate("MainWindow", "Zone E"))
+ item = self.choicesTable_2.item(4, 1)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(4, 2)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(4, 3)
+ item.setText(_translate("MainWindow", "False"))
+ item = self.choicesTable_2.item(5, 0)
+ item.setText(_translate("MainWindow", "Zone F"))
+ item = self.choicesTable_2.item(5, 1)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(5, 2)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(5, 3)
+ item.setText(_translate("MainWindow", "False"))
+ item = self.choicesTable_2.item(6, 0)
+ item.setText(_translate("MainWindow", "Zone G"))
+ item = self.choicesTable_2.item(6, 1)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(6, 2)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(6, 3)
+ item.setText(_translate("MainWindow", "True"))
+ item = self.choicesTable_2.item(7, 0)
+ item.setText(_translate("MainWindow", "Zone H"))
+ item = self.choicesTable_2.item(7, 1)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(7, 2)
+ item.setText(_translate("MainWindow", "type3"))
+ item = self.choicesTable_2.item(7, 3)
+ item.setText(_translate("MainWindow", "False"))
+ item = self.choicesTable_2.item(8, 0)
+ item.setText(_translate("MainWindow", "Zone I"))
+ item = self.choicesTable_2.item(8, 1)
+ item.setText(_translate("MainWindow", "type1"))
+ item = self.choicesTable_2.item(8, 2)
+ item.setText(_translate("MainWindow", "type2"))
+ item = self.choicesTable_2.item(8, 3)
+ item.setText(_translate("MainWindow", "False"))
+ self.choicesTable_2.setSortingEnabled(__sortingEnabled)
+ self.labelChoices_3.setText(_translate("MainWindow", "Choices"))
+ self.addSectorBtn_2.setText(_translate("MainWindow", "Add sector"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.warsTab), _translate("MainWindow", "Wars"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
diff --git a/src/warchron/view/ui/ui_main_window.ui b/src/warchron/view/ui/ui_main_window.ui
index 2cb8313..8a1bc4d 100644
--- a/src/warchron/view/ui/ui_main_window.ui
+++ b/src/warchron/view/ui/ui_main_window.ui
@@ -62,11 +62,6 @@
Wins
-
-
- Rewards
-
-
@@ -104,6 +99,21 @@
+ -
+
+ warItem
+
+
-
+
+ campaignItem
+
+
-
+
+ roundItem
+
+
+
+
@@ -214,41 +224,71 @@
warYear
-
+
10
- 150
- 111
- 16
+ 200
+ 47
+ 13
- Participants
+ Entrants
-
+
- 420
- 270
- 81
+ 430
+ 310
+ 75
23
- Add participant
+ Add entrant
-
+
10
- 170
+ 220
401
- 211
+ 201
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Name
@@ -266,72 +306,138 @@
- Victory pts.
+ Wins
-
+ -
- Theme pts
+ Alice
-
+
+ -
+
+ army A
+
+
+ -
+
+ 2
+
+
+ -
+
+ 1
+
+
+ -
+
+ Bob
+
+
+ -
+
+ army B
+
+
+ -
+
+ 2
+
+
+ -
+
+ 1
+
+
+ -
+
+ Charlie
+
+
+ -
+
+ army C
+
+
+ -
+
+ 2
+
+
+ -
+
+ 0
+
+
+ -
+
+ Dave
+
+
+ -
+
+ army D
+
+
+ -
+
+ 1
+
+
+ -
+
+ 0
+
+
+ -
+
+ Eve
+
+
+ -
+
+ army E
+
+
+ -
+
+ 1
+
+
+ -
+
+ 0
+
+
+ -
+
+ Fred
+
+
+ -
+
+ army F
+
+
+ -
+
+ 2
+
+
+ -
+
+ 0
+
+
-
+
true
230
- 400
- 61
- 23
-
-
-
- End war
-
-
-
-
-
- 10
- 60
- 401
- 71
-
-
-
-
- Name
-
-
-
-
- Description
-
-
-
-
-
-
- 10
- 40
- 111
- 20
-
-
-
- Objectives
-
-
-
-
- true
-
-
-
- 420
- 80
+ 120
91
23
@@ -342,7 +448,51 @@
- Add objective
+ Add Campaign
+
+
+
+
+
+ 10
+ 80
+ 211
+ 91
+
+
+ -
+
+ campaignName
+
+
+
+
+
+
+ 10
+ 60
+ 61
+ 16
+
+
+
+ Campaigns
+
+
+
+
+ true
+
+
+
+ 410
+ 400
+ 91
+ 23
+
+
+
+ End war
@@ -365,30 +515,30 @@
campaignName
-
+
10
- 40
+ 50
91
16
- Sectors
+ Sectors by round
-
+
420
- 270
+ 310
75
23
- Add participant
+ Add entrant
@@ -409,28 +559,58 @@
campaignMonth
-
+
10
- 180
+ 200
47
13
- Participants
+ Entrants
-
+
10
- 200
+ 220
401
- 181
+ 201
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Name
@@ -443,59 +623,245 @@
- Victory pts.
+ Battles
- Theme pts.
+ Wins
+ -
+
+ Alice
+
+
+ -
+
+ boss A
+
+
+ -
+
+ 6
+
+
+ -
+
+ 5
+
+
+ -
+
+ Bob
+
+
+ -
+
+ boss B
+
+
+ -
+
+ 6
+
+
+ -
+
+ 5
+
+
+ -
+
+ Charlie
+
+
+ -
+
+ boss C
+
+
+ -
+
+ 6
+
+
+ -
+
+ 3
+
+
+ -
+
+ Dave
+
+
+ -
+
+ boss D
+
+
+ -
+
+ 3
+
+
+ -
+
+ 2
+
+
+ -
+
+ Eve
+
+
+ -
+
+ boss E
+
+
+ -
+
+ 3
+
+
+ -
+
+ 1
+
+
+ -
+
+ Fred
+
+
+ -
+
+ boss F
+
+
+ -
+
+ 6
+
+
+ -
+
+ 2
+
+
-
-
-
- 10
- 60
- 401
- 101
-
-
-
-
- Name
-
-
-
-
- Round
-
-
-
-
- Major obj.
-
-
-
-
- Minor opp.
-
-
-
-
- Influence imp.
-
-
-
-
+
true
- 420
- 110
- 71
+ 360
+ 90
+ 91
+ 23
+
+
+
+ Add Round
+
+
+
+
+
+ 10
+ 80
+ 331
+ 91
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Round 1
+
+
+
+
+ Round 2
+
+
+
+
+ Round 3
+
+
+ -
+
+ Zone A
+
+
+ -
+
+ Zone D
+
+
+ -
+
+ Zone G
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ Zone E
+
+
+ -
+
+ Zone H
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ Zone F
+
+
+ -
+
+ Zone I
+
+
+
+
+
+ false
+
+
+
+ 360
+ 130
+ 91
23
@@ -509,7 +875,7 @@
- 210
+ 410
400
91
23
@@ -525,7 +891,7 @@
10
- 40
+ 170
91
16
@@ -538,16 +904,41 @@
10
- 60
- 301
- 141
+ 190
+ 271
+ 91
-
+
- Player
+ Alice
-
+
+
+
+ Bob
+
+
+
+
+ Charlie
+
+
+
+
+ Dave
+
+
+
+
+ Eve
+
+
+
+
+ Fred
+
+
Prioritary
@@ -558,6 +949,66 @@
Secondary
+ -
+
+ Zone A
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ Zone A
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ Zone A
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ Zone C
+
+
@@ -577,14 +1028,14 @@
Round Nb
-
+
true
- 320
- 110
+ 290
+ 220
91
23
@@ -593,20 +1044,30 @@
Resolve pairing
-
+
10
- 240
- 301
- 111
+ 320
+ 271
+ 91
-
+
- Sector
+ Zone A
-
+
+
+
+ Zone B
+
+
+
+
+ Zone C
+
+
Player 1
@@ -617,15 +1078,45 @@
Player 2
+ -
+
+ Alice
+
+
+ -
+
+ Charlie
+
+
+ -
+
+ Bob
+
+
+ -
+
+ Fred
+
+
+ -
+
+ Dave
+
+
+ -
+
+ Eve
+
+
-
+
true
- 320
- 290
+ 290
+ 360
91
23
@@ -640,9 +1131,9 @@
- 220
+ 410
400
- 71
+ 91
23
@@ -650,11 +1141,11 @@
End round
-
+
10
- 220
+ 300
91
16
@@ -663,6 +1154,290 @@
Battles
+
+
+
+ 10
+ 70
+ 421
+ 91
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+
+ Major
+
+
+
+
+ Minor
+
+
+
+
+ Influence
+
+
+ -
+
+ Zone A
+
+
+ -
+
+ type1
+
+
+ -
+
+ type3
+
+
+ -
+
+ False
+
+
+ -
+
+ Zone B
+
+
+ -
+
+ type2
+
+
+ -
+
+ type1
+
+
+ -
+
+ True
+
+
+ -
+
+ Zone C
+
+
+ -
+
+ type3
+
+
+ -
+
+ type2
+
+
+ -
+
+ False
+
+
+ -
+
+ Zone D
+
+
+ -
+
+ type1
+
+
+ -
+
+ type3
+
+
+ -
+
+ True
+
+
+ -
+
+ Zone E
+
+
+ -
+
+ type3
+
+
+ -
+
+ type2
+
+
+ -
+
+ False
+
+
+ -
+
+ Zone F
+
+
+ -
+
+ type2
+
+
+ -
+
+ type1
+
+
+ -
+
+ False
+
+
+ -
+
+ Zone G
+
+
+ -
+
+ type3
+
+
+ -
+
+ type1
+
+
+ -
+
+ True
+
+
+ -
+
+ Zone H
+
+
+ -
+
+ type2
+
+
+ -
+
+ type3
+
+
+ -
+
+ False
+
+
+ -
+
+ Zone I
+
+
+ -
+
+ type1
+
+
+ -
+
+ type2
+
+
+ -
+
+ False
+
+
+
+
+
+
+ 10
+ 40
+ 91
+ 16
+
+
+
+ Choices
+
+
+
+
+ true
+
+
+
+ 430
+ 100
+ 91
+ 23
+
+
+
+ Add sector
+
+
diff --git a/src/warchron/view/ui/ui_objective_dialog.py b/src/warchron/view/ui/ui_objective_dialog.py
deleted file mode 100644
index 6892af6..0000000
--- a/src/warchron/view/ui/ui_objective_dialog.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_objective_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_objectiveDialog(object):
- def setupUi(self, objectiveDialog):
- objectiveDialog.setObjectName("objectiveDialog")
- objectiveDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
- objectiveDialog.resize(394, 148)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
- objectiveDialog.setWindowIcon(icon)
- self.gridLayout = QtWidgets.QGridLayout(objectiveDialog)
- self.gridLayout.setObjectName("gridLayout")
- self.label = QtWidgets.QLabel(parent=objectiveDialog)
- self.label.setObjectName("label")
- self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
- self.objectiveName = QtWidgets.QLineEdit(parent=objectiveDialog)
- self.objectiveName.setObjectName("objectiveName")
- self.gridLayout.addWidget(self.objectiveName, 0, 1, 1, 1)
- self.label_2 = QtWidgets.QLabel(parent=objectiveDialog)
- self.label_2.setObjectName("label_2")
- self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
- self.objectiveDescription = QtWidgets.QTextEdit(parent=objectiveDialog)
- self.objectiveDescription.setObjectName("objectiveDescription")
- self.gridLayout.addWidget(self.objectiveDescription, 1, 1, 1, 1)
- self.buttonBox = QtWidgets.QDialogButtonBox(parent=objectiveDialog)
- 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, 2, 0, 1, 2)
-
- self.retranslateUi(objectiveDialog)
- self.buttonBox.accepted.connect(objectiveDialog.accept) # type: ignore
- self.buttonBox.rejected.connect(objectiveDialog.reject) # type: ignore
- QtCore.QMetaObject.connectSlotsByName(objectiveDialog)
-
- def retranslateUi(self, objectiveDialog):
- _translate = QtCore.QCoreApplication.translate
- objectiveDialog.setWindowTitle(_translate("objectiveDialog", "Objective"))
- self.label.setText(_translate("objectiveDialog", "Name"))
- self.label_2.setText(_translate("objectiveDialog", "Description"))
-
-
-if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- objectiveDialog = QtWidgets.QDialog()
- ui = Ui_objectiveDialog()
- ui.setupUi(objectiveDialog)
- objectiveDialog.show()
- sys.exit(app.exec())
diff --git a/src/warchron/view/ui/ui_objective_dialog.ui b/src/warchron/view/ui/ui_objective_dialog.ui
deleted file mode 100644
index 28b0d52..0000000
--- a/src/warchron/view/ui/ui_objective_dialog.ui
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
- objectiveDialog
-
-
- Qt::ApplicationModal
-
-
-
- 0
- 0
- 394
- 148
-
-
-
- Objective
-
-
-
- ../resources/warchron_logo.png../resources/warchron_logo.png
-
-
- -
-
-
- Name
-
-
-
- -
-
-
- -
-
-
- Description
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
-
-
-
-
-
- buttonBox
- accepted()
- objectiveDialog
- accept()
-
-
- 248
- 254
-
-
- 157
- 274
-
-
-
-
- buttonBox
- rejected()
- objectiveDialog
- reject()
-
-
- 316
- 260
-
-
- 286
- 274
-
-
-
-
-
diff --git a/src/warchron/view/ui/ui_participant_dialog.py b/src/warchron/view/ui/ui_participant_dialog.py
deleted file mode 100644
index 7e82342..0000000
--- a/src/warchron/view/ui/ui_participant_dialog.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_participant_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_participantDialog(object):
- def setupUi(self, participantDialog):
- participantDialog.setObjectName("participantDialog")
- participantDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
- participantDialog.resize(394, 148)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
- participantDialog.setWindowIcon(icon)
- self.gridLayout = QtWidgets.QGridLayout(participantDialog)
- self.gridLayout.setObjectName("gridLayout")
- self.label = QtWidgets.QLabel(parent=participantDialog)
- self.label.setObjectName("label")
- self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
- self.playerComboBox = QtWidgets.QComboBox(parent=participantDialog)
- 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=participantDialog)
- self.label_2.setObjectName("label_2")
- self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
- self.faction = QtWidgets.QLineEdit(parent=participantDialog)
- self.faction.setObjectName("faction")
- self.gridLayout.addWidget(self.faction, 1, 1, 1, 1)
- self.buttonBox = QtWidgets.QDialogButtonBox(parent=participantDialog)
- 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, 2, 0, 1, 2)
-
- self.retranslateUi(participantDialog)
- self.buttonBox.accepted.connect(participantDialog.accept) # type: ignore
- self.buttonBox.rejected.connect(participantDialog.reject) # type: ignore
- QtCore.QMetaObject.connectSlotsByName(participantDialog)
-
- def retranslateUi(self, participantDialog):
- _translate = QtCore.QCoreApplication.translate
- participantDialog.setWindowTitle(_translate("participantDialog", "Participant"))
- self.label.setText(_translate("participantDialog", "Player"))
- self.label_2.setText(_translate("participantDialog", "Faction"))
-
-
-if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- participantDialog = QtWidgets.QDialog()
- ui = Ui_participantDialog()
- ui.setupUi(participantDialog)
- participantDialog.show()
- sys.exit(app.exec())
diff --git a/src/warchron/view/ui/ui_participant_dialog.ui b/src/warchron/view/ui/ui_participant_dialog.ui
deleted file mode 100644
index 238ea5e..0000000
--- a/src/warchron/view/ui/ui_participant_dialog.ui
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
- participantDialog
-
-
- Qt::ApplicationModal
-
-
-
- 0
- 0
- 394
- 148
-
-
-
- Participant
-
-
-
- ../resources/warchron_logo.png../resources/warchron_logo.png
-
-
- -
-
-
- Player
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- Faction
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
-
-
-
-
-
- buttonBox
- accepted()
- participantDialog
- accept()
-
-
- 248
- 254
-
-
- 157
- 274
-
-
-
-
- buttonBox
- rejected()
- participantDialog
- reject()
-
-
- 316
- 260
-
-
- 286
- 274
-
-
-
-
-
diff --git a/src/warchron/view/view.py b/src/warchron/view/view.py
index b5932e8..3792855 100644
--- a/src/warchron/view/view.py
+++ b/src/warchron/view/view.py
@@ -6,13 +6,13 @@ from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QDialog, QFileDialog, QTreeWidgetItem, QMenu
from PyQt6.QtGui import QCloseEvent
-from warchron.constants import ROLE_TYPE, ROLE_ID, ItemType
from warchron.view.ui.ui_main_window import Ui_MainWindow
from warchron.view.ui.ui_player_dialog import Ui_playerDialog
from warchron.view.ui.ui_war_dialog import Ui_warDialog
from warchron.view.ui.ui_campaign_dialog import Ui_campaignDialog
-from warchron.view.ui.ui_objective_dialog import Ui_objectiveDialog
-from warchron.view.ui.ui_participant_dialog import Ui_participantDialog
+
+ROLE_TYPE = Qt.ItemDataRole.UserRole
+ROLE_ID = Qt.ItemDataRole.UserRole + 1
class View(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
@@ -24,13 +24,9 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
self.on_add_round = None
self.on_edit_item = None
self.on_delete_item = None
- self.show_details(None)
self.playersTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
self.playersTable.customContextMenuRequested.connect(self._on_players_table_context_menu)
- self.warParticipantsTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
- self.warParticipantsTable.customContextMenuRequested.connect(self._on_war_participants_table_context_menu)
- self.objectivesTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
- self.objectivesTable.customContextMenuRequested.connect(self._on_objectives_table_context_menu)
+ self.warsTree.currentItemChanged.connect(self._emit_selection_changed)
self.warsTree.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
self.warsTree.customContextMenuRequested.connect(self._on_wars_tree_context_menu)
self.addCampaignBtn.clicked.connect(self._on_add_campaign_clicked)
@@ -47,15 +43,46 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
"id": current.data(0, ROLE_ID),
})
- def get_current_tab(self) -> str:
- index = self.tabWidget.currentIndex()
- if index == 0:
- return "players"
- elif index == 1:
- return "wars"
- return ""
+ def _on_players_table_context_menu(self, pos):
+ item = self.playersTable.itemAt(pos)
+ if not item:
+ return
+ player_id = item.data(Qt.ItemDataRole.UserRole)
+ menu = QMenu(self)
+ edit_action = menu.addAction("Edit")
+ delete_action = menu.addAction("Delete")
+ action = menu.exec(self.playersTable.viewport().mapToGlobal(pos))
+ if action == edit_action and self.on_edit_item:
+ self.on_edit_item("player", player_id)
+ elif action == delete_action and self.on_delete_item:
+ self.on_delete_item("player", player_id)
-# General popups
+ def _on_wars_tree_context_menu(self, pos):
+ item = self.warsTree.itemAt(pos)
+ if not item:
+ return
+ item_type = item.data(0, ROLE_TYPE)
+ item_id = item.data(0, ROLE_ID)
+ menu = QMenu(self)
+ edit_action = None
+ if item_type != "round":
+ edit_action = menu.addAction("Edit")
+ delete_action = menu.addAction("Delete")
+ action = menu.exec(self.warsTree.viewport().mapToGlobal(pos))
+ if action == edit_action:
+ if self.on_edit_item:
+ self.on_edit_item(item_type, item_id)
+ elif action == delete_action:
+ if self.on_delete_item:
+ self.on_delete_item(item_type, item_id)
+
+ def _on_add_campaign_clicked(self):
+ if self.on_add_campaign:
+ self.on_add_campaign()
+
+ def _on_add_round_clicked(self):
+ if self.on_add_round:
+ self.on_add_round()
def closeEvent(self, event: QCloseEvent):
if self.on_close_callback:
@@ -83,26 +110,6 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
)
return Path(filename) if filename else None
-# Players view
-
- def _on_players_table_context_menu(self, pos):
- item = self.playersTable.itemAt(pos)
- if not item:
- return
- row = item.row()
- name_item = self.playersTable.item(row, 0)
- if not name_item:
- return
- player_id = name_item.data(Qt.ItemDataRole.UserRole)
- menu = QMenu(self)
- edit_action = menu.addAction("Edit")
- delete_action = menu.addAction("Delete")
- action = menu.exec(self.playersTable.viewport().mapToGlobal(pos))
- if action == edit_action and self.on_edit_item:
- self.on_edit_item(ItemType.PLAYER, player_id)
- elif action == delete_action and self.on_delete_item:
- self.on_delete_item(ItemType.PLAYER, player_id)
-
def display_players(self, players: list):
table = self.playersTable
table.setRowCount(len(players))
@@ -112,89 +119,28 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
table.setItem(row, 0, play_item)
table.resizeColumnsToContents()
-# Wars view
-
- def _on_add_campaign_clicked(self):
- if self.on_add_campaign:
- self.on_add_campaign()
-
- def _on_add_round_clicked(self):
- if self.on_add_round:
- self.on_add_round()
-
- def set_add_campaign_enabled(self, enabled: bool):
- self.addCampaignBtn.setEnabled(enabled)
-
- def set_add_round_enabled(self, enabled: bool):
- self.addRoundBtn.setEnabled(enabled)
-
- def _on_wars_tree_context_menu(self, pos):
- item = self.warsTree.itemAt(pos)
- if not item:
- return
- item_type = item.data(0, ROLE_TYPE)
- item_id = item.data(0, ROLE_ID)
- menu = QMenu(self)
- edit_action = None
- if item_type != ItemType.ROUND:
- edit_action = menu.addAction("Edit")
- delete_action = menu.addAction("Delete")
- action = menu.exec(self.warsTree.viewport().mapToGlobal(pos))
- if action == edit_action:
- if self.on_edit_item:
- self.on_edit_item(item_type, item_id)
- elif action == delete_action:
- if self.on_delete_item:
- self.on_delete_item(item_type, item_id)
-
- def _format_war_label(self, war) -> str:
- return f"{war.name} ({war.year})"
-
- def _format_campaign_label(self, camp) -> str:
- return f"{camp.name} ({calendar.month_name[camp.month]})"
-
- def _format_round_label(self, round, index: int) -> str:
- return f"Round {index}"
-
- def display_wars_tree(self, wars: list):
+ def display_wars(self, wars: list):
tree = self.warsTree
tree.clear()
tree.setColumnCount(1)
tree.setHeaderLabels(["Wars"])
for war in wars:
- war_item = QTreeWidgetItem([self._format_war_label(war)])
- war_item.setData(0, ROLE_TYPE, ItemType.WAR)
+ war_item = QTreeWidgetItem([f"{war.name} ({war.year})"])
+ war_item.setData(0, ROLE_TYPE, "war")
war_item.setData(0, ROLE_ID, war.id)
tree.addTopLevelItem(war_item)
for camp in war.get_all_campaigns():
- camp_item = QTreeWidgetItem([self._format_campaign_label(camp)])
- camp_item.setData(0, ROLE_TYPE, ItemType.CAMPAIGN)
+ camp_item = QTreeWidgetItem([f"{camp.name} ({calendar.month_name[camp.month]})"])
+ camp_item.setData(0, ROLE_TYPE, "campaign")
camp_item.setData(0, ROLE_ID, camp.id)
war_item.addChild(camp_item)
for index, rnd in enumerate(camp.get_all_rounds(), start=1):
- rnd_item = QTreeWidgetItem([self._format_round_label(rnd, index)])
- rnd_item.setData(0, ROLE_TYPE, ItemType.ROUND)
+ rnd_item = QTreeWidgetItem([f"Round {index}"])
+ rnd_item.setData(0, ROLE_TYPE, "round")
rnd_item.setData(0, ROLE_ID, rnd.id)
camp_item.addChild(rnd_item)
- tree.currentItemChanged.connect(self._emit_selection_changed)
tree.expandAll()
- def select_tree_item(self, *, item_type: ItemType, item_id: str):
- def walk(item: QTreeWidgetItem):
- if (
- item.data(0, ROLE_TYPE) == item_type
- and item.data(0, ROLE_ID) == item_id
- ):
- self.warsTree.setCurrentItem(item)
- return True
- for i in range(item.childCount()):
- if walk(item.child(i)):
- return True
- return False
- for i in range(self.warsTree.topLevelItemCount()):
- if walk(self.warsTree.topLevelItem(i)):
- return
-
def get_selected_tree_item(self):
item = self.warsTree.currentItem()
if not item:
@@ -204,94 +150,20 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
"id": item.data(0, ROLE_ID)
}
- def show_details(self, item_type: str | None):
- if item_type == ItemType.WAR:
- self.selectedDetailsStack.setCurrentWidget(self.pageWar)
- elif item_type == ItemType.CAMPAIGN:
- self.selectedDetailsStack.setCurrentWidget(self.pageCampaign)
- elif item_type == ItemType.ROUND:
- self.selectedDetailsStack.setCurrentWidget(self.pageRound)
- else:
- self.selectedDetailsStack.setCurrentWidget(self.pageEmpty)
+ def set_add_campaign_enabled(self, enabled: bool):
+ self.addCampaignBtn.setEnabled(enabled)
-# War page
+ def set_add_round_enabled(self, enabled: bool):
+ self.addRoundBtn.setEnabled(enabled)
- def _on_objectives_table_context_menu(self, pos):
- item = self.objectivesTable.itemAt(pos)
- if not item:
- return
- row = item.row()
- name_item = self.objectivesTable.item(row, 0)
- if not name_item:
- return
- objective_id = name_item.data(Qt.ItemDataRole.UserRole)
- menu = QMenu(self)
- edit_action = menu.addAction("Edit")
- delete_action = menu.addAction("Delete")
- action = menu.exec(self.objectivesTable.viewport().mapToGlobal(pos))
- if action == edit_action and self.on_edit_item:
- self.on_edit_item(ItemType.OBJECTIVE, objective_id)
- elif action == delete_action and self.on_delete_item:
- self.on_delete_item(ItemType.OBJECTIVE, objective_id)
-
- def _on_war_participants_table_context_menu(self, pos):
- item = self.warParticipantsTable.itemAt(pos)
- if not item:
- return
- row = item.row()
- name_item = self.warParticipantsTable.item(row, 0)
- if not name_item:
- return
- participant_id = name_item.data(Qt.ItemDataRole.UserRole)
- menu = QMenu(self)
- edit_action = menu.addAction("Edit")
- delete_action = menu.addAction("Delete")
- action = menu.exec(self.warParticipantsTable.viewport().mapToGlobal(pos))
- if action == edit_action and self.on_edit_item:
- self.on_edit_item(ItemType.WAR_PARTICIPANT, participant_id)
- elif action == delete_action and self.on_delete_item:
- self.on_delete_item(ItemType.WAR_PARTICIPANT, participant_id)
-
- def show_war_details(self, *, name: str, year: int):
- self.warName.setText(name)
- self.warYear.setText(str(year))
-
- def display_war_objectives(self, objectives: list):
- table = self.objectivesTable
- table.clearContents()
- table.setRowCount(len(objectives))
- for row, obj in enumerate(objectives):
- name_item = QtWidgets.QTableWidgetItem(obj.name)
- desc_item = QtWidgets.QTableWidgetItem(obj.description)
- name_item.setData(Qt.ItemDataRole.UserRole, obj.id)
- table.setItem(row, 0, name_item)
- table.setItem(row, 1, desc_item)
- table.resizeColumnsToContents()
-
- def display_war_participants(self, participants: list[tuple[str, str, str]]):
- table = self.warParticipantsTable
- table.clearContents()
- table.setRowCount(len(participants))
- for row, (name, faction, pid) in enumerate(participants):
- name_item = QtWidgets.QTableWidgetItem(name)
- fact_item = QtWidgets.QTableWidgetItem(faction)
- name_item.setData(Qt.ItemDataRole.UserRole, pid)
- table.setItem(row, 0, name_item)
- table.setItem(row, 1, fact_item)
- table.resizeColumnsToContents()
-
-# Campaign page
-
- def show_campaign_details(self, *, name: str, month: int):
- self.campaignName.setText(name)
- self.campaignMonth.setText(calendar.month_name[month])
-
-# Round page
-
- def show_round_details(self, *, index: int):
- self.roundNb.setText(f"Round {index}")
-
-
+ def get_current_tab(self) -> str:
+ index = self.tabWidget.currentIndex()
+ if index == 0:
+ return "players"
+ elif index == 1:
+ return "wars"
+ return ""
+
class PlayerDialog(QDialog):
def __init__(self, parent=None, *, default_name: str = ""):
super().__init__(parent)
@@ -330,38 +202,4 @@ class CampaignDialog(QDialog):
return self.ui.campaignName.text().strip()
def get_campaign_month(self) -> int:
- return int(self.ui.campaignMonth.value())
-
-class ObjectiveDialog(QDialog):
- def __init__(self, parent=None, *, default_name="", default_description=""):
- super().__init__(parent)
- self.ui = Ui_objectiveDialog()
- self.ui.setupUi(self)
- self.ui.objectiveName.setText(default_name)
- self.ui.objectiveDescription.setPlainText(default_description)
-
- def get_objective_name(self) -> str:
- return self.ui.objectiveName.text().strip()
-
- def get_objective_description(self) -> str:
- return self.ui.objectiveDescription.toPlainText().strip()
-
-class ParticipantDialog(QDialog):
- def __init__(self, parent=None, *, players: list, default_player_id=None, default_faction="", editable_player=True):
- super().__init__(parent)
- self.ui = Ui_participantDialog()
- self.ui.setupUi(self)
- for player in players:
- self.ui.playerComboBox.addItem(player.name, player.id)
- if default_player_id:
- index = self.ui.playerComboBox.findData(default_player_id)
- if index != -1:
- self.ui.playerComboBox.setCurrentIndex(index)
- self.ui.playerComboBox.setEnabled(editable_player)
- self.ui.faction.setText(default_faction)
-
- def get_player_id(self) -> str:
- return self.ui.playerComboBox.currentData()
-
- def get_participant_faction(self) -> str:
- return self.ui.faction.text().strip()
\ No newline at end of file
+ return int(self.ui.campaignMonth.value())
\ No newline at end of file