Mercurial > repos > IBBoard.WarFoundry.GUI.QtSharp
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 |
rev | line source |
---|---|
0 | 1 // This file (MainWindow.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard |
2 // | |
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. | |
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 | 6 using System.Collections.Generic; |
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 | 20 |
3 | 21 namespace IBBoard.WarFoundry.GUI.QtSharp |
0 | 22 { |
3 | 23 public class MainWindow : QMainWindow |
0 | 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 | 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 | 38 |
39 public MainWindow () | |
40 { | |
41 layout = new Ui_MainWindowLayout(); | |
42 layout.SetupUi(this); | |
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 | 68 SetUpActionIcons(); |
69 ConnectMenuActions(); | |
70 SetUpToolbar(); | |
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 | 75 } |
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 | 84 private void SetUpActionIcons() |
85 { | |
86 layout.actionCreateArmy.icon = new QIcon("icons/ui/filenew.png"); | |
87 layout.actionOpenArmy.icon = new QIcon("icons/ui/fileopen.png"); | |
88 layout.actionSaveArmy.icon = new QIcon("icons/ui/filesave.png"); | |
89 layout.actionSaveArmyAs.icon = new QIcon("icons/ui/filesaveas.png"); | |
90 layout.menuExportArmyAs.icon = new QIcon("icons/ui/export.png"); | |
91 layout.actionCloseArmy.icon = new QIcon("icons/ui/window-close.png"); | |
92 layout.actionExit.icon = new QIcon("icons/ui/exit.png"); | |
93 layout.actionUndo.icon = new QIcon("icons/ui/edit-undo.png"); | |
94 layout.actionRedo.icon = new QIcon("icons/ui/edit-redo.png"); | |
95 layout.actionAbout.icon = new QIcon("icons/ui/help-about.png"); | |
96 } | |
97 | |
16
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
98 private void ConnectMenuActions() |
3 | 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 | 113 } |
114 | |
115 private void CreateNewArmy() | |
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 | 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 | 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 | 140 } |
141 | |
142 private void SetUpToolbar() | |
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 | 147 layout.toolBar.AddSeparator(); |
148 layout.toolBar.AddAction(layout.actionUndo); | |
149 layout.toolBar.AddAction(layout.actionRedo); | |
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 | 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 | 658 } |
3 | 659 } |