annotate MainWindow.cs @ 10:3d0c9cf1b924

Fixes #243: Create "New Army" dialog in Qt# app * Make dialog not show in task bar (add parent to constructor) * Add methods to retrieve values Re #242: Create Qt# UI for WarFoundry * Copy lots of implementation from the WinForms app to get some core army loading working (looks like we need to investigate refactoring commonality)
author IBBoard <dev@ibboard.co.uk>
date Tue, 02 Feb 2010 20:56:39 +0000
parents bbf40d66dfe4
children 72bcf6457227
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file (MainWindow.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System.Collections.Generic;
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using Qyoto;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
7 using log4net;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
8 using IBBoard.Commands;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
9 using IBBoard.IO;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
10 using IBBoard.WarFoundry.API;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
11 using IBBoard.WarFoundry.API.Factories;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
12 using IBBoard.WarFoundry.API.Objects;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
13 using IBBoard.WarFoundry.API.Savers;
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
15 namespace IBBoard.WarFoundry.GUI.QtSharp
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 {
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
17 public class MainWindow : QMainWindow
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 {
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
19 private static readonly string AppTitle = "WarFoundry";
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
20
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
21 private Ui_MainWindowLayout layout;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
22 private readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
23 private string loadedFilePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
24 private CommandStack commandStack;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
25 private QFileDialog saveArmyDialog;
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
26
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
27 public MainWindow ()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
28 {
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
29 layout = new Ui_MainWindowLayout();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
30 layout.SetupUi(this);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
31 WindowIcon = new QIcon("icons/App.png");
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
32 saveArmyDialog = new QFileDialog(this);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
33 saveArmyDialog.acceptMode = QFileDialog.AcceptMode.AcceptSave;
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
34 SetUpActionIcons();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
35 ConnectMenuActions();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
36 SetUpToolbar();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
37 layout.unitTabs.Clear();
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
38 WarFoundryCore.ArmyChanged+= HandleWarFoundryCoreArmyChanged;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
39 CommandStack.CommandStackUpdated+= HandleCommandStackCommandStackUpdated;
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
40 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
41
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
42 private void SetUpActionIcons()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
43 {
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
44 layout.actionCreateArmy.icon = new QIcon("icons/ui/filenew.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
45 layout.actionOpenArmy.icon = new QIcon("icons/ui/fileopen.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
46 layout.actionSaveArmy.icon = new QIcon("icons/ui/filesave.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
47 layout.actionSaveArmyAs.icon = new QIcon("icons/ui/filesaveas.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
48 layout.menuExportArmyAs.icon = new QIcon("icons/ui/export.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
49 layout.actionCloseArmy.icon = new QIcon("icons/ui/window-close.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
50 layout.actionExit.icon = new QIcon("icons/ui/exit.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
51 layout.actionUndo.icon = new QIcon("icons/ui/edit-undo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
52 layout.actionRedo.icon = new QIcon("icons/ui/edit-redo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
53 layout.actionAbout.icon = new QIcon("icons/ui/help-about.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
54 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
55
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
56 private void ConnectMenuActions()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
57 {
6
bbf40d66dfe4 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 5
diff changeset
58 QObject.Connect(layout.actionCreateArmy, SIGNAL("triggered()"), CreateNewArmy);
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
59 QObject.Connect(layout.actionUndo, SIGNAL("triggered()"), UndoAction);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
60 QObject.Connect(layout.actionRedo, SIGNAL("triggered()"), RedoAction);
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
61 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
62
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
63 private void CreateNewArmy()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
64 {
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
65 NewArmyDialog dialog = new NewArmyDialog(this);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
66 int result = dialog.Exec ();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
67
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
68 if (result == (int)QDialog.DialogCode.Accepted)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
69 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
70 try
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
71 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
72 CurrentArmy = new Army(dialog.GetSelectedRace(), dialog.GetArmyName(), dialog.GetArmySize());
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
73 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
74 catch (RequiredDataMissingException ex)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
75 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
76 log.Error("Required data missing from race file", ex);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
77 QMessageBox.Warning(this, "Invalid race file data", "the race file for the requested data could not be loaded as it did not contain some required data");
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
78 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
79 catch (InvalidFileException ex)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
80 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
81 log.Error("Race file was invalid", ex);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
82 QMessageBox.Warning(this, ex.Message, "invalid race file");
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
83 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
84 }
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
85 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
86
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
87 private void SetUpToolbar()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
88 {
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
89 List<QAction> actions = new List<QAction>(){
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
90 layout.actionCreateArmy,
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
91 layout.actionOpenArmy,
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
92 layout.actionSaveArmy};
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
93 layout.toolBar.AddActions(actions);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
94 layout.toolBar.AddSeparator();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
95 layout.toolBar.AddAction(layout.actionUndo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
96 layout.toolBar.AddAction(layout.actionRedo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
97 layout.toolBar.AddSeparator();
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
98 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
99
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
100 private void HandleWarFoundryCoreArmyChanged (Army oldValue, Army newValue)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
101 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
102 CommandStack.Reset();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
103 loadedFilePath = null;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
104 layout.actionSaveArmy.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
105 SetPointsPanelText();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
106 SetAppTitle();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
107 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
108
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
109 private void SetPointsPanelText ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
110 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
111 //TODO: implement panel and points panel
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
112 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
113
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
114
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
115 private void SetAppTitle()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
116 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
117 string str = AppTitle;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
118
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
119 if (CurrentGameSystem!=null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
120 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
121 str+= " - " + CurrentGameSystem.Name;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
122
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
123 if (CurrentArmy!=null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
124 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
125 str+= " - " + CurrentArmy.Name;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
126 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
127 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
128
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
129 this.WindowTitle = str;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
130 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
131
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
132 public CommandStack CommandStack
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
133 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
134 get
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
135 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
136 if (commandStack == null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
137 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
138 commandStack = new CommandStack();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
139 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
140
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
141 return commandStack;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
142 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
143 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
144
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
145 private void HandleCommandStackCommandStackUpdated ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
146 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
147
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
148 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
149
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
150 private void UndoAction()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
151 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
152 if (commandStack.CanUndo())
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
153 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
154 commandStack.Undo();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
155 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
156 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
157
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
158 private void RedoAction()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
159 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
160 if (commandStack.CanRedo())
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
161 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
162 commandStack.Redo();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
163 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
164 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
165
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
166 private bool SaveCurrentArmy()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
167 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
168 bool saved = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
169
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
170 string filePath = loadedFilePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
171
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
172 if (filePath == null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
173 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
174 filePath = PromptForArmyFilePath();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
175 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
176
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
177 if (filePath != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
178 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
179 saved = SaveCurrentArmyToFile(filePath);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
180 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
181
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
182 return saved;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
183 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
184
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
185 private bool SaveCurrentArmyAs()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
186 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
187 bool saved = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
188 string filePath = PromptForArmyFilePath();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
189
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
190 if (filePath != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
191 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
192 saved = SaveCurrentArmyToFile(filePath);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
193 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
194
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
195 return saved;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
196 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
197
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
198 private bool SaveCurrentArmyToFile(string filePath)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
199 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
200 if (WarFoundrySaver.GetSaver().Save(CurrentArmy, filePath))
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
201 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
202 loadedFilePath = filePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
203 layout.actionSaveArmy.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
204 CommandStack.setCleanMark();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
205 return true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
206 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
207 else
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
208 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
209 QMessageBox.Critical(this, "file save failed", "file save failed - check log for details");
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
210 return false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
211 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
212 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
213
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
214 private string PromptForArmyFilePath()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
215 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
216 int result = saveArmyDialog.Exec();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
217
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
218 if (result == (int)QDialog.DialogCode.Accepted)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
219 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
220 return saveArmyDialog.SelectedFiles()[0];
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
221 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
222 else
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
223 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
224 return null;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
225 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
226 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
227
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
228 public GameSystem CurrentGameSystem
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
229 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
230 get { return WarFoundryCore.CurrentGameSystem; }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
231 set { WarFoundryCore.CurrentGameSystem = value; }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
232 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
233
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
234 public Army CurrentArmy
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
235 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
236 get { return WarFoundryCore.CurrentArmy; }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
237 set { SetArmy(value); }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
238 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
239
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
240 private void SetArmy(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
241 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
242 IgnoreArmy(CurrentArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
243 CloseAllUnitWindows();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
244
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
245 if (newArmy == null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
246 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
247 SetNullArmyState();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
248 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
249 else
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
250 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
251 WarFoundryCore.CurrentGameSystem = newArmy.GameSystem;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
252 ListenToArmy(newArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
253 SetNonNullArmyState(newArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
254 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
255
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
256 WarFoundryCore.CurrentArmy = newArmy;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
257 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
258
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
259 private void IgnoreArmy(Army oldArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
260 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
261 if (oldArmy != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
262 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
263 oldArmy.UnitAdded -= UnitAddedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
264 oldArmy.UnitRemoved -= UnitRemovedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
265 oldArmy.PointsValueChanged -= PointsValueChangedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
266 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
267 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
268 private void UnitAddedMethod(object unitObj)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
269 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
270 if (unitObj is Unit)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
271 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
272 Unit unit = (Unit)unitObj;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
273 //TODO set error panel
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
274 //sbErrorPanel.Text = "";
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
275 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
276 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
277
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
278 private void UnitRemovedMethod(object unitObj)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
279 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
280 if (unitObj is Unit)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
281 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
282 Unit unit = (Unit)unitObj;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
283 //TODO set error panel
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
284 //sbErrorPanel.Text = "";
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
285
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
286 //TODO check if window is open, and close it if it is
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
287
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
288 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
289 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
290
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
291 private void PointsValueChangedMethod(WarFoundryObject obj, double oldVal, double newVal)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
292 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
293 if (obj is Army)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
294 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
295 SetPointsPanelText();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
296 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
297 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
298
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
299 private void CloseAllUnitWindows()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
300 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
301 // FrmUnit[] unitForms = DictionaryUtils.ToArray(unitWindows);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
302 //
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
303 // foreach (FrmUnit window in unitForms)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
304 // {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
305 // window.Close();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
306 // }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
307 //
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
308 // unitWindows.Clear();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
309 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
310
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
311 private void ListenToArmy(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
312 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
313 if (newArmy != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
314 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
315 newArmy.UnitAdded += UnitAddedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
316 newArmy.UnitRemoved += UnitRemovedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
317 newArmy.PointsValueChanged += PointsValueChangedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
318 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
319 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
320
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
321 private void SetNullArmyState()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
322 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
323 layout.actionSaveArmyAs.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
324 layout.actionCloseArmy.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
325 layout.menuExportArmyAs.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
326 DisableCategoryButtons();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
327 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
328
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
329 void DisableCategoryButtons ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
330 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
331 //TODO handle category buttons
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
332 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
333
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
334
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
335 private void SetNonNullArmyState(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
336 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
337 SetCategoryButtons(newArmy.Race.Categories);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
338 EnableCategoryButtons();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
339 layout.actionSaveArmyAs.Enabled = true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
340 layout.actionCloseArmy.Enabled = true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
341 layout.menuExportArmyAs.Enabled = true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
342 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
343
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
344 void SetCategoryButtons (Category[] categories)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
345 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
346 //TODO create category buttons
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
347 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
348
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
349 void EnableCategoryButtons ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
350 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
351 //TODO enable category buttons
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
352 }
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
353 }
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
354 }