annotate MainWindow.cs @ 34:c3c64e139e5f default tip

Re #245: Create unit tab implementation * Create layout for unit tab widget * Start to populate values WARNING: Qyoto/Qt# seems unstable now and segfaults when new units are added!
author IBBoard <dev@ibboard.co.uk>
date Sat, 07 Aug 2010 16:02:53 +0000
parents be876c03054f
children
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;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
5 using System.IO;
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using System.Collections.Generic;
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using Qyoto;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
8 using log4net;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
9 using IBBoard.Commands;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
10 using IBBoard.IO;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
11 using IBBoard.Lang;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
12 using IBBoard.WarFoundry.API;
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
13 using IBBoard.WarFoundry.API.Exporters;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
14 using IBBoard.WarFoundry.API.Factories;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
15 using IBBoard.WarFoundry.API.Objects;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
16 using IBBoard.WarFoundry.API.Savers;
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
17 using IBBoard.WarFoundry.GUI.QtSharp.Handler;
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
18 using IBBoard.WarFoundry.API.Commands;
33
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
19 using IBBoard.WarFoundry.GUI.QtSharp.Widgets;
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
21 namespace IBBoard.WarFoundry.GUI.QtSharp
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 {
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
23 public class MainWindow : QMainWindow
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 {
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
25 private static readonly string AppTitle = "WarFoundry";
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
26 private readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
27
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
28 private Ui_MainWindowLayout layout;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
29 private string loadedFilePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
30 private CommandStack commandStack;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
31 private QFileDialog saveArmyDialog;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
32 private QFileDialog openArmyDialog;
20
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
33 private Preferences preferences;
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
34 private QAction[] categoryActions;
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
35 private Dictionary<string, QStandardItem> treeNodes;
33
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
36 private Dictionary<Unit, UnitWidget> openUnitWidgets;
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
37
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
38
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
39 public MainWindow ()
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 layout = new Ui_MainWindowLayout();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
42 layout.SetupUi(this);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
43 WindowIcon = new QIcon("icons/App.png");
20
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
44 Preferences = new Preferences("WarFoundryQt");
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
45 treeNodes = new Dictionary<string, QStandardItem>();
33
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
46 openUnitWidgets = new Dictionary<Unit, UnitWidget>();
20
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
47
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
48 try
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
49 {
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
50 Translation.InitialiseTranslations(Constants.ExecutablePath, Preferences["language"].ToString());
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
51 }
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
52 catch (TranslationLoadException ex)
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
53 {
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
54 log.Error(ex);
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
55 QMessageBox.Critical(this, "Translation loading failed", ex.Message);
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
56 }
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
57
12
4a724378d66a Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
58 SetAppTitle();
26
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
59 saveArmyDialog = new QFileDialog();
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
60 saveArmyDialog.acceptMode = QFileDialog.AcceptMode.AcceptSave;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
61 saveArmyDialog.fileMode = QFileDialog.FileMode.AnyFile;
18
ab016fcda350 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 17
diff changeset
62 saveArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal)));
26
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
63 openArmyDialog = new QFileDialog();
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
64 openArmyDialog.acceptMode = QFileDialog.AcceptMode.AcceptOpen;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
65 openArmyDialog.fileMode = QFileDialog.FileMode.ExistingFile;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
66 openArmyDialog.SetNameFilter("*.army");
18
ab016fcda350 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 17
diff changeset
67 openArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal)));
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
68 SetUpActionIcons();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
69 ConnectMenuActions();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
70 SetUpToolbar();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
71 layout.unitTabs.Clear();
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
72 categoryActions = new QAction[0];
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
73 WarFoundryCore.ArmyChanged+= HandleWarFoundryCoreArmyChanged;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
74 CommandStack.CommandStackUpdated+= HandleCommandStackCommandStackUpdated;
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
75 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
76
26
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
77 protected override void CloseEvent(QCloseEvent arg1)
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
78 {
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
79 base.CloseEvent(arg1);
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
80 saveArmyDialog.Dispose();
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
81 openArmyDialog.Dispose();
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
82 }
55d4f16c982b Fixes #250: QtSharp app doesn't always quit properly
IBBoard <dev@ibboard.co.uk>
parents: 24
diff changeset
83
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
84 private void SetUpActionIcons()
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 layout.actionCreateArmy.icon = new QIcon("icons/ui/filenew.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
87 layout.actionOpenArmy.icon = new QIcon("icons/ui/fileopen.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
88 layout.actionSaveArmy.icon = new QIcon("icons/ui/filesave.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
89 layout.actionSaveArmyAs.icon = new QIcon("icons/ui/filesaveas.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
90 layout.menuExportArmyAs.icon = new QIcon("icons/ui/export.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
91 layout.actionCloseArmy.icon = new QIcon("icons/ui/window-close.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
92 layout.actionExit.icon = new QIcon("icons/ui/exit.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
93 layout.actionUndo.icon = new QIcon("icons/ui/edit-undo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
94 layout.actionRedo.icon = new QIcon("icons/ui/edit-redo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
95 layout.actionAbout.icon = new QIcon("icons/ui/help-about.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
96 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
97
16
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
98 private void ConnectMenuActions()
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
99 {
16
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
100 ConnectMenuAction(layout.actionCreateArmy, CreateNewArmy);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
101 ConnectMenuAction(layout.actionUndo, UndoAction);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
102 ConnectMenuAction(layout.actionRedo,RedoAction);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
103 ConnectMenuAction(layout.actionSaveArmyAs, DoSaveCurrentArmyAs);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
104 ConnectMenuAction(layout.actionSaveArmy, DoSaveCurrentArmy);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
105 ConnectMenuAction(layout.actionCloseArmy, DoCloseArmy);
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
106 ConnectMenuAction(layout.actionOpenArmy, DoOpenArmy);
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
107 ConnectMenuAction(layout.actionExportBasicHtml, DoExportBasicHTML);
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
108 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
109
16
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
110 private void ConnectMenuAction(QAction menuAction, SlotFunc method)
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
111 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
112 QObject.Connect(menuAction, SIGNAL("triggered()"), method);
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
113 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
114
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
115 private void CreateNewArmy()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
116 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
117 if (CloseCurrentArmy())
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
118 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
119 NewArmyDialog dialog = new NewArmyDialog(this);
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
120 int result = dialog.Exec();
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
121
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
122 if (result == (int)QDialog.DialogCode.Accepted)
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
123 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
124 try
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
125 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
126 CurrentArmy = new Army(dialog.GetSelectedRace(), dialog.GetArmyName(), dialog.GetArmySize());
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
127 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
128 catch (RequiredDataMissingException ex)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
129 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
130 log.Error("Required data missing from race file", ex);
17
8f9f757f2099 Re #242: Create Qyoto GUI
IBBoard <dev@ibboard.co.uk>
parents: 16
diff changeset
131 QMessageBox.Critical(this, "Invalid race file data", "the race file for the requested data could not be loaded as it did not contain some required data");
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
132 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
133 catch (InvalidFileException ex)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
134 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
135 log.Error("Race file was invalid", ex);
17
8f9f757f2099 Re #242: Create Qyoto GUI
IBBoard <dev@ibboard.co.uk>
parents: 16
diff changeset
136 QMessageBox.Critical(this, "invalid race file", ex.Message);
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
137 }
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
138 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
139 }
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
140 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
141
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
142 private void SetUpToolbar()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
143 {
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
144 layout.toolBar.AddAction(layout.actionCreateArmy);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
145 layout.toolBar.AddAction(layout.actionOpenArmy);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
146 layout.toolBar.AddAction(layout.actionSaveArmy);
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
147 layout.toolBar.AddSeparator();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
148 layout.toolBar.AddAction(layout.actionUndo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
149 layout.toolBar.AddAction(layout.actionRedo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
150 layout.toolBar.AddSeparator();
10
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
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
153 private void HandleWarFoundryCoreArmyChanged(Army oldValue, Army newValue)
30
56771b8efdaf Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 29
diff changeset
154 {
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
155 CommandStack.Reset();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
156 loadedFilePath = null;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
157 layout.actionSaveArmy.Enabled = false;
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
158 SetCategoryButtons(newValue == null ? new Category[0] : newValue.Race.Categories);
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
159 SetPointsPanelText();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
160 SetAppTitle();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
161 }
30
56771b8efdaf Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 29
diff changeset
162
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
163 private void SetPointsPanelText ()
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 //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
166 }
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
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
169 private void SetAppTitle()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
170 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
171 string str = AppTitle;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
172
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
173 if (CurrentGameSystem!=null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
174 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
175 str+= " - " + CurrentGameSystem.Name;
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 (CurrentArmy!=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 str+= " - " + CurrentArmy.Name;
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
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
183 this.WindowTitle = str;
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
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
186 public CommandStack CommandStack
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
187 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
188 get
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 (commandStack == 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 commandStack = new CommandStack();
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 commandStack;
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
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
199 private void HandleCommandStackCommandStackUpdated()
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
200 {
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
201 layout.actionUndo.Enabled = CommandStack.CanUndo();
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
202 layout.actionRedo.Enabled = CommandStack.CanRedo();
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
203 layout.actionSaveArmy.Enabled = CommandStack.IsDirty();
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
204 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
205
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
206 private void UndoAction()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
207 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
208 if (commandStack.CanUndo())
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
209 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
210 commandStack.Undo();
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 void RedoAction()
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 if (commandStack.CanRedo())
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 commandStack.Redo();
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 }
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
221
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
222 private void DoOpenArmy()
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
223 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
224 OpenArmy();
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
225 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
226
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
227 private bool OpenArmy()
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
228 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
229 log.Debug("Opening army");
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
230 string newFilePath = PromptForFilePath (openArmyDialog);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
231 bool openedFile = false;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
232
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
233 if (newFilePath != null && CloseCurrentArmy())
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
234 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
235 try
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
236 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
237 log.DebugFormat("Opening {0}", newFilePath);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
238 CurrentArmy = WarFoundryLoader.GetDefault().LoadArmy(new FileInfo(newFilePath));
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
239 loadedFilePath = newFilePath;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
240 openedFile = true;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
241 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
242 catch (RequiredDataMissingException ex)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
243 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
244 log.Error(ex);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
245 QMessageBox.Critical(this, Translation.GetTranslation("InvalidArmyFileBoxTitle", "invalid army file"), ex.Message);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
246 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
247 catch (InvalidFileException ex)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
248 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
249 log.Error(ex);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
250 QMessageBox.Critical(this, Translation.GetTranslation("InvalidArmyFileBoxTitle", "invalid army file"), ex.Message);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
251 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
252 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
253
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
254 return openedFile;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
255 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
256
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
257 private void DoSaveCurrentArmy()
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
258 {
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
259 SaveCurrentArmy();
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
260 }
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
261
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
262 private bool SaveCurrentArmy()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
263 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
264 log.Debug("Save current army");
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
265 bool saved = false;
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 string filePath = loadedFilePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
268
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
269 if (filePath == null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
270 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
271 filePath = PromptForArmyFilePath();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
272 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
273
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
274 if (filePath != null)
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 saved = SaveCurrentArmyToFile(filePath);
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
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
279 return saved;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
280 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
281
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
282 private void DoSaveCurrentArmyAs()
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
283 {
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
284 SaveCurrentArmyAs();
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
285 }
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
286
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
287 private bool SaveCurrentArmyAs()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
288 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
289 log.Debug("Saving current army as a different file");
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
290 bool saved = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
291 string filePath = PromptForArmyFilePath();
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 (filePath != null)
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 saved = SaveCurrentArmyToFile(filePath);
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 return saved;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
299 }
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 private bool SaveCurrentArmyToFile(string filePath)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
302 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
303 log.DebugFormat("Save to {0}", filePath);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
304
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
305 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
306 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
307 log.Debug("Army saved");
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
308 loadedFilePath = filePath;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
309 layout.actionSaveArmy.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
310 CommandStack.setCleanMark();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
311 return true;
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 else
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
314 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
315 log.Debug("Save failed");
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
316 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
317 return false;
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 string PromptForArmyFilePath()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
322 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
323 return PromptForFilePath (saveArmyDialog);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
324 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
325
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
326 private string PromptForFilePath(QFileDialog qFileDialog)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
327 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
328 int result = qFileDialog.Exec();
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
329 string path = null;
10
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 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
332 {
15
03ed32fdc706 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 14
diff changeset
333 path = qFileDialog.SelectedFiles()[0];
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
334 }
11
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
335
72bcf6457227 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 10
diff changeset
336 return path;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
337 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
338
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
339 public GameSystem CurrentGameSystem
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
340 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
341 get { return WarFoundryCore.CurrentGameSystem; }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
342 set { WarFoundryCore.CurrentGameSystem = value; }
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
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
345 public Army CurrentArmy
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
346 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
347 get { return WarFoundryCore.CurrentArmy; }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
348 set { SetArmy(value); }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
349 }
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 private void SetArmy(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
352 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
353 IgnoreArmy(CurrentArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
354 CloseAllUnitWindows();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
355
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
356 if (newArmy == null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
357 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
358 SetNullArmyState();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
359 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
360 else
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
361 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
362 WarFoundryCore.CurrentGameSystem = newArmy.GameSystem;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
363 ListenToArmy(newArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
364 SetNonNullArmyState(newArmy);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
365 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
366
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
367 WarFoundryCore.CurrentArmy = newArmy;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
368 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
369
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
370 private void IgnoreArmy(Army oldArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
371 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
372 if (oldArmy != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
373 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
374 oldArmy.UnitAdded -= UnitAddedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
375 oldArmy.UnitRemoved -= UnitRemovedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
376 oldArmy.PointsValueChanged -= PointsValueChangedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
377 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
378 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
379 private void UnitAddedMethod(object unitObj)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
380 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
381 if (unitObj is Unit)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
382 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
383 Unit unit = (Unit)unitObj;
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
384 QStandardItem item = treeNodes[unit.Category.ID];
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
385 CreateTreeSubItem(unit, item);
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
386 layout.armyTree.Expand(item.Index());
30
56771b8efdaf Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 29
diff changeset
387
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
388 //TODO set error panel
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
389 //sbErrorPanel.Text = "";
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
390 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
391 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
392
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
393 private void UnitRemovedMethod(object unitObj)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
394 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
395 if (unitObj is Unit)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
396 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
397 Unit unit = (Unit)unitObj;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
398 //TODO set error panel
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
399 //sbErrorPanel.Text = "";
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
400
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
401 //TODO check if window is open, and close it if it is
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
402 //TODO remove unit from tree
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
403 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
404 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
405
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
406 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
407 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
408 if (obj is Army)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
409 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
410 SetPointsPanelText();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
411 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
412 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
413
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
414 private void CloseAllUnitWindows()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
415 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
416 // FrmUnit[] unitForms = DictionaryUtils.ToArray(unitWindows);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
417 //
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
418 // foreach (FrmUnit window in unitForms)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
419 // {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
420 // window.Close();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
421 // }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
422 //
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
423 // unitWindows.Clear();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
424 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
425
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
426 private void ListenToArmy(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
427 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
428 if (newArmy != null)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
429 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
430 newArmy.UnitAdded += UnitAddedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
431 newArmy.UnitRemoved += UnitRemovedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
432 newArmy.PointsValueChanged += PointsValueChangedMethod;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
433 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
434 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
435
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
436 private void SetNullArmyState()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
437 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
438 layout.actionSaveArmyAs.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
439 layout.actionCloseArmy.Enabled = false;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
440 layout.menuExportArmyAs.Enabled = false;
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
441
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
442 foreach (QAction exportAction in layout.menuExportArmyAs.Actions())
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
443 {
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
444 exportAction.Enabled = false;
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
445 }
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
446
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
447 layout.armyTree.SetModel(new QStandardItemModel());
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
448 DisableCategoryButtons();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
449 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
450
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
451 void DisableCategoryButtons ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
452 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
453 //TODO handle category buttons
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
454 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
455
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
456
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
457 private void SetNonNullArmyState(Army newArmy)
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
458 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
459 SetCategoryButtons(newArmy.Race.Categories);
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
460 EnableCategoryButtons();
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
461 layout.actionSaveArmyAs.Enabled = true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
462 layout.actionCloseArmy.Enabled = true;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
463 layout.menuExportArmyAs.Enabled = true;
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
464
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
465 foreach (QAction exportAction in layout.menuExportArmyAs.Actions())
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
466 {
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
467 exportAction.Enabled = true;
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
468 }
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
469
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
470 FillArmyTree(newArmy);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
471 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
472
30
56771b8efdaf Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 29
diff changeset
473 private void FillArmyTree(Army army)
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
474 {
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
475 QStandardItemModel treeModel = new QStandardItemModel();
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
476 List<string> headers = new List<string>();
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
477 headers.Add(army.Name);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
478 treeModel.SetHorizontalHeaderLabels(headers);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
479
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
480 foreach (var category in army.Categories)
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
481 {
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
482 QStandardItem item = CreateTreeItem(category);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
483 treeModel.AppendRow(item);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
484 CreateUnitNodes(category, item);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
485 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
486
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
487 layout.armyTree.SetModel(treeModel);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
488 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
489
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
490 private QVariant WrapObject(WarFoundryObject obj)
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
491 {
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
492 return QVariant.FromValue<WarFoundryObject>(obj);
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
493 }
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
494
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
495 private QStandardItem CreateTreeItem(WarFoundryObject obj)
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
496 {
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
497 QVariant wrappedObject = WrapObject(obj);
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
498 QStandardItem item = new QStandardItem(obj.Name);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
499 item.SetData(wrappedObject);
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
500 treeNodes[obj.ID] = item;
13
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
501 return item;
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
502 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
503
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
504 private void CreateUnitNodes(ArmyCategory category, QStandardItem categoryItem)
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
505 {
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
506 foreach (Unit unit in category.GetUnits())
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
507 {
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
508 CreateTreeSubItem(unit, categoryItem);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
509 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
510 }
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
511
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
512 private QStandardItem CreateTreeSubItem(WarFoundryObject obj, QStandardItem rootItem)
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
513 {
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
514 QStandardItem item = CreateTreeItem(obj);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
515 rootItem.AppendRow(item);
dbe784f0802c Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents: 12
diff changeset
516 return item;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
517 }
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
518
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
519 private void SetCategoryButtons(Category[] categories)
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
520 {
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
521 foreach (QAction action in categoryActions)
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
522 {
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
523 layout.toolBar.RemoveAction(action);
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
524 }
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
525
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
526 if (categories != null && categories.Length > 0)
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
527 {
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
528 int catCount = categories.Length;
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
529 categoryActions = new QAction[catCount];
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
530 int i = 0;
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
531
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
532 foreach (Category category in categories)
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
533 {
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
534 QAction action = new QAction(this);
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
535 action.icon = new QIcon("icons/ui/add.png");
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
536 NewUnitEventHandler handler = new NewUnitEventHandler(category, AddUnitFromCategory);
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
537 ConnectMenuAction(action, handler.CreateNewUnit);
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
538 categoryActions[i] = action;
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
539 layout.toolBar.AddAction(action);
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
540 i++;
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
541 }
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
542 }
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
543 }
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
544
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
545 private void AddUnitFromCategory(Category cat)
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
546 {
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
547 NewUnitDialog newUnit = new NewUnitDialog(this, CurrentArmy.Race, cat, CurrentArmy);
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
548 int result = newUnit.Exec();
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
549
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
550 if (result == (int)QDialog.DialogCode.Accepted)
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
551 {
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
552 CreateAndAddUnitCommand cmd = new CreateAndAddUnitCommand(newUnit.SelectedUnit, CurrentArmy.GetCategory(cat));
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
553 CommandStack.Execute(cmd);
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
554 OpenUnitDialog(cmd.Unit);
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
555 }
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
556 }
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
557
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
558 private void OpenUnitDialog(Unit unit)
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
559 {
33
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
560 UnitWidget currentWidget = DictionaryUtils.GetValue(openUnitWidgets, unit);
29
246237c88b9b Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 28
diff changeset
561
33
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
562 if (currentWidget != null)
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
563 {
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
564 layout.unitTabs.SetCurrentWidget(currentWidget);
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
565 }
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
566 else
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
567 {
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
568 UnitWidget unitWidget = new UnitWidget(unit);
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
569 openUnitWidgets.Add(unit, unitWidget);
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
570 layout.unitTabs.AddTab(unitWidget, unit.Name);
be876c03054f Re #245: Create unit tab implementation
IBBoard <dev@ibboard.co.uk>
parents: 32
diff changeset
571 }
28
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
572 }
5ee15def17e7 Re #244: Create "New Unit" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 26
diff changeset
573
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
574 void EnableCategoryButtons ()
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
575 {
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
576 //TODO enable category buttons
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
577 }
12
4a724378d66a Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
578
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
579 private void DoCloseArmy()
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
580 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
581 CloseCurrentArmy();
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
582 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
583
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
584 private bool CloseCurrentArmy()
12
4a724378d66a Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
585 {
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
586 bool closed = false;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
587
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
588 if (CurrentArmy != null)
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
589 {
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
590 log.Debug("Closing " + CurrentArmy.Name);
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
591 bool canClose = false;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
592
16
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
593 if (CommandStack.IsDirty())
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
594 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
595 log.Debug("Unsaved changes");
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
596 string saveChanges = Translation.GetTranslation("SaveChangesQuestion", "the army \"{0}\" has been modified\r\nsave changes before closing army?", CurrentArmy.Name);
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
597 string saveChangesTitle = Translation.GetTranslation("SaveChangesTitle", "unsaved changes");
32
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
598 uint buttons = (uint)(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel);
e405b43a405b Re #302: Handle units being added to army
IBBoard <dev@ibboard.co.uk>
parents: 30
diff changeset
599 QMessageBox.StandardButton response = QMessageBox.Question(this, saveChangesTitle, saveChanges, buttons, QMessageBox.StandardButton.Cancel);
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
600
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
601 if (response == QMessageBox.StandardButton.Yes)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
602 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
603 canClose = SaveCurrentArmy();
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
604 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
605 else if (response == QMessageBox.StandardButton.No)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
606 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
607 log.Debug("User didn't save army");
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
608 canClose = true;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
609 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
610 //else they said cancel and we default to "canClose = false" so do nothing
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
611 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
612 else
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
613 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
614 canClose = true;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
615 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
616
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
617 if (canClose)
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
618 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
619 CurrentArmy = null;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
620 closed = true;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
621 }
24
9641addafffe Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 21
diff changeset
622
9641addafffe Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 21
diff changeset
623 log.Debug("Army "+(closed ? "" : "not")+" closed");
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
624 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
625 else
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
626 {
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
627 //pretend we succeeded
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
628 closed = true;
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
629 }
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
630
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
631 return closed;
12
4a724378d66a Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
632 }
20
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
633
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
634 public Preferences Preferences
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
635 {
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
636 get { return preferences; }
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
637 set { preferences = value; }
f1be1b509134 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 18
diff changeset
638 }
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
639
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
640 private void DoExportBasicHTML()
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
641 {
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
642 log.Debug("Exporting to HTML");
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
643 QFileDialog fileDialog = new QFileDialog(this);
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
644 fileDialog.acceptMode = QFileDialog.AcceptMode.AcceptSave;
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
645 fileDialog.fileMode = QFileDialog.FileMode.AnyFile;
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
646 fileDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal)));
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
647 log.Debug("Requesting export path");
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
648 int result = fileDialog.Exec();
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
649
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
650 if (result == (int)QDialog.DialogCode.Accepted)
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
651 {
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
652 string path = fileDialog.SelectedFiles()[0];
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
653 log.DebugFormat("Exporting to {0}", path);
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
654 WarFoundryHtmlExporter.GetDefault().ExportArmy(CurrentArmy, path);
24
9641addafffe Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 21
diff changeset
655 log.Debug("Exported");
21
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
656 }
d6e95d51b9a4 Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 20
diff changeset
657 }
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
658 }
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
659 }