exceptions adding in closed elements
This commit is contained in:
parent
88bd28e949
commit
a2b6c7c684
10 changed files with 179 additions and 82 deletions
|
|
@ -2,7 +2,7 @@ from typing import List, TYPE_CHECKING
|
|||
|
||||
from PyQt6.QtWidgets import QMessageBox, QDialog
|
||||
|
||||
from warchron.constants import ItemType, RefreshScope
|
||||
from warchron.constants import RefreshScope
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from warchron.controller.app_controller import AppController
|
||||
|
|
@ -11,6 +11,9 @@ from warchron.controller.dtos import (
|
|||
WarParticipantDTO,
|
||||
ObjectiveDTO,
|
||||
)
|
||||
from warchron.model.war import War
|
||||
from warchron.model.war_participant import WarParticipant
|
||||
from warchron.model.objective import Objective
|
||||
from warchron.model.closure_service import ClosureService
|
||||
from warchron.view.war_dialog import WarDialog
|
||||
from warchron.view.objective_dialog import ObjectiveDialog
|
||||
|
|
@ -60,21 +63,18 @@ class WarController:
|
|||
return False
|
||||
return True
|
||||
|
||||
def add_war(self) -> None:
|
||||
def create_war(self) -> War | None:
|
||||
dialog = WarDialog(
|
||||
self.app.view, default_year=self.app.model.get_default_war_values()["year"]
|
||||
)
|
||||
result = dialog.exec() # modal blocking dialog
|
||||
if result == QDialog.DialogCode.Accepted:
|
||||
name = dialog.get_war_name()
|
||||
year = dialog.get_war_year()
|
||||
if not self._validate_war_inputs(name, year):
|
||||
return
|
||||
war = self.app.model.add_war(name, year)
|
||||
self.app.is_dirty = True
|
||||
self.app.navigation.refresh_and_select(
|
||||
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id
|
||||
)
|
||||
result = dialog.exec()
|
||||
if result != QDialog.DialogCode.Accepted:
|
||||
return None
|
||||
name = dialog.get_war_name()
|
||||
year = dialog.get_war_year()
|
||||
if not self._validate_war_inputs(name, year):
|
||||
return None
|
||||
return self.app.model.add_war(name, year)
|
||||
|
||||
def edit_war(self, war_id: str) -> None:
|
||||
war = self.app.model.get_war(war_id)
|
||||
|
|
@ -142,21 +142,19 @@ class WarController:
|
|||
return False
|
||||
return True
|
||||
|
||||
def add_objective(self) -> None:
|
||||
def create_objective(self) -> Objective | None:
|
||||
if not self.app.navigation.selected_war_id:
|
||||
return
|
||||
return None
|
||||
dialog = ObjectiveDialog(self.app.view)
|
||||
if dialog.exec() != QDialog.DialogCode.Accepted:
|
||||
return
|
||||
return None
|
||||
name = dialog.get_objective_name()
|
||||
description = dialog.get_objective_description()
|
||||
if not self._validate_objective_inputs(name, description):
|
||||
return
|
||||
self.app.model.add_objective(
|
||||
return None
|
||||
return self.app.model.add_objective(
|
||||
self.app.navigation.selected_war_id, name, description
|
||||
)
|
||||
self.app.is_dirty = True
|
||||
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
|
||||
|
||||
def edit_objective(self, objective_id: str) -> None:
|
||||
obj = self.app.model.get_objective(objective_id)
|
||||
|
|
@ -174,9 +172,9 @@ class WarController:
|
|||
|
||||
# War participant methods
|
||||
|
||||
def add_war_participant(self) -> None:
|
||||
def create_war_participant(self) -> WarParticipant | None:
|
||||
if not self.app.navigation.selected_war_id:
|
||||
return
|
||||
return None
|
||||
players = self.app.model.get_available_players(
|
||||
self.app.navigation.selected_war_id
|
||||
)
|
||||
|
|
@ -185,16 +183,14 @@ class WarController:
|
|||
]
|
||||
dialog = WarParticipantDialog(self.app.view, players=play_opts)
|
||||
if dialog.exec() != QDialog.DialogCode.Accepted:
|
||||
return
|
||||
return None
|
||||
player_id = dialog.get_player_id()
|
||||
faction = dialog.get_participant_faction()
|
||||
if not player_id:
|
||||
return
|
||||
self.app.model.add_war_participant(
|
||||
return None
|
||||
return self.app.model.add_war_participant(
|
||||
self.app.navigation.selected_war_id, player_id, faction
|
||||
)
|
||||
self.app.is_dirty = True
|
||||
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
|
||||
|
||||
def edit_war_participant(self, participant_id: str) -> None:
|
||||
war_part = self.app.model.get_war_participant(participant_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue