# HG changeset patch # User IBBoard # Date 1250970483 0 # Node ID 01ddadfa9653b63d58a44948299d0288bee2ee66 # Parent 105c68bb759c480484c844f6f9f8d1ab25cc6dcb Re #86: Complete initial GTK# UI * Enable "open" buttons * Fill out "open" method * Fix showing of "save failed" dialog diff -r 105c68bb759c -r 01ddadfa9653 FrmMainWindow.cs --- a/FrmMainWindow.cs Sat Aug 22 19:10:45 2009 +0000 +++ b/FrmMainWindow.cs Sat Aug 22 19:48:03 2009 +0000 @@ -689,9 +689,52 @@ private bool OpenArmy() { - //TODO: Open dialog for file selection then open army + FileChooserDialog fileDialog = new FileChooserDialog("Open army", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); + FileFilter filter = new FileFilter(); + filter.AddPattern("*.army"); + filter.Name = "WarFoundry Army files (*.army)"; + fileDialog.AddFilter(filter); + int response = fileDialog.Run(); + string filePath = null; + + if (response == (int)ResponseType.Accept) + { + filePath = fileDialog.Filename; + } + + fileDialog.Hide(); + fileDialog.Dispose(); + bool success = false; - loadedArmyPath = null;//TODO: Set loaded file path + + if (filePath != null) + { + FileInfo file = new FileInfo(filePath); + Army army = WarFoundryLoader.GetDefault().LoadArmy(file); + + if (army != null) + { + logger.Debug("Loaded army " + army.ID); + success = true; + loadedArmyPath = filePath; + WarFoundryCore.CurrentArmy = army; + logger.Debug("Army loading complete"); + } + else + { + logger.ErrorFormat("Failed to load {0} as an army file", filePath); + MessageDialog dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, file.Name + " could not be loaded.\n\nIf the file is an army file then please check your file loaders."); + dialog.Title = "Failed to open army"; + dialog.Run(); + dialog.Hide(); + dialog.Dispose(); + } + } + else + { + logger.Debug("Army open requested but cancelled"); + } + return success; } @@ -709,7 +752,6 @@ private bool SaveCurrentArmyAs() { - FileChooserDialog fileDialog = new FileChooserDialog("Save file as", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept); FileFilter filter = new FileFilter(); filter.AddPattern("*.army"); @@ -746,7 +788,9 @@ else { MessageDialog dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Failed to save file to "+filePath); - dialog.Show(); + dialog.Title = "Army save failed"; + dialog.Run(); + dialog.Hide(); dialog.Dispose(); } } diff -r 105c68bb759c -r 01ddadfa9653 gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs --- a/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Sat Aug 22 19:10:45 2009 +0000 +++ b/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Sat Aug 22 19:48:03 2009 +0000 @@ -86,7 +86,6 @@ this.miCreateArmy.ShortLabel = Mono.Unix.Catalog.GetString("Create army"); w1.Add(this.miCreateArmy, null); this.miOpenArmy = new Gtk.Action("miOpenArmy", Mono.Unix.Catalog.GetString("Open army"), null, "gtk-open"); - this.miOpenArmy.Sensitive = false; this.miOpenArmy.ShortLabel = Mono.Unix.Catalog.GetString("Open army"); w1.Add(this.miOpenArmy, null); this.miSaveArmy = new Gtk.Action("miSaveArmy", Mono.Unix.Catalog.GetString("Save army"), null, "gtk-save"); @@ -135,7 +134,6 @@ this.newArmyButton.Sensitive = false; w1.Add(this.newArmyButton, null); this.openArmyButton = new Gtk.Action("openArmyButton", null, null, "gtk-open"); - this.openArmyButton.Sensitive = false; w1.Add(this.openArmyButton, null); this.saveArmyButton = new Gtk.Action("saveArmyButton", null, null, "gtk-save"); this.saveArmyButton.Sensitive = false;