Mercurial > repos > IBBoard.WarFoundry.GUI.QtSharp
annotate MainWindow.cs @ 18:ab016fcda350
Re #242: Create Qt# UI for WarFoundry
* Stop translation scanning on images
* Make open and save dialog start in sensible locations
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 20 Feb 2010 15:56:35 +0000 |
parents | 8f9f757f2099 |
children | f1be1b509134 |
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; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
13 using IBBoard.WarFoundry.API.Factories; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
14 using IBBoard.WarFoundry.API.Objects; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
15 using IBBoard.WarFoundry.API.Savers; |
0 | 16 |
3 | 17 namespace IBBoard.WarFoundry.GUI.QtSharp |
0 | 18 { |
3 | 19 public class MainWindow : QMainWindow |
0 | 20 { |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
21 private static readonly string AppTitle = "WarFoundry"; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
22 |
3 | 23 private Ui_MainWindowLayout layout; |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
24 private readonly ILog log = LogManager.GetLogger(typeof(MainWindow)); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
25 private string loadedFilePath; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
26 private CommandStack commandStack; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
27 private QFileDialog saveArmyDialog; |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
28 private QFileDialog openArmyDialog; |
3 | 29 |
30 public MainWindow () | |
31 { | |
32 layout = new Ui_MainWindowLayout(); | |
33 layout.SetupUi(this); | |
34 WindowIcon = new QIcon("icons/App.png"); | |
12
4a724378d66a
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
11
diff
changeset
|
35 SetAppTitle(); |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
36 saveArmyDialog = new QFileDialog(this); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
37 saveArmyDialog.acceptMode = QFileDialog.AcceptMode.AcceptSave; |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
38 saveArmyDialog.fileMode = QFileDialog.FileMode.AnyFile; |
18
ab016fcda350
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
17
diff
changeset
|
39 saveArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal))); |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
40 openArmyDialog = new QFileDialog(this); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
41 openArmyDialog.acceptMode = QFileDialog.AcceptMode.AcceptOpen; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
42 openArmyDialog.fileMode = QFileDialog.FileMode.ExistingFile; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
43 openArmyDialog.SetNameFilter("*.army"); |
18
ab016fcda350
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
17
diff
changeset
|
44 openArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal))); |
3 | 45 SetUpActionIcons(); |
46 ConnectMenuActions(); | |
47 SetUpToolbar(); | |
48 layout.unitTabs.Clear(); | |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
49 WarFoundryCore.ArmyChanged+= HandleWarFoundryCoreArmyChanged; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
50 CommandStack.CommandStackUpdated+= HandleCommandStackCommandStackUpdated; |
3 | 51 } |
52 | |
53 private void SetUpActionIcons() | |
54 { | |
55 layout.actionCreateArmy.icon = new QIcon("icons/ui/filenew.png"); | |
56 layout.actionOpenArmy.icon = new QIcon("icons/ui/fileopen.png"); | |
57 layout.actionSaveArmy.icon = new QIcon("icons/ui/filesave.png"); | |
58 layout.actionSaveArmyAs.icon = new QIcon("icons/ui/filesaveas.png"); | |
59 layout.menuExportArmyAs.icon = new QIcon("icons/ui/export.png"); | |
60 layout.actionCloseArmy.icon = new QIcon("icons/ui/window-close.png"); | |
61 layout.actionExit.icon = new QIcon("icons/ui/exit.png"); | |
62 layout.actionUndo.icon = new QIcon("icons/ui/edit-undo.png"); | |
63 layout.actionRedo.icon = new QIcon("icons/ui/edit-redo.png"); | |
64 layout.actionAbout.icon = new QIcon("icons/ui/help-about.png"); | |
65 } | |
66 | |
16
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
67 private void ConnectMenuActions() |
3 | 68 { |
16
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
69 ConnectMenuAction(layout.actionCreateArmy, CreateNewArmy); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
70 ConnectMenuAction(layout.actionUndo, UndoAction); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
71 ConnectMenuAction(layout.actionRedo,RedoAction); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
72 ConnectMenuAction(layout.actionSaveArmyAs, DoSaveCurrentArmyAs); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
73 ConnectMenuAction(layout.actionSaveArmy, DoSaveCurrentArmy); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
74 ConnectMenuAction(layout.actionCloseArmy, DoCloseArmy); |
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
75 ConnectMenuAction(layout.actionOpenArmy, DoOpenArmy); |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
76 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
77 |
16
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
78 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
|
79 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
80 QObject.Connect(menuAction, SIGNAL("triggered()"), method); |
3 | 81 } |
82 | |
83 private void CreateNewArmy() | |
84 { | |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
85 if (CloseCurrentArmy()) |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
86 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
87 NewArmyDialog dialog = new NewArmyDialog(this); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
88 int result = dialog.Exec (); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
89 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
90 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
|
91 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
92 try |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
93 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
94 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
|
95 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
96 catch (RequiredDataMissingException ex) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
97 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
98 log.Error("Required data missing from race file", ex); |
17 | 99 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
|
100 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
101 catch (InvalidFileException ex) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
102 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
103 log.Error("Race file was invalid", ex); |
17 | 104 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
|
105 } |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
106 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
107 } |
3 | 108 } |
109 | |
110 private void SetUpToolbar() | |
111 { | |
13
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
112 layout.toolBar.AddAction(layout.actionCreateArmy); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
113 layout.toolBar.AddAction(layout.actionOpenArmy); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
114 layout.toolBar.AddAction(layout.actionSaveArmy); |
3 | 115 layout.toolBar.AddSeparator(); |
116 layout.toolBar.AddAction(layout.actionUndo); | |
117 layout.toolBar.AddAction(layout.actionRedo); | |
118 layout.toolBar.AddSeparator(); | |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
119 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
120 |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
121 private void HandleWarFoundryCoreArmyChanged(Army oldValue, Army newValue) |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
122 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
123 CommandStack.Reset(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
124 loadedFilePath = null; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
125 layout.actionSaveArmy.Enabled = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
126 SetPointsPanelText(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
127 SetAppTitle(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
128 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
129 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
130 private void SetPointsPanelText () |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
131 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
132 //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
|
133 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
134 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
135 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
136 private void SetAppTitle() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
137 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
138 string str = AppTitle; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
139 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
140 if (CurrentGameSystem!=null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
141 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
142 str+= " - " + CurrentGameSystem.Name; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
143 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
144 if (CurrentArmy!=null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
145 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
146 str+= " - " + CurrentArmy.Name; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
147 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
148 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
149 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
150 this.WindowTitle = str; |
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 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
153 public CommandStack CommandStack |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
154 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
155 get |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
156 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
157 if (commandStack == null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
158 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
159 commandStack = new CommandStack(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
160 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
161 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
162 return commandStack; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
163 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
164 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
165 |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
166 private void HandleCommandStackCommandStackUpdated() |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
167 { |
13
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
168 layout.actionUndo.Enabled = CommandStack.CanUndo(); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
169 layout.actionRedo.Enabled = CommandStack.CanRedo(); |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
170 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
|
171 } |
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 private void UndoAction() |
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 if (commandStack.CanUndo()) |
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 commandStack.Undo(); |
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 } |
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 private void RedoAction() |
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 if (commandStack.CanRedo()) |
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 commandStack.Redo(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
186 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
187 } |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
188 |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
189 private void DoOpenArmy() |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
190 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
191 OpenArmy(); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
192 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
193 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
194 private bool OpenArmy() |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
195 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
196 log.Debug("Opening army"); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
197 string newFilePath = PromptForFilePath (openArmyDialog); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
198 bool openedFile = false; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
199 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
200 if (newFilePath != null && CloseCurrentArmy()) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
201 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
202 try |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
203 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
204 log.DebugFormat("Opening {0}", newFilePath); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
205 CurrentArmy = WarFoundryLoader.GetDefault().LoadArmy(new FileInfo(newFilePath)); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
206 loadedFilePath = newFilePath; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
207 openedFile = true; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
208 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
209 catch (RequiredDataMissingException ex) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
210 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
211 log.Error(ex); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
212 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
|
213 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
214 catch (InvalidFileException ex) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
215 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
216 log.Error(ex); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
217 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
|
218 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
219 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
220 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
221 return openedFile; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
222 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
223 |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
224 private void DoSaveCurrentArmy() |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
225 { |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
226 SaveCurrentArmy(); |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
227 } |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
228 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
229 private bool SaveCurrentArmy() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
230 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
231 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
|
232 bool saved = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
233 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
234 string filePath = loadedFilePath; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
235 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
236 if (filePath == null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
237 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
238 filePath = PromptForArmyFilePath(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
239 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
240 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
241 if (filePath != null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
242 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
243 saved = SaveCurrentArmyToFile(filePath); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
244 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
245 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
246 return saved; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
247 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
248 |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
249 private void DoSaveCurrentArmyAs() |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
250 { |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
251 SaveCurrentArmyAs(); |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
252 } |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
253 |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
254 private bool SaveCurrentArmyAs() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
255 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
256 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
|
257 bool saved = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
258 string filePath = PromptForArmyFilePath(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
259 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
260 if (filePath != null) |
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 saved = SaveCurrentArmyToFile(filePath); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
263 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
264 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
265 return saved; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
266 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
267 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
268 private bool SaveCurrentArmyToFile(string filePath) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
269 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
270 log.DebugFormat("Save to {0}", filePath); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
271 |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
272 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
|
273 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
274 log.Debug("Army saved"); |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
275 loadedFilePath = filePath; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
276 layout.actionSaveArmy.Enabled = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
277 CommandStack.setCleanMark(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
278 return true; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
279 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
280 else |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
281 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
282 log.Debug("Save failed"); |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
283 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
|
284 return false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
285 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
286 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
287 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
288 private string PromptForArmyFilePath() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
289 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
290 return PromptForFilePath (saveArmyDialog); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
291 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
292 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
293 private string PromptForFilePath(QFileDialog qFileDialog) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
294 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
295 int result = qFileDialog.Exec(); |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
296 string path = null; |
10
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 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
|
299 { |
15
03ed32fdc706
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
14
diff
changeset
|
300 path = qFileDialog.SelectedFiles()[0]; |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
301 } |
11
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
302 |
72bcf6457227
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
10
diff
changeset
|
303 return path; |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
304 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
305 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
306 public GameSystem CurrentGameSystem |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
307 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
308 get { return WarFoundryCore.CurrentGameSystem; } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
309 set { WarFoundryCore.CurrentGameSystem = value; } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
310 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
311 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
312 public Army CurrentArmy |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
313 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
314 get { return WarFoundryCore.CurrentArmy; } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
315 set { SetArmy(value); } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
316 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
317 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
318 private void SetArmy(Army newArmy) |
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 IgnoreArmy(CurrentArmy); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
321 CloseAllUnitWindows(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
322 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
323 if (newArmy == null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
324 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
325 SetNullArmyState(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
326 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
327 else |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
328 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
329 WarFoundryCore.CurrentGameSystem = newArmy.GameSystem; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
330 ListenToArmy(newArmy); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
331 SetNonNullArmyState(newArmy); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
332 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
333 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
334 WarFoundryCore.CurrentArmy = newArmy; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
335 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
336 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
337 private void IgnoreArmy(Army oldArmy) |
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 if (oldArmy != null) |
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 oldArmy.UnitAdded -= UnitAddedMethod; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
342 oldArmy.UnitRemoved -= UnitRemovedMethod; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
343 oldArmy.PointsValueChanged -= PointsValueChangedMethod; |
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 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
346 private void UnitAddedMethod(object unitObj) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
347 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
348 if (unitObj is Unit) |
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 Unit unit = (Unit)unitObj; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
351 //TODO set error panel |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
352 //sbErrorPanel.Text = ""; |
13
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
353 //TODO add unit to tree |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
354 } |
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 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
357 private void UnitRemovedMethod(object unitObj) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
358 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
359 if (unitObj is Unit) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
360 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
361 Unit unit = (Unit)unitObj; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
362 //TODO set error panel |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
363 //sbErrorPanel.Text = ""; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
364 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
365 //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
|
366 //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
|
367 } |
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 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
|
371 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
372 if (obj is Army) |
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 SetPointsPanelText(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
375 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
376 } |
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 private void CloseAllUnitWindows() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
379 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
380 // FrmUnit[] unitForms = DictionaryUtils.ToArray(unitWindows); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
381 // |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
382 // foreach (FrmUnit window in unitForms) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
383 // { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
384 // window.Close(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
385 // } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
386 // |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
387 // unitWindows.Clear(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
388 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
389 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
390 private void ListenToArmy(Army newArmy) |
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 if (newArmy != null) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
393 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
394 newArmy.UnitAdded += UnitAddedMethod; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
395 newArmy.UnitRemoved += UnitRemovedMethod; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
396 newArmy.PointsValueChanged += PointsValueChangedMethod; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
397 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
398 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
399 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
400 private void SetNullArmyState() |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
401 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
402 layout.actionSaveArmyAs.Enabled = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
403 layout.actionCloseArmy.Enabled = false; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
404 layout.menuExportArmyAs.Enabled = false; |
13
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
405 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
|
406 DisableCategoryButtons(); |
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 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
409 void DisableCategoryButtons () |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
410 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
411 //TODO handle category buttons |
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 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
415 private void SetNonNullArmyState(Army newArmy) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
416 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
417 SetCategoryButtons(newArmy.Race.Categories); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
418 EnableCategoryButtons(); |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
419 layout.actionSaveArmyAs.Enabled = true; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
420 layout.actionCloseArmy.Enabled = true; |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
421 layout.menuExportArmyAs.Enabled = true; |
13
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
422 FillArmyTree(newArmy); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
423 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
424 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
425 private void FillArmyTree (Army army) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
426 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
427 QStandardItemModel treeModel = new QStandardItemModel(); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
428 List<string> headers = new List<string>(); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
429 headers.Add(army.Name); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
430 treeModel.SetHorizontalHeaderLabels(headers); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
431 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
432 foreach (var category in army.Categories) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
433 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
434 QStandardItem item = CreateTreeItem(category); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
435 treeModel.AppendRow(item); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
436 CreateUnitNodes(category, item); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
437 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
438 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
439 layout.armyTree.SetModel(treeModel); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
440 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
441 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
442 private QStandardItem CreateTreeItem(WarFoundryObject obj) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
443 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
444 QVariant wrappedObject = QVariant.FromValue<WarFoundryObject>(obj); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
445 QStandardItem item = new QStandardItem(obj.Name); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
446 item.SetData(wrappedObject); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
447 return item; |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
448 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
449 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
450 private void CreateUnitNodes(ArmyCategory category, QStandardItem categoryItem) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
451 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
452 foreach (Unit unit in category.GetUnits()) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
453 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
454 CreateTreeSubItem(unit, categoryItem); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
455 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
456 } |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
457 |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
458 private QStandardItem CreateTreeSubItem(WarFoundryObject obj, QStandardItem rootItem) |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
459 { |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
460 QStandardItem item = CreateTreeItem(obj); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
461 rootItem.AppendRow(item); |
dbe784f0802c
Re #246: Create army tree implementation
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
462 return item; |
10
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
463 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
464 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
465 void SetCategoryButtons (Category[] categories) |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
466 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
467 //TODO create category buttons |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
468 } |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
469 |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
470 void EnableCategoryButtons () |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
471 { |
3d0c9cf1b924
Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
6
diff
changeset
|
472 //TODO enable category buttons |
3 | 473 } |
12
4a724378d66a
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
11
diff
changeset
|
474 |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
475 private void DoCloseArmy() |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
476 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
477 CloseCurrentArmy(); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
478 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
479 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
480 private bool CloseCurrentArmy() |
12
4a724378d66a
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
11
diff
changeset
|
481 { |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
482 bool closed = false; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
483 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
484 if (CurrentArmy!=null) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
485 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
486 log.Debug("Closing "+CurrentArmy.Name); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
487 bool canClose = false; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
488 |
16
d211d01efa44
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
489 if (CommandStack.IsDirty()) |
14
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
490 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
491 log.Debug("Unsaved changes"); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
492 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
|
493 string saveChangesTitle = Translation.GetTranslation("SaveChangesTitle", "unsaved changes"); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
494 QMessageBox.StandardButton response = QMessageBox.Question(this, saveChangesTitle, saveChanges, (uint) (QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel), QMessageBox.StandardButton.Cancel); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
495 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
496 if (response == QMessageBox.StandardButton.Yes) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
497 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
498 canClose = SaveCurrentArmy(); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
499 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
500 else if (response == QMessageBox.StandardButton.No) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
501 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
502 log.Debug("User didn't save army"); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
503 canClose = true; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
504 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
505 //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
|
506 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
507 else |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
508 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
509 canClose = true; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
510 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
511 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
512 if (canClose) |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
513 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
514 CurrentArmy = null; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
515 closed = true; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
516 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
517 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
518 else |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
519 { |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
520 //pretend we succeeded |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
521 closed = true; |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
522 } |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
523 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
524 log.Debug("Army "+(closed ? "" : "not")+" closed"); |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
525 |
61bc9b44a695
Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
526 return closed; |
12
4a724378d66a
Re #247: Implement menu options in Qt# app
IBBoard <dev@ibboard.co.uk>
parents:
11
diff
changeset
|
527 } |
0 | 528 } |
3 | 529 } |