view FrmEditArmy.cs @ 146:f3453f3e4591

Fixes #369: Clicking "Create" without unit selected causes errors * Disable the button from the start
author IBBoard <dev@ibboard.co.uk>
date Fri, 25 Nov 2011 20:37:59 +0000
parents d4b726cec12c
children
line wrap: on
line source

// This file (FrmEditArmy.cs) is a part of the IBBoard.WarFoundry.GUI.GTK project and is copyright 2011 IBBoard
// 
// 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.
using System;
using IBBoard.WarFoundry.API.Objects;
using IBBoard.Commands;
using IBBoard.WarFoundry.API.Commands;

namespace IBBoard.WarFoundry.GUI.GTK
{
	public partial class FrmEditArmy : IBBoard.GtkSharp.Translatable.TranslatableDialog
	{
		private Army army;
		private CommandStack stack;

		public FrmEditArmy(CommandStack cmdStack, Army toEdit)
		{
			stack = cmdStack;
			army = toEdit;
			this.Build();
			txtArmyName.Text = army.Name;
			sbPointsValue.Value = army.MaxPoints;
			Translate();
		}

		protected void OnButtonOkClicked (object sender, System.EventArgs e)
		{
			if (IsChanged())
			{
				DoUpdate();
			}
			Respond(Gtk.ResponseType.Ok);
		}

		private bool IsChanged()
		{
			string trimmedName = txtArmyName.Text.Trim();
			return army.MaxPoints != sbPointsValue.Value || army.Name != trimmedName;
		}

		private void DoUpdate()
		{
			EditArmyCommand command = new EditArmyCommand(army);
			command.NewName = txtArmyName.Text;
			command.NewSize = (int)sbPointsValue.Value;
			stack.Execute(command);
		}

		protected void OnButtonCancelClicked (object sender, System.EventArgs e)
		{
			Respond(Gtk.ResponseType.Cancel);
		}
	}
}