view FrmNewArmy.cs @ 1:a3c70b542257

* Change MonoDevelop Project file to format for MonoDevelop 2.0a1 * Remove PIDB (Parser Information Database) from source control
author IBBoard <dev@ibboard.co.uk>
date Fri, 19 Dec 2008 16:47:13 +0000
parents 1bb28f84d567
children 65279b85446f
line wrap: on
line source

// FrmNewArmy.cs
//
//  Copyright (C) 2007 IBBoard
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License version 2.1 of the License as published by the Free
// Software Foundation.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
//
//

using System;
using Gtk;
using IBBoard.Lang;
using IBBoard.WarFoundry.API;
using IBBoard.WarFoundry.API.Objects;
using log4net;

namespace IBBoard.WarFoundry
{	
	public partial class FrmNewArmy : Dialog, ITranslatable
	{
		private ILog logger = LogManager.GetLogger(typeof(FrmNewArmy));
		private GameSystem system;
		private Race race;
		private string armyName;
		private int pointsValue;
		
		public FrmNewArmy(GameSystem gameSystem)
		{
			this.Build();
			
			system = gameSystem;
			lstRaces.Selection.Changed+= new EventHandler(OnSelectionChanged);
			TreeViewColumn raceColumn = new TreeViewColumn ();
			raceColumn.Title = "Race";
			CellRendererText raceCell = new CellRendererText ();
			raceColumn.PackStart (raceCell, true);
			lstRaces.AppendColumn(raceColumn);
			raceColumn.SetCellDataFunc(raceCell, new TreeCellDataFunc(RenderRaceName));
			ListStore store = new ListStore(typeof(Race));
			
			foreach (Race r in WarFoundryLoader.GetDefault().GetRaces(system))
			{
				store.AppendValues(r);
			}
			
			lstRaces.Model = store;
		}
		
		public string Text
		{
			get { return Title; }
			set { Title = value; }
		}
		
		private void RenderRaceName(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
		{
			Race r = (Race)model.GetValue(iter, 0);
			(cell as CellRendererText).Text = r.Name;
		}

		protected virtual void OnSelectionChanged(object o, EventArgs e)
		{
			logger.Debug("Selection changed");
			setOkayButtonState();
		}
		
		private void setOkayButtonState()
		{
			bttnCreate.Sensitive = (lstRaces.Selection.CountSelectedRows() > 0 && txtArmyName.Text!="" && sbPointsValue.Value > 0);
		}

		protected virtual void OnCreateClicked (object sender, System.EventArgs e)
		{
			TreeModel model;
			TreeIter iter;
			lstRaces.Selection.GetSelected (out model, out iter);
			race = (Race) model.GetValue(iter, 0);
			armyName = txtArmyName.Text;
			pointsValue = (int)sbPointsValue.Value;
			Respond(ResponseType.Ok);
		}

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

		protected virtual void OnTextChanged (object sender, System.EventArgs e)
		{
			setOkayButtonState();
		}

		protected virtual void OnSpinChangeValue (object o, Gtk.ChangeValueArgs args)
		{
			setOkayButtonState();
		}

		protected virtual void OnSpinValueChanged (object sender, System.EventArgs e)
		{
			setOkayButtonState();
		}
		
		public Race SelectedRace
		{
			get { return race; }
		}
		
		public string ArmyName
		{
			get { return armyName; }
		}
		
		public int ArmySize 
		{
			get { return pointsValue; }
		}
	}
}