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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file (MainWindow.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
5 using System.IO;
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using System.Collections.Generic;
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using Qyoto;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
8 using log4net;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
9 using IBBoard.Commands;
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
10 using IBBoard.IO;
14
61bc9b44a695 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
11 using IBBoard.Lang;
10
3d0c9cf1b924 Fixes #243: Create "New Army" dialog in Qt# app
IBBoard <dev@ibboard.co.uk>
parents: 6
diff changeset
12 using IBBoard.WarFoundry.API;
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
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
17 namespace IBBoard.WarFoundry.GUI.QtSharp
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 {
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
19 public class MainWindow : QMainWindow
0
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
29
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
30 public MainWindow ()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
31 {
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
32 layout = new Ui_MainWindowLayout();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
33 layout.SetupUi(this);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
45 SetUpActionIcons();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
46 ConnectMenuActions();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
47 SetUpToolbar();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
51 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
52
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
53 private void SetUpActionIcons()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
54 {
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
55 layout.actionCreateArmy.icon = new QIcon("icons/ui/filenew.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
56 layout.actionOpenArmy.icon = new QIcon("icons/ui/fileopen.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
57 layout.actionSaveArmy.icon = new QIcon("icons/ui/filesave.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
58 layout.actionSaveArmyAs.icon = new QIcon("icons/ui/filesaveas.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
59 layout.menuExportArmyAs.icon = new QIcon("icons/ui/export.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
60 layout.actionCloseArmy.icon = new QIcon("icons/ui/window-close.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
61 layout.actionExit.icon = new QIcon("icons/ui/exit.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
62 layout.actionUndo.icon = new QIcon("icons/ui/edit-undo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
63 layout.actionRedo.icon = new QIcon("icons/ui/edit-redo.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
64 layout.actionAbout.icon = new QIcon("icons/ui/help-about.png");
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
65 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
66
16
d211d01efa44 Re #242: Create Qt# UI for WarFoundry
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
67 private void ConnectMenuActions()
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
81 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
82
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
83 private void CreateNewArmy()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
8f9f757f2099 Re #242: Create Qyoto GUI
IBBoard <dev@ibboard.co.uk>
parents: 16
diff changeset
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
8f9f757f2099 Re #242: Create Qyoto GUI
IBBoard <dev@ibboard.co.uk>
parents: 16
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
108 }
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
109
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
110 private void SetUpToolbar()
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
115 layout.toolBar.AddSeparator();
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
116 layout.toolBar.AddAction(layout.actionUndo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
117 layout.toolBar.AddAction(layout.actionRedo);
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
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
620c62ba4d07 Re #242: Qt# GUI
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
528 }
3
ac1bf60edf63 Re #242: Qt# UI
IBBoard <dev@ibboard.co.uk>
parents: 2
diff changeset
529 }