comparison FrmMainWindow.cs @ 23:d661cb257511

Re #86: Initial GTK# GUI (because of Re #53) * Refactor file saving in to a common method * Replace fixed location with dialog
author IBBoard <dev@ibboard.co.uk>
date Mon, 17 Aug 2009 19:49:05 +0000
parents 2cf1af4c9baf
children 01ddadfa9653
comparison
equal deleted inserted replaced
22:40485c6e5cb0 23:d661cb257511
699 { 699 {
700 bool success = false; 700 bool success = false;
701 701
702 if (CanSave()) 702 if (CanSave())
703 { 703 {
704 try 704 success = SaveArmyToPath(WarFoundryCore.CurrentArmy, loadedArmyPath);
705 {
706 if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, loadedArmyPath))
707 {
708 saveArmyButton.Sensitive = false;
709 miSaveArmy.Sensitive = false;
710 CommandStack.setCleanMark();
711 success = true;
712 }
713 }
714 catch (IOException ex)
715 {
716 logger.Error("Saving army failed", ex);
717 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");
718 md.Show();
719 }
720 } 705 }
721 706
722 return success; 707 return success;
723 } 708 }
724 709
725 private bool SaveCurrentArmyAs() 710 private bool SaveCurrentArmyAs()
726 { 711 {
712
713 FileChooserDialog fileDialog = new FileChooserDialog("Save file as", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept);
714 FileFilter filter = new FileFilter();
715 filter.AddPattern("*.army");
716 filter.Name = "WarFoundry Army files (*.army)";
717 fileDialog.AddFilter(filter);
718 int response = fileDialog.Run();
719 string filePath = null;
720
721 if (response == (int)ResponseType.Accept)
722 {
723 filePath = fileDialog.Filename;
724 }
725
726 fileDialog.Hide();
727 fileDialog.Dispose();
728
729 return SaveArmyToPath(WarFoundryCore.CurrentArmy, filePath);
730 }
731
732 private bool SaveArmyToPath(Army army, string filePath)
733 {
727 bool success = false; 734 bool success = false;
728 735
729 if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, Constants.UserDataPath+Constants.DirectoryString+"test.army")) 736 if (filePath!=null)
730 { 737 {
731 miSaveArmy.Sensitive = false; 738 if (WarFoundrySaver.GetSaver().Save(WarFoundryCore.CurrentArmy, filePath))
732 //bttnSaveArmy.Sensitive = false; 739 {
733 CommandStack.setCleanMark(); 740 miSaveArmy.Sensitive = false;
734 loadedArmyPath = Constants.UserDataPath+Constants.DirectoryString+"test.army"; 741 saveArmyButton.Sensitive = false;
735 success = true; 742 CommandStack.setCleanMark();
736 } 743 loadedArmyPath = filePath;
737 else 744 success = true;
738 { 745 }
739 //MessageBox.Show(this, Translation.GetTranslation("SaveFailed"), Translation.GetTranslation("SaveFailedTitle"), MessageBoxButtons.OK, MessageBoxIcon.Error); 746 else
740 } 747 {
741 748 MessageDialog dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Failed to save file to "+filePath);
749 dialog.Show();
750 dialog.Dispose();
751 }
752 }
753 //else user cancelled
754
742 return success; 755 return success;
743 } 756 }
744 757
745 private bool CloseCurrentArmy() 758 private bool CloseCurrentArmy()
746 { 759 {