Mercurial > repos > WarFoundryForge
comparison FrmMain.cs @ 0:91b5550eff31
Initial Commit.
author | Tsudico |
---|---|
date | Tue, 07 Dec 2010 20:06:17 -0600 |
parents | |
children | 866d0093bb11 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:91b5550eff31 |
---|---|
1 // This file (FrmMain.cs) is a part of the IBBoard.WarFoundry.Forge.WinForms project and is copyright 2007, 2008, 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 | |
5 using System; | |
6 using System.Collections.Generic; | |
7 using System.Drawing; | |
8 using System.Drawing.Drawing2D; | |
9 using System.ComponentModel; | |
10 using System.Windows.Forms; | |
11 using System.Data; | |
12 using System.IO; | |
13 using System.Threading; | |
14 using log4net; | |
15 using log4net.Config; | |
16 using IBBoard; | |
17 using IBBoard.CustomMath; | |
18 using IBBoard.Commands; | |
19 using IBBoard.IO; | |
20 using IBBoard.Lang; | |
21 using IBBoard.Windows.Forms; | |
22 using IBBoard.Windows.Forms.I18N; | |
23 using IBBoard.Xml; | |
24 using IBBoard.WarFoundry.API; | |
25 using IBBoard.WarFoundry.API.Commands; | |
26 using IBBoard.WarFoundry.API.Exporters; | |
27 using IBBoard.WarFoundry.API.Objects; | |
28 using IBBoard.WarFoundry.API.Savers; | |
29 using IBBoard.WarFoundry.API.Factories; | |
30 using IBBoard.WarFoundry.API.Factories.Xml; | |
31 | |
32 namespace IBBoard.WarFoundry.Forge.WinForms | |
33 { | |
34 /// <summary> | |
35 /// Summary description for Form1. | |
36 /// </summary> | |
37 public class FrmMain : System.Windows.Forms.Form | |
38 { | |
39 private static readonly string AppTitle = "WarFoundry Forge"; | |
40 internal static readonly string VERSION = "0.0.2"; | |
41 const string DefaultDataDir = "data"; | |
42 | |
43 private Preferences preferences; | |
44 private readonly ILog log = LogManager.GetLogger(typeof(FrmMain)); | |
45 | |
46 private CommandStack commandStack; | |
47 | |
48 private string loadedFilePath; | |
49 | |
50 // Form contents | |
51 private System.ComponentModel.IContainer components; | |
52 private System.Windows.Forms.MainMenu mainMenu; | |
53 private MenuStrip menuStrip; | |
54 // File Menu and Contents | |
55 private IBBToolStripMenuItem menuFile; | |
56 private IBBToolStripMenuItem menuNew; | |
57 private IBBToolStripMenuItem miNewSystem; | |
58 private ToolStripSeparator toolStripSeparator2; | |
59 private IBBToolStripMenuItem miExit; | |
60 // About Menu and Contents | |
61 private IBBToolStripMenuItem menuHelp; | |
62 private IBBToolStripMenuItem miAbout; | |
63 | |
64 /// <summary> | |
65 /// The main entry point for the application. | |
66 /// </summary> | |
67 [STAThread] | |
68 static void Main(string[] args) | |
69 { | |
70 try | |
71 { | |
72 XmlConfigurator.Configure(new System.IO.FileInfo("WarFoundryForge.log4net")); | |
73 LogManager.GetLogger(typeof(FrmMain)).Info("Starting WarFoundry Forge WinForms"); | |
74 Application.EnableVisualStyles(); | |
75 Application.Run(new FrmMain(args)); | |
76 LogManager.GetLogger(typeof(FrmMain)).Info("Closing WarFoundry Forge WinForms"); | |
77 } | |
78 catch (Exception ex) | |
79 { | |
80 LogManager.GetLogger(typeof(FrmMain)).Fatal(ex); | |
81 MessageBox.Show(null, "A major, unexpected and fatal error ocurred while starting the application: \r\n\r\n" + ex.Message + "\r\n\r\n" + ex.StackTrace, "Fatal error", MessageBoxButtons.OK, MessageBoxIcon.Error); | |
82 } | |
83 } | |
84 | |
85 public FrmMain(string[] args) | |
86 { | |
87 this.Closing += new CancelEventHandler(FrmMain_Closing); | |
88 | |
89 InitializeComponent(); | |
90 | |
91 Preferences = new Preferences("WarFoundryForge"); | |
92 try | |
93 { | |
94 Translation.InitialiseTranslations(Constants.ExecutablePath, Preferences["language"].ToString()); | |
95 } | |
96 catch (TranslationLoadException ex) | |
97 { | |
98 log.Error("Translation loading failed for language " + Preferences["language"].ToString(), ex); | |
99 MessageBox.Show(this, "Translation loading failed for language " + Preferences["language"].ToString(), "Translation failure", MessageBoxButtons.OK, MessageBoxIcon.Error); | |
100 } | |
101 | |
102 Translation.TranslationChanged += new MethodInvoker(TranslationChanged); | |
103 | |
104 TranslateControls(); | |
105 | |
106 // hack to load default files | |
107 WarFoundryLoader.GetDefault().AddLoadDirectory(new DirectoryInfo(Constants.ExecutablePath + Constants.DirectoryString + DefaultDataDir)); | |
108 WarFoundryLoader.GetDefault().RegisterFactory(WarFoundryXmlFactory.GetFactory()); | |
109 WarFoundryLoader.GetDefault().FileLoadingFinished += FileLoadingFinished; | |
110 WarFoundrySaver.SetFileSaver(new WarFoundryXmlSaver()); | |
111 } | |
112 | |
113 private void TranslateControls() | |
114 { | |
115 ControlTranslator.TranslateControls(Controls); | |
116 ControlTranslator.TranslateComponents(components.Components); | |
117 } | |
118 | |
119 void TranslationChanged() | |
120 { | |
121 TranslateControls(); | |
122 } | |
123 | |
124 public static string DataPath | |
125 { | |
126 get { return Constants.ExecutablePath + Constants.DirectoryChar + "data"; } | |
127 } | |
128 | |
129 public Preferences Preferences | |
130 { | |
131 get { return preferences; } | |
132 set { preferences = value; } | |
133 } | |
134 | |
135 public CommandStack CommandStack | |
136 { | |
137 get | |
138 { | |
139 if (commandStack == null) | |
140 { | |
141 commandStack = new CommandStack(); | |
142 } | |
143 | |
144 return commandStack; | |
145 } | |
146 } | |
147 | |
148 /// <summary> | |
149 /// Clean up any resources being used. | |
150 /// </summary> | |
151 protected override void Dispose(bool disposing) | |
152 { | |
153 if (disposing) | |
154 { | |
155 if (components != null) | |
156 { | |
157 components.Dispose(); | |
158 } | |
159 } | |
160 base.Dispose(disposing); | |
161 } | |
162 | |
163 #region Windows Form Designer generated code | |
164 /// <summary> | |
165 /// Required method for Designer support - do not modify | |
166 /// the contents of this method with the code editor. | |
167 /// </summary> | |
168 private void InitializeComponent() | |
169 { | |
170 this.components = new System.ComponentModel.Container(); | |
171 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain)); | |
172 this.mainMenu = new System.Windows.Forms.MainMenu(this.components); | |
173 this.menuStrip = new System.Windows.Forms.MenuStrip(); | |
174 // File Menu and Contents | |
175 this.menuFile = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
176 this.menuNew = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
177 this.miNewSystem = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
178 this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); | |
179 this.miExit = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
180 // About Menu and Contents | |
181 this.menuHelp = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
182 this.miAbout = new IBBoard.Windows.Forms.IBBToolStripMenuItem(); | |
183 | |
184 // | |
185 // menuStrip | |
186 // | |
187 this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |
188 this.menuFile, | |
189 this.menuHelp}); | |
190 this.menuStrip.Location = new System.Drawing.Point(0, 0); | |
191 this.menuStrip.Name = "menuStrip"; | |
192 this.menuStrip.Size = new System.Drawing.Size(790, 24); | |
193 this.menuStrip.TabIndex = 6; | |
194 this.menuStrip.Text = "menuStrip1"; | |
195 // | |
196 // menuFile | |
197 // | |
198 this.menuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |
199 this.menuNew, | |
200 this.toolStripSeparator2, | |
201 this.miExit}); | |
202 this.menuFile.Name = "menuFile"; | |
203 this.menuFile.Size = new System.Drawing.Size(33, 20); | |
204 this.menuFile.Text = "&file"; | |
205 // | |
206 // menuNew | |
207 // | |
208 this.menuNew.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |
209 this.miNewSystem}); | |
210 this.menuNew.Name = "menuNew"; | |
211 this.menuNew.Size = new System.Drawing.Size(164, 22); | |
212 this.menuNew.Text = "&new"; | |
213 // | |
214 // miNewSystem | |
215 // | |
216 this.miNewSystem.Name = "miNewSystem"; | |
217 this.miNewSystem.Size = new System.Drawing.Size(164, 22); | |
218 this.miNewSystem.Text = "s&ystem"; | |
219 this.miNewSystem.Click += new System.EventHandler(this.miNewSystem_Click); | |
220 // | |
221 // toolStripSeparator2 | |
222 // | |
223 this.toolStripSeparator2.Name = "toolStripSeparator2"; | |
224 this.toolStripSeparator2.Size = new System.Drawing.Size(161, 6); | |
225 // | |
226 // miExit | |
227 // | |
228 this.miExit.Name = "miExit"; | |
229 this.miExit.Size = new System.Drawing.Size(164, 22); | |
230 this.miExit.Text = "e&xit"; | |
231 this.miExit.Click += new System.EventHandler(this.miExit_Click); | |
232 // | |
233 // menuHelp | |
234 // | |
235 this.menuHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |
236 this.miAbout}); | |
237 this.menuHelp.Name = "menuHelp"; | |
238 this.menuHelp.Size = new System.Drawing.Size(39, 20); | |
239 this.menuHelp.Text = "&help"; | |
240 // | |
241 // miAbout | |
242 // | |
243 this.miAbout.Name = "miAbout"; | |
244 this.miAbout.Size = new System.Drawing.Size(109, 22); | |
245 this.miAbout.Text = "&about"; | |
246 this.miAbout.Click += new System.EventHandler(this.miAbout_Click); | |
247 // | |
248 // FrmMain | |
249 // | |
250 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); | |
251 this.ClientSize = new System.Drawing.Size(790, 608); | |
252 this.Controls.Add(this.menuStrip); | |
253 this.IsMdiContainer = true; | |
254 this.MainMenuStrip = this.menuStrip; | |
255 this.Menu = this.mainMenu; | |
256 this.Name = "FrmMain"; | |
257 this.Text = AppTitle; | |
258 this.menuStrip.ResumeLayout(false); | |
259 this.menuStrip.PerformLayout(); | |
260 this.ResumeLayout(false); | |
261 this.PerformLayout(); | |
262 } | |
263 #endregion | |
264 | |
265 private void FileLoadingFinished(List<FileLoadFailure> failures) | |
266 { | |
267 foreach (FileLoadFailure failure in failures) | |
268 { | |
269 log.Warn("Failed to load " + failure.FailedFile.FullName + ": " + failure.Message); | |
270 } | |
271 } | |
272 | |
273 private void miNewSystem_Click(object sender, System.EventArgs e) | |
274 { | |
275 FrmSystem system = new FrmSystem(); | |
276 system.ShowDialog(this); | |
277 } | |
278 | |
279 private void miExit_Click(object sender, System.EventArgs e) | |
280 { | |
281 Application.Exit(); | |
282 } | |
283 | |
284 private void miAbout_Click(object sender, EventArgs e) | |
285 { | |
286 FrmAbout about = new FrmAbout(); | |
287 about.ShowDialog(this); | |
288 } | |
289 | |
290 private void FrmMain_Closing(object sender, CancelEventArgs e) | |
291 { | |
292 } | |
293 } | |
294 } |