# HG changeset patch # User IBBoard # Date 1250538545 0 # Node ID d661cb257511ea2c81ec6626f47016c43978cb50 # Parent 40485c6e5cb03e5fc72a1ca1933e57f60dfda5e8 Re #86: Initial GTK# GUI (because of Re #53) * Refactor file saving in to a common method * Replace fixed location with dialog diff -r 40485c6e5cb0 -r d661cb257511 FrmMainWindow.cs --- a/FrmMainWindow.cs Mon Aug 17 19:17:35 2009 +0000 +++ b/FrmMainWindow.cs Mon Aug 17 19:49:05 2009 +0000 @@ -701,22 +701,7 @@ if (CanSave()) { - try - { - if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, loadedArmyPath)) - { - saveArmyButton.Sensitive = false; - miSaveArmy.Sensitive = false; - CommandStack.setCleanMark(); - success = true; - } - } - catch (IOException ex) - { - logger.Error("Saving army failed", ex); - MessageDialog md = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "An error occured while saving the army. Please check the logs for details on what failed"); - md.Show(); - } + success = SaveArmyToPath(WarFoundryCore.CurrentArmy, loadedArmyPath); } return success; @@ -724,21 +709,49 @@ private bool SaveCurrentArmyAs() { - bool success = false; - - if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, Constants.UserDataPath+Constants.DirectoryString+"test.army")) + + FileChooserDialog fileDialog = new FileChooserDialog("Save file as", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", 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) { - miSaveArmy.Sensitive = false; - //bttnSaveArmy.Sensitive = false; - CommandStack.setCleanMark(); - loadedArmyPath = Constants.UserDataPath+Constants.DirectoryString+"test.army"; - success = true; + filePath = fileDialog.Filename; } - else + + fileDialog.Hide(); + fileDialog.Dispose(); + + return SaveArmyToPath(WarFoundryCore.CurrentArmy, filePath); + } + + private bool SaveArmyToPath(Army army, string filePath) + { + bool success = false; + + if (filePath!=null) { - //MessageBox.Show(this, Translation.GetTranslation("SaveFailed"), Translation.GetTranslation("SaveFailedTitle"), MessageBoxButtons.OK, MessageBoxIcon.Error); + if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, filePath)) + { + miSaveArmy.Sensitive = false; + saveArmyButton.Sensitive = false; + CommandStack.setCleanMark(); + loadedArmyPath = filePath; + success = true; + } + else + { + MessageDialog dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Failed to save file to "+filePath); + dialog.Show(); + dialog.Dispose(); + } } - + //else user cancelled + return success; } diff -r 40485c6e5cb0 -r d661cb257511 gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs --- a/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Mon Aug 17 19:17:35 2009 +0000 +++ b/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Mon Aug 17 19:49:05 2009 +0000 @@ -81,51 +81,51 @@ this.menuFile = new Gtk.Action("menuFile", Mono.Unix.Catalog.GetString("File"), null, null); this.menuFile.ShortLabel = Mono.Unix.Catalog.GetString("File"); w1.Add(this.menuFile, null); - this.miCreateArmy = new Gtk.Action("miCreateArmy", Mono.Unix.Catalog.GetString("Create army"), null, null); + this.miCreateArmy = new Gtk.Action("miCreateArmy", Mono.Unix.Catalog.GetString("Create army"), null, "gtk-new"); this.miCreateArmy.Sensitive = false; 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, 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, null); + this.miSaveArmy = new Gtk.Action("miSaveArmy", Mono.Unix.Catalog.GetString("Save army"), null, "gtk-save"); this.miSaveArmy.Sensitive = false; this.miSaveArmy.ShortLabel = Mono.Unix.Catalog.GetString("Save army"); w1.Add(this.miSaveArmy, null); - this.miSaveArmyAs = new Gtk.Action("miSaveArmyAs", Mono.Unix.Catalog.GetString("Save army as"), null, null); + this.miSaveArmyAs = new Gtk.Action("miSaveArmyAs", Mono.Unix.Catalog.GetString("Save army as"), null, "gtk-save-as"); this.miSaveArmyAs.Sensitive = false; this.miSaveArmyAs.ShortLabel = Mono.Unix.Catalog.GetString("Save army as"); w1.Add(this.miSaveArmyAs, null); - this.miCloseArmy = new Gtk.Action("miCloseArmy", Mono.Unix.Catalog.GetString("Close army"), null, null); + this.miCloseArmy = new Gtk.Action("miCloseArmy", Mono.Unix.Catalog.GetString("Close army"), null, "gtk-close"); this.miCloseArmy.Sensitive = false; this.miCloseArmy.ShortLabel = Mono.Unix.Catalog.GetString("Close army"); w1.Add(this.miCloseArmy, null); this.miChangeGameSystem = new Gtk.Action("miChangeGameSystem", Mono.Unix.Catalog.GetString("Change game system"), null, null); this.miChangeGameSystem.ShortLabel = Mono.Unix.Catalog.GetString("Change game system"); w1.Add(this.miChangeGameSystem, null); - this.miReloadFiles = new Gtk.Action("miReloadFiles", Mono.Unix.Catalog.GetString("Reload files"), null, null); + this.miReloadFiles = new Gtk.Action("miReloadFiles", Mono.Unix.Catalog.GetString("Reload files"), null, "gtk-refresh"); this.miReloadFiles.Sensitive = false; this.miReloadFiles.ShortLabel = Mono.Unix.Catalog.GetString("Reload files"); w1.Add(this.miReloadFiles, null); - this.miExit = new Gtk.Action("miExit", Mono.Unix.Catalog.GetString("Exit"), null, null); + this.miExit = new Gtk.Action("miExit", Mono.Unix.Catalog.GetString("Exit"), null, "gtk-quit"); this.miExit.ShortLabel = Mono.Unix.Catalog.GetString("Exit"); w1.Add(this.miExit, null); this.menuEdit = new Gtk.Action("menuEdit", Mono.Unix.Catalog.GetString("Edit"), null, null); this.menuEdit.ShortLabel = Mono.Unix.Catalog.GetString("Edit"); w1.Add(this.menuEdit, null); - this.miUndo = new Gtk.Action("miUndo", Mono.Unix.Catalog.GetString("Undo"), null, null); + this.miUndo = new Gtk.Action("miUndo", Mono.Unix.Catalog.GetString("Undo"), null, "gtk-undo"); this.miUndo.Sensitive = false; this.miUndo.ShortLabel = Mono.Unix.Catalog.GetString("Undo"); w1.Add(this.miUndo, null); - this.miRedo = new Gtk.Action("miRedo", Mono.Unix.Catalog.GetString("Redo"), null, null); + this.miRedo = new Gtk.Action("miRedo", Mono.Unix.Catalog.GetString("Redo"), null, "gtk-redo"); this.miRedo.Sensitive = false; this.miRedo.ShortLabel = Mono.Unix.Catalog.GetString("Redo"); w1.Add(this.miRedo, null); this.menuHelp = new Gtk.Action("menuHelp", Mono.Unix.Catalog.GetString("Help"), null, null); this.menuHelp.ShortLabel = Mono.Unix.Catalog.GetString("Help"); w1.Add(this.menuHelp, null); - this.miAbout = new Gtk.Action("miAbout", Mono.Unix.Catalog.GetString("About"), null, null); + this.miAbout = new Gtk.Action("miAbout", Mono.Unix.Catalog.GetString("About"), null, "gtk-about"); this.miAbout.ShortLabel = Mono.Unix.Catalog.GetString("About"); w1.Add(this.miAbout, null); this.miDebugInformation = new Gtk.Action("miDebugInformation", Mono.Unix.Catalog.GetString("Debug Information"), null, null); @@ -133,22 +133,29 @@ w1.Add(this.miDebugInformation, null); this.newArmyButton = new Gtk.Action("newArmyButton", null, null, "gtk-new"); this.newArmyButton.Sensitive = false; + this.newArmyButton.ShortLabel = ""; w1.Add(this.newArmyButton, null); this.openArmyButton = new Gtk.Action("openArmyButton", null, null, "gtk-open"); this.openArmyButton.Sensitive = false; + this.openArmyButton.ShortLabel = ""; w1.Add(this.openArmyButton, null); this.saveArmyButton = new Gtk.Action("saveArmyButton", null, null, "gtk-save"); this.saveArmyButton.Sensitive = false; + this.saveArmyButton.ShortLabel = ""; w1.Add(this.saveArmyButton, null); this.undoActionButton = new Gtk.Action("undoActionButton", null, null, "gtk-undo"); this.undoActionButton.Sensitive = false; + this.undoActionButton.ShortLabel = ""; w1.Add(this.undoActionButton, null); this.redoActionButton = new Gtk.Action("redoActionButton", null, null, "gtk-redo"); this.redoActionButton.Sensitive = false; + this.redoActionButton.ShortLabel = ""; w1.Add(this.redoActionButton, null); this.goDown = new Gtk.Action("goDown", null, null, null); + this.goDown.ShortLabel = ""; w1.Add(this.goDown, null); this.add = new Gtk.Action("add", null, null, "gtk-add"); + this.add.ShortLabel = ""; w1.Add(this.add, null); this.UIManager.InsertActionGroup(w1, 0); this.AddAccelGroup(this.UIManager.AccelGroup); diff -r 40485c6e5cb0 -r d661cb257511 gtk-gui/gui.stetic --- a/gtk-gui/gui.stetic Mon Aug 17 19:17:35 2009 +0000 +++ b/gtk-gui/gui.stetic Mon Aug 17 19:49:05 2009 +0000 @@ -115,6 +115,7 @@ Action False + gtk-new @@ -122,6 +123,7 @@ Action False + gtk-open @@ -129,6 +131,7 @@ Action False + gtk-save @@ -136,6 +139,7 @@ Action False + gtk-undo @@ -143,16 +147,19 @@ Action False + gtk-redo Action + Action + gtk-add