diff FrmNewArmy.cs @ 171:0e17097db8e5

Fixes #300: WinForms UI doesn't make it obvious why nothing is listed on first run * Added a warning icon and tooltip message to the New Army dialog * Added initial English translation text Also: * Layered the enabling of widgets so that they are only enabled when they make sense (so empty list won't be enabled)
author IBBoard <dev@ibboard.co.uk>
date Sat, 31 Jul 2010 14:26:21 +0000
parents 18d607b0249b
children 0e39412353c4 946d37003f97
line wrap: on
line diff
--- a/FrmNewArmy.cs	Sun Jul 25 17:17:55 2010 +0000
+++ b/FrmNewArmy.cs	Sat Jul 31 14:26:21 2010 +0000
@@ -20,10 +20,7 @@
 	/// </summary>
 	public class FrmNewArmy : IBBForm
 	{
-		/// <summary>
-		/// Required designer variable.
-		/// </summary>
-		private System.ComponentModel.Container components = null;
+		private IContainer components;
 		private IBBoard.Windows.Forms.IBBButton bttnCancel;
 		private IBBoard.Windows.Forms.IBBLabel lblRaceList;
 		private IBBoard.Windows.Forms.IBBButton bttnSelectRace;
@@ -38,6 +35,7 @@
 		private GameSystem system;
 		private Race race;
 		private string armyName;
+		private ToolTip gameSystemToolTip;
 		private int maxPoints;
 
 		public FrmNewArmy(GameSystem system)
@@ -51,6 +49,17 @@
 				gameSystems.Items.Add(gameSystem);
 			}
 
+			if (gameSystems.Items.Count > 0)
+			{
+				gameSystems.Enabled = true;
+				lblGameSystem.Image = null;
+			}
+			else
+			{
+				gameSystems.Enabled = false;
+				gameSystemToolTip.SetToolTip(lblGameSystem, Translation.GetTranslation("newArmyNoGameSystems", "could not load data for game systems - please check logs"));
+			}
+
 			if (system != null)
 			{
 				gameSystems.SelectedItem = system;
@@ -91,6 +100,7 @@
 		/// </summary>
 		private void InitializeComponent()
 		{
+			this.components = new System.ComponentModel.Container();
 			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmNewArmy));
 			this.lstRaces = new System.Windows.Forms.ListBox();
 			this.bttnCancel = new IBBoard.Windows.Forms.IBBButton();
@@ -100,16 +110,18 @@
 			this.txtArmyName = new System.Windows.Forms.TextBox();
 			this.lblArmySize = new IBBoard.Windows.Forms.IBBLabel();
 			this.armySize = new System.Windows.Forms.NumericUpDown();
+			this.gameSystems = new System.Windows.Forms.ComboBox();
 			this.lblGameSystem = new IBBoard.Windows.Forms.IBBLabel();
-			this.gameSystems = new System.Windows.Forms.ComboBox();
-			((System.ComponentModel.ISupportInitialize) (this.armySize)).BeginInit();
+			this.gameSystemToolTip = new System.Windows.Forms.ToolTip(this.components);
+			((System.ComponentModel.ISupportInitialize)(this.armySize)).BeginInit();
 			this.SuspendLayout();
 			// 
 			// lstRaces
 			// 
-			this.lstRaces.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+			this.lstRaces.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
 						| System.Windows.Forms.AnchorStyles.Right)));
 			this.lstRaces.DisplayMember = "Name";
+			this.lstRaces.Enabled = false;
 			this.lstRaces.Location = new System.Drawing.Point(141, 33);
 			this.lstRaces.Name = "lstRaces";
 			this.lstRaces.Size = new System.Drawing.Size(265, 121);
@@ -138,7 +150,7 @@
 			// 
 			// bttnSelectRace
 			// 
-			this.bttnSelectRace.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+			this.bttnSelectRace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
 						| System.Windows.Forms.AnchorStyles.Right)));
 			this.bttnSelectRace.Enabled = false;
 			this.bttnSelectRace.FlatStyle = System.Windows.Forms.FlatStyle.System;
@@ -160,8 +172,9 @@
 			// 
 			// txtArmyName
 			// 
-			this.txtArmyName.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+			this.txtArmyName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
 						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtArmyName.Enabled = false;
 			this.txtArmyName.Location = new System.Drawing.Point(141, 160);
 			this.txtArmyName.Name = "txtArmyName";
 			this.txtArmyName.Size = new System.Drawing.Size(265, 20);
@@ -179,6 +192,7 @@
 			// 
 			// armySize
 			// 
+			this.armySize.Enabled = false;
 			this.armySize.Increment = new decimal(new int[] {
             50,
             0,
@@ -200,18 +214,9 @@
             0,
             0});
 			// 
-			// lblGameSystem
-			// 
-			this.lblGameSystem.Location = new System.Drawing.Point(12, 9);
-			this.lblGameSystem.Name = "lblGameSystem";
-			this.lblGameSystem.Size = new System.Drawing.Size(123, 18);
-			this.lblGameSystem.TabIndex = 12;
-			this.lblGameSystem.Text = "game system";
-			this.lblGameSystem.TextAlign = System.Drawing.ContentAlignment.TopRight;
-			// 
 			// gameSystems
 			// 
-			this.gameSystems.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+			this.gameSystems.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
 						| System.Windows.Forms.AnchorStyles.Right)));
 			this.gameSystems.DisplayMember = "Name";
 			this.gameSystems.FormattingEnabled = true;
@@ -221,6 +226,17 @@
 			this.gameSystems.TabIndex = 13;
 			this.gameSystems.SelectedValueChanged += new System.EventHandler(this.gameSystems_SelectedValueChanged);
 			// 
+			// lblGameSystem
+			// 
+			this.lblGameSystem.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.warning_sml;
+			this.lblGameSystem.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+			this.lblGameSystem.Location = new System.Drawing.Point(12, 9);
+			this.lblGameSystem.Name = "lblGameSystem";
+			this.lblGameSystem.Size = new System.Drawing.Size(123, 18);
+			this.lblGameSystem.TabIndex = 12;
+			this.lblGameSystem.Text = "game system";
+			this.lblGameSystem.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
 			// FrmNewArmy
 			// 
 			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
@@ -236,14 +252,14 @@
 			this.Controls.Add(this.bttnSelectRace);
 			this.Controls.Add(this.lstRaces);
 			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
-			this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon")));
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
 			this.MaximizeBox = false;
 			this.MinimizeBox = false;
 			this.Name = "FrmNewArmy";
 			this.ShowInTaskbar = false;
 			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
 			this.Text = "FrmNewArmy";
-			((System.ComponentModel.ISupportInitialize) (this.armySize)).EndInit();
+			((System.ComponentModel.ISupportInitialize)(this.armySize)).EndInit();
 			this.ResumeLayout(false);
 			this.PerformLayout();
 
@@ -309,6 +325,9 @@
 		private void lstRaces_SelectedIndexChanged(object sender, System.EventArgs e)
 		{
 			setSelectRaceEnabledVal();
+			bool raceSelected = lstRaces.SelectedItem != null;
+			txtArmyName.Enabled = raceSelected;
+			armySize.Enabled = raceSelected;
 		}
 
 		private void gameSystems_SelectedValueChanged(object sender, EventArgs e)
@@ -320,11 +339,13 @@
 			{
 				SetRaces(selected);
 
-				if (lstRaces.Items.Count > 0)
+				if (lstRaces.Items.Count == 1)
 				{
 					lstRaces.SelectedIndex = 0;
 				}
 			}
+
+			lstRaces.Enabled = lstRaces.Items.Count > 0;
 		}
 	}
 }