diff Options.cs @ 0:a54c09901f4e default tip

Initial commit to Mercurial at v1.9.3 - now GPLed!
author IBBoard <dev@ibboard.co.uk>
date Sat, 06 Oct 2018 19:19:03 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Options.cs	Sat Oct 06 19:19:03 2018 +0100
@@ -0,0 +1,979 @@
+// This file is a part of the Texture Tool program and is copyright 2006-2018 IBBoard.
+//
+// The file and the library/program it is in are licensed under the GNU 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 System.Drawing;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+using System.IO;
+using System.Text.RegularExpressions;
+
+using IBBoard;
+using IBBoard.Graphics;
+
+namespace IBBoard.Relic.TextureTool
+{
+	/// <summary>
+	/// Summary description for Options.
+	/// </summary>
+	public class Options : System.Windows.Forms.Form
+	{
+		private Preferences pref;
+
+		private System.Windows.Forms.Button bttnImportTeamcolour;
+		private System.Windows.Forms.Button bttnOK;
+		private System.Windows.Forms.Button bttnCancel;
+		private System.Windows.Forms.ColorDialog colorDialog;
+		private System.Windows.Forms.OpenFileDialog openFileDialog;
+		private System.Windows.Forms.Label lblDoWPath;
+		private System.Windows.Forms.Button bttnDoWPath;
+		private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
+		private System.Windows.Forms.Button bttnPrimary;
+		private System.Windows.Forms.Button bttnSecondary;
+		private System.Windows.Forms.Button bttnTrim;
+		private System.Windows.Forms.Button bttnWeapon;
+		private System.Windows.Forms.Button bttnTrim2;
+		private System.Windows.Forms.PictureBox pbBadge;
+		private System.Windows.Forms.Label lblBadge;
+		private System.Windows.Forms.Label lblBanner;
+		private System.Windows.Forms.PictureBox pbBanner;
+		private System.Windows.Forms.Button bttnSave;
+		private System.Windows.Forms.TabControl tabControl1;
+		private System.Windows.Forms.TabPage tabPage1;
+		private System.Windows.Forms.TabPage tabPage2;
+		private System.Windows.Forms.TextBox txtDoWPath;
+		private System.Windows.Forms.Label label1;
+		private System.Windows.Forms.Button bttnTexturePath;
+		private System.Windows.Forms.TextBox txtTexturePath;
+		private System.Windows.Forms.Label label2;
+		private System.Windows.Forms.Button bttnTeamcolourPath;
+		private System.Windows.Forms.TextBox txtTeamcolourPath;
+		private System.Windows.Forms.Label label3;
+		private System.Windows.Forms.RadioButton rbBasicMode;
+		private System.Windows.Forms.RadioButton rbAdvancedMode;
+		/// <summary>
+		/// Required designer variable.
+		/// </summary>
+		private System.ComponentModel.Container components = null;
+
+		public Options(Preferences p)
+		{
+			pref = p;
+			//
+			// Required for Windows Form Designer support
+			//
+			InitializeComponent();
+
+			pbBadge.Tag = "";
+			pbBanner.Tag = "";
+
+			colorDialog.FullOpen = true;
+			txtDoWPath.Text = pref["DoWPath"].ToString();
+			txtTeamcolourPath.Text = pref["TeamcolourPath"].ToString();
+			txtTexturePath.Text = pref["TexturePath"].ToString();
+
+			if ((bool)pref["settingBasic"])
+			{
+				rbBasicMode.Checked = true;
+			}
+			else
+			{
+				rbAdvancedMode.Checked = true;
+			}
+
+			SetButtonColour(bttnPrimary, Color.FromArgb((byte)pref["PrimaryRed"], (byte)pref["PrimaryGreen"], (byte)pref["PrimaryBlue"]));
+			SetButtonColour(bttnSecondary, Color.FromArgb((byte)pref["SecondaryRed"], (byte)pref["SecondaryGreen"], (byte)pref["SecondaryBlue"]));
+			SetButtonColour(bttnTrim, Color.FromArgb((byte)pref["TrimRed"], (byte)pref["TrimGreen"], (byte)pref["TrimBlue"]));
+			SetButtonColour(bttnWeapon, Color.FromArgb((byte)pref["WeaponRed"], (byte)pref["WeaponGreen"], (byte)pref["WeaponBlue"]));
+			SetButtonColour(bttnTrim2, Color.FromArgb((byte)pref["EyesRed"], (byte)pref["EyesGreen"], (byte)pref["EyesBlue"]));
+			
+			string temp = pref["BadgeName"].ToString();
+
+			if (temp.LastIndexOf(IBBoard.Constants.DirectoryChar)==-1)
+			{
+				temp = pref["DoWPath"].ToString().TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"badges"+IBBoard.Constants.DirectoryChar+pref["BadgeName"].ToString();
+			}
+
+			if (File.Exists(temp))
+			{
+				SetPictureBoxImage(pbBadge, temp);
+			}
+			
+			temp = pref["BannerName"].ToString();
+
+			if (temp.LastIndexOf(IBBoard.Constants.DirectoryChar)==-1)
+			{
+				temp = pref["DoWPath"].ToString().TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"banners"+IBBoard.Constants.DirectoryChar+pref["BannerName"].ToString();
+			}
+
+			if (File.Exists(temp))
+			{
+				SetPictureBoxImage(pbBanner, temp);
+			}
+		}
+
+		/// <summary>
+		/// Clean up any resources being used.
+		/// </summary>
+		protected override void Dispose( bool disposing )
+		{
+			if( disposing )
+			{
+				if(components != null)
+				{
+					components.Dispose();
+				}
+			}
+			base.Dispose( disposing );
+		}
+
+		#region Windows Form Designer generated code
+		/// <summary>
+		/// Required method for Designer support - do not modify
+		/// the contents of this method with the code editor.
+		/// </summary>
+		private void InitializeComponent()
+		{
+			this.colorDialog = new System.Windows.Forms.ColorDialog();
+			this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+			this.bttnImportTeamcolour = new System.Windows.Forms.Button();
+			this.bttnOK = new System.Windows.Forms.Button();
+			this.bttnCancel = new System.Windows.Forms.Button();
+			this.txtDoWPath = new System.Windows.Forms.TextBox();
+			this.lblDoWPath = new System.Windows.Forms.Label();
+			this.bttnDoWPath = new System.Windows.Forms.Button();
+			this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
+			this.pbBanner = new System.Windows.Forms.PictureBox();
+			this.lblBanner = new System.Windows.Forms.Label();
+			this.lblBadge = new System.Windows.Forms.Label();
+			this.pbBadge = new System.Windows.Forms.PictureBox();
+			this.bttnTrim2 = new System.Windows.Forms.Button();
+			this.bttnWeapon = new System.Windows.Forms.Button();
+			this.bttnTrim = new System.Windows.Forms.Button();
+			this.bttnSecondary = new System.Windows.Forms.Button();
+			this.bttnPrimary = new System.Windows.Forms.Button();
+			this.bttnSave = new System.Windows.Forms.Button();
+			this.tabControl1 = new System.Windows.Forms.TabControl();
+			this.tabPage1 = new System.Windows.Forms.TabPage();
+			this.rbAdvancedMode = new System.Windows.Forms.RadioButton();
+			this.rbBasicMode = new System.Windows.Forms.RadioButton();
+			this.label3 = new System.Windows.Forms.Label();
+			this.label2 = new System.Windows.Forms.Label();
+			this.bttnTeamcolourPath = new System.Windows.Forms.Button();
+			this.txtTeamcolourPath = new System.Windows.Forms.TextBox();
+			this.label1 = new System.Windows.Forms.Label();
+			this.bttnTexturePath = new System.Windows.Forms.Button();
+			this.txtTexturePath = new System.Windows.Forms.TextBox();
+			this.tabPage2 = new System.Windows.Forms.TabPage();
+			this.tabControl1.SuspendLayout();
+			this.tabPage1.SuspendLayout();
+			this.tabPage2.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// bttnImportTeamcolour
+			// 
+			this.bttnImportTeamcolour.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnImportTeamcolour.Location = new System.Drawing.Point(16, 168);
+			this.bttnImportTeamcolour.Name = "bttnImportTeamcolour";
+			this.bttnImportTeamcolour.Size = new System.Drawing.Size(128, 23);
+			this.bttnImportTeamcolour.TabIndex = 3;
+			this.bttnImportTeamcolour.Text = "Import Teamcolour";
+			this.bttnImportTeamcolour.Click += new System.EventHandler(this.bttnImportTeamcolour_Click);
+			// 
+			// bttnOK
+			// 
+			this.bttnOK.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnOK.Location = new System.Drawing.Point(368, 240);
+			this.bttnOK.Name = "bttnOK";
+			this.bttnOK.TabIndex = 2;
+			this.bttnOK.Text = "OK";
+			this.bttnOK.Click += new System.EventHandler(this.bttnOK_Click);
+			// 
+			// bttnCancel
+			// 
+			this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnCancel.Location = new System.Drawing.Point(280, 240);
+			this.bttnCancel.Name = "bttnCancel";
+			this.bttnCancel.TabIndex = 1;
+			this.bttnCancel.Text = "Cancel";
+			this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click);
+			// 
+			// txtDoWPath
+			// 
+			this.txtDoWPath.Cursor = System.Windows.Forms.Cursors.Default;
+			this.txtDoWPath.Location = new System.Drawing.Point(112, 8);
+			this.txtDoWPath.Name = "txtDoWPath";
+			this.txtDoWPath.Size = new System.Drawing.Size(240, 20);
+			this.txtDoWPath.TabIndex = 3;
+			this.txtDoWPath.TabStop = false;
+			this.txtDoWPath.Text = "";
+			this.txtDoWPath.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textbox_KeyDown);
+			this.txtDoWPath.TextChanged += new System.EventHandler(this.textbox_TextChanged);
+			this.txtDoWPath.Leave += new System.EventHandler(this.txtDoWPath_Leave);
+			// 
+			// lblDoWPath
+			// 
+			this.lblDoWPath.Location = new System.Drawing.Point(8, 8);
+			this.lblDoWPath.Name = "lblDoWPath";
+			this.lblDoWPath.TabIndex = 4;
+			this.lblDoWPath.Text = "Dawn of War Path:";
+			this.lblDoWPath.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+			// 
+			// bttnDoWPath
+			// 
+			this.bttnDoWPath.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnDoWPath.Location = new System.Drawing.Point(360, 8);
+			this.bttnDoWPath.Name = "bttnDoWPath";
+			this.bttnDoWPath.Size = new System.Drawing.Size(56, 23);
+			this.bttnDoWPath.TabIndex = 4;
+			this.bttnDoWPath.Text = "Select";
+			this.bttnDoWPath.Click += new System.EventHandler(this.bttnDoWPath_Click);
+			// 
+			// pbBanner
+			// 
+			this.pbBanner.Location = new System.Drawing.Point(296, 64);
+			this.pbBanner.Name = "pbBanner";
+			this.pbBanner.Size = new System.Drawing.Size(64, 96);
+			this.pbBanner.TabIndex = 8;
+			this.pbBanner.TabStop = false;
+			this.pbBanner.Click += new System.EventHandler(this.pbBanner_Click);
+			// 
+			// lblBanner
+			// 
+			this.lblBanner.Location = new System.Drawing.Point(232, 72);
+			this.lblBanner.Name = "lblBanner";
+			this.lblBanner.Size = new System.Drawing.Size(64, 23);
+			this.lblBanner.TabIndex = 7;
+			this.lblBanner.Text = "Banner:";
+			this.lblBanner.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// lblBadge
+			// 
+			this.lblBadge.Location = new System.Drawing.Point(24, 72);
+			this.lblBadge.Name = "lblBadge";
+			this.lblBadge.Size = new System.Drawing.Size(48, 23);
+			this.lblBadge.TabIndex = 6;
+			this.lblBadge.Text = "Badge:";
+			this.lblBadge.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// pbBadge
+			// 
+			this.pbBadge.BackColor = System.Drawing.SystemColors.Control;
+			this.pbBadge.Location = new System.Drawing.Point(80, 72);
+			this.pbBadge.Name = "pbBadge";
+			this.pbBadge.Size = new System.Drawing.Size(64, 64);
+			this.pbBadge.TabIndex = 5;
+			this.pbBadge.TabStop = false;
+			this.pbBadge.Click += new System.EventHandler(this.pbBadge_Click);
+			// 
+			// bttnTrim2
+			// 
+			this.bttnTrim2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.bttnTrim2.Location = new System.Drawing.Point(336, 16);
+			this.bttnTrim2.Name = "bttnTrim2";
+			this.bttnTrim2.Size = new System.Drawing.Size(72, 40);
+			this.bttnTrim2.TabIndex = 4;
+			this.bttnTrim2.Tag = "Eye";
+			this.bttnTrim2.Text = "Trim 2/Eye";
+			this.bttnTrim2.Click += new System.EventHandler(this.bttnTrim2_Click);
+			// 
+			// bttnWeapon
+			// 
+			this.bttnWeapon.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.bttnWeapon.Location = new System.Drawing.Point(256, 16);
+			this.bttnWeapon.Name = "bttnWeapon";
+			this.bttnWeapon.Size = new System.Drawing.Size(72, 40);
+			this.bttnWeapon.TabIndex = 3;
+			this.bttnWeapon.Tag = "Weapon";
+			this.bttnWeapon.Text = "Weapon";
+			this.bttnWeapon.Click += new System.EventHandler(this.bttnWeapon_Click);
+			// 
+			// bttnTrim
+			// 
+			this.bttnTrim.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.bttnTrim.Location = new System.Drawing.Point(176, 16);
+			this.bttnTrim.Name = "bttnTrim";
+			this.bttnTrim.Size = new System.Drawing.Size(72, 40);
+			this.bttnTrim.TabIndex = 2;
+			this.bttnTrim.Tag = "Trim";
+			this.bttnTrim.Text = "Trim";
+			this.bttnTrim.Click += new System.EventHandler(this.bttnTrim_Click);
+			// 
+			// bttnSecondary
+			// 
+			this.bttnSecondary.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.bttnSecondary.Location = new System.Drawing.Point(96, 16);
+			this.bttnSecondary.Name = "bttnSecondary";
+			this.bttnSecondary.Size = new System.Drawing.Size(72, 40);
+			this.bttnSecondary.TabIndex = 1;
+			this.bttnSecondary.Tag = "Secondary";
+			this.bttnSecondary.Text = "Secondary";
+			this.bttnSecondary.Click += new System.EventHandler(this.bttnSecondary_Click);
+			// 
+			// bttnPrimary
+			// 
+			this.bttnPrimary.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.bttnPrimary.Location = new System.Drawing.Point(16, 16);
+			this.bttnPrimary.Name = "bttnPrimary";
+			this.bttnPrimary.Size = new System.Drawing.Size(72, 40);
+			this.bttnPrimary.TabIndex = 0;
+			this.bttnPrimary.Tag = "Primary";
+			this.bttnPrimary.Text = "Primary";
+			this.bttnPrimary.Click += new System.EventHandler(this.bttnPrimary_Click);
+			// 
+			// bttnSave
+			// 
+			this.bttnSave.Enabled = false;
+			this.bttnSave.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnSave.Location = new System.Drawing.Point(8, 240);
+			this.bttnSave.Name = "bttnSave";
+			this.bttnSave.Size = new System.Drawing.Size(112, 23);
+			this.bttnSave.TabIndex = 7;
+			this.bttnSave.Text = "Save Preferences";
+			this.bttnSave.Click += new System.EventHandler(this.bttnSave_Click);
+			// 
+			// tabControl1
+			// 
+			this.tabControl1.Controls.Add(this.tabPage1);
+			this.tabControl1.Controls.Add(this.tabPage2);
+			this.tabControl1.Location = new System.Drawing.Point(8, 8);
+			this.tabControl1.Name = "tabControl1";
+			this.tabControl1.SelectedIndex = 0;
+			this.tabControl1.Size = new System.Drawing.Size(432, 224);
+			this.tabControl1.TabIndex = 8;
+			// 
+			// tabPage1
+			// 
+			this.tabPage1.Controls.Add(this.rbAdvancedMode);
+			this.tabPage1.Controls.Add(this.rbBasicMode);
+			this.tabPage1.Controls.Add(this.label3);
+			this.tabPage1.Controls.Add(this.label2);
+			this.tabPage1.Controls.Add(this.bttnTeamcolourPath);
+			this.tabPage1.Controls.Add(this.txtTeamcolourPath);
+			this.tabPage1.Controls.Add(this.label1);
+			this.tabPage1.Controls.Add(this.bttnTexturePath);
+			this.tabPage1.Controls.Add(this.txtTexturePath);
+			this.tabPage1.Controls.Add(this.lblDoWPath);
+			this.tabPage1.Controls.Add(this.bttnDoWPath);
+			this.tabPage1.Controls.Add(this.txtDoWPath);
+			this.tabPage1.Location = new System.Drawing.Point(4, 22);
+			this.tabPage1.Name = "tabPage1";
+			this.tabPage1.Size = new System.Drawing.Size(424, 198);
+			this.tabPage1.TabIndex = 0;
+			this.tabPage1.Text = "Game/Path Settings";
+			// 
+			// rbAdvancedMode
+			// 
+			this.rbAdvancedMode.Location = new System.Drawing.Point(200, 120);
+			this.rbAdvancedMode.Name = "rbAdvancedMode";
+			this.rbAdvancedMode.Size = new System.Drawing.Size(80, 24);
+			this.rbAdvancedMode.TabIndex = 13;
+			this.rbAdvancedMode.Text = "Advanced";
+			this.rbAdvancedMode.CheckedChanged += new System.EventHandler(this.rbMode_CheckedChanged);
+			// 
+			// rbBasicMode
+			// 
+			this.rbBasicMode.Location = new System.Drawing.Point(120, 120);
+			this.rbBasicMode.Name = "rbBasicMode";
+			this.rbBasicMode.Size = new System.Drawing.Size(72, 24);
+			this.rbBasicMode.TabIndex = 12;
+			this.rbBasicMode.Text = "Basic";
+			this.rbBasicMode.CheckedChanged += new System.EventHandler(this.rbMode_CheckedChanged);
+			// 
+			// label3
+			// 
+			this.label3.Location = new System.Drawing.Point(8, 120);
+			this.label3.Name = "label3";
+			this.label3.TabIndex = 11;
+			this.label3.Text = "Texture Mode:";
+			this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+			// 
+			// label2
+			// 
+			this.label2.Location = new System.Drawing.Point(8, 72);
+			this.label2.Name = "label2";
+			this.label2.TabIndex = 10;
+			this.label2.Text = "Teamcolour Path:";
+			this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+			// 
+			// bttnTeamcolourPath
+			// 
+			this.bttnTeamcolourPath.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnTeamcolourPath.Location = new System.Drawing.Point(360, 72);
+			this.bttnTeamcolourPath.Name = "bttnTeamcolourPath";
+			this.bttnTeamcolourPath.Size = new System.Drawing.Size(56, 23);
+			this.bttnTeamcolourPath.TabIndex = 9;
+			this.bttnTeamcolourPath.Text = "Select";
+			this.bttnTeamcolourPath.Click += new System.EventHandler(this.bttnTeamcolourPath_Click);
+			// 
+			// txtTeamcolourPath
+			// 
+			this.txtTeamcolourPath.Cursor = System.Windows.Forms.Cursors.Default;
+			this.txtTeamcolourPath.Location = new System.Drawing.Point(112, 72);
+			this.txtTeamcolourPath.Name = "txtTeamcolourPath";
+			this.txtTeamcolourPath.Size = new System.Drawing.Size(240, 20);
+			this.txtTeamcolourPath.TabIndex = 8;
+			this.txtTeamcolourPath.TabStop = false;
+			this.txtTeamcolourPath.Text = "";
+			this.txtTeamcolourPath.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textbox_KeyDown);
+			this.txtTeamcolourPath.TextChanged += new System.EventHandler(this.textbox_TextChanged);
+			this.txtTeamcolourPath.Leave += new System.EventHandler(this.textbox_Leave);
+			// 
+			// label1
+			// 
+			this.label1.Location = new System.Drawing.Point(8, 40);
+			this.label1.Name = "label1";
+			this.label1.TabIndex = 7;
+			this.label1.Text = "Texture Path:";
+			this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+			// 
+			// bttnTexturePath
+			// 
+			this.bttnTexturePath.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnTexturePath.Location = new System.Drawing.Point(360, 40);
+			this.bttnTexturePath.Name = "bttnTexturePath";
+			this.bttnTexturePath.Size = new System.Drawing.Size(56, 23);
+			this.bttnTexturePath.TabIndex = 6;
+			this.bttnTexturePath.Text = "Select";
+			this.bttnTexturePath.Click += new System.EventHandler(this.bttnTexturePath_Click);
+			// 
+			// txtTexturePath
+			// 
+			this.txtTexturePath.Cursor = System.Windows.Forms.Cursors.Default;
+			this.txtTexturePath.Location = new System.Drawing.Point(112, 40);
+			this.txtTexturePath.Name = "txtTexturePath";
+			this.txtTexturePath.Size = new System.Drawing.Size(240, 20);
+			this.txtTexturePath.TabIndex = 5;
+			this.txtTexturePath.TabStop = false;
+			this.txtTexturePath.Text = "";
+			this.txtTexturePath.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textbox_KeyDown);
+			this.txtTexturePath.TextChanged += new System.EventHandler(this.textbox_TextChanged);
+			this.txtTexturePath.Leave += new System.EventHandler(this.textbox_Leave);
+			// 
+			// tabPage2
+			// 
+			this.tabPage2.Controls.Add(this.bttnTrim2);
+			this.tabPage2.Controls.Add(this.pbBadge);
+			this.tabPage2.Controls.Add(this.lblBadge);
+			this.tabPage2.Controls.Add(this.lblBanner);
+			this.tabPage2.Controls.Add(this.bttnImportTeamcolour);
+			this.tabPage2.Controls.Add(this.pbBanner);
+			this.tabPage2.Controls.Add(this.bttnWeapon);
+			this.tabPage2.Controls.Add(this.bttnPrimary);
+			this.tabPage2.Controls.Add(this.bttnSecondary);
+			this.tabPage2.Controls.Add(this.bttnTrim);
+			this.tabPage2.Location = new System.Drawing.Point(4, 22);
+			this.tabPage2.Name = "tabPage2";
+			this.tabPage2.Size = new System.Drawing.Size(424, 198);
+			this.tabPage2.TabIndex = 1;
+			this.tabPage2.Text = "Team Colouring Settings";
+			// 
+			// Options
+			// 
+			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+			this.ClientSize = new System.Drawing.Size(450, 270);
+			this.ControlBox = false;
+			this.Controls.Add(this.tabControl1);
+			this.Controls.Add(this.bttnSave);
+			this.Controls.Add(this.bttnCancel);
+			this.Controls.Add(this.bttnOK);
+			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+			this.MinimizeBox = false;
+			this.Name = "Options";
+			this.ShowInTaskbar = false;
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+			this.Text = "Options";
+			this.tabControl1.ResumeLayout(false);
+			this.tabPage1.ResumeLayout(false);
+			this.tabPage2.ResumeLayout(false);
+			this.ResumeLayout(false);
+
+		}
+		#endregion
+
+		private void bttnDoWPath_Click(object sender, System.EventArgs e)
+		{
+			setPath(txtDoWPath);
+		}
+
+		private void bttnOK_Click(object sender, System.EventArgs e)
+		{
+			setPrefs();
+
+			this.Close();
+		}
+
+		private void bttnCancel_Click(object sender, System.EventArgs e)
+		{
+			this.Close();
+		}
+
+		private void bttnPrimary_Click(object sender, System.EventArgs e)
+		{
+			colorDialog.Color = bttnPrimary.BackColor;
+			DialogResult dr = colorDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetButtonColour(bttnPrimary, colorDialog.Color);
+			}
+		}
+
+		private void bttnSecondary_Click(object sender, System.EventArgs e)
+		{
+			colorDialog.Color = bttnSecondary.BackColor;
+			DialogResult dr = colorDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetButtonColour(bttnSecondary, colorDialog.Color);
+			}		
+		}
+
+		private void bttnTrim_Click(object sender, System.EventArgs e)
+		{
+			colorDialog.Color = bttnTrim.BackColor;
+			DialogResult dr = colorDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetButtonColour(bttnTrim, colorDialog.Color);
+			}
+		}
+
+		private void bttnWeapon_Click(object sender, System.EventArgs e)
+		{
+			colorDialog.Color = bttnWeapon.BackColor;
+			DialogResult dr = colorDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetButtonColour(bttnWeapon, colorDialog.Color);
+			}
+		}
+
+		private void bttnTrim2_Click(object sender, System.EventArgs e)
+		{
+			colorDialog.Color = bttnTrim2.BackColor;
+			DialogResult dr = colorDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetButtonColour(bttnTrim2, colorDialog.Color);
+			}
+		}
+
+		private void SetButtonColour(Button bttn, Color colour)
+		{
+			if (bttn.BackColor!=colour)
+			{
+				bttn.BackColor = colour;
+
+				if (colour.R<128 && colour.G<128 && colour.B<128)
+				{
+					bttn.ForeColor = Color.White;
+				}
+				else
+				{
+					bttn.ForeColor = Color.Black;
+				}
+
+				if (bttn == bttnSecondary)
+				{
+					pbBadge.BackColor = colour;
+					SetPictureBoxImage(pbBadge, null);
+					pbBanner.BackColor = colour;
+					SetPictureBoxImage(pbBanner, null);
+				}
+
+				setSaveEnabled();
+			}
+		}
+
+		private void pbBadge_Click(object sender, System.EventArgs e)
+		{
+			openFileDialog.InitialDirectory = txtDoWPath.Text.TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"badges"+IBBoard.Constants.DirectoryChar;
+			openFileDialog.Filter = "Badge Image (*.tga)|*.tga";
+			openFileDialog.FileName = "";
+			openFileDialog.CheckFileExists = true;
+			DialogResult dr = openFileDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetPictureBoxImage(pbBadge, openFileDialog.FileName);
+			}
+		}
+
+		private void pbBanner_Click(object sender, System.EventArgs e)
+		{
+			openFileDialog.InitialDirectory = txtDoWPath.Text.TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"banners"+IBBoard.Constants.DirectoryChar;
+			openFileDialog.Filter = "Banner Image (*.tga)|*.tga";
+			openFileDialog.FileName = "";
+			openFileDialog.CheckFileExists = true;
+			DialogResult dr = openFileDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				SetPictureBoxImage(pbBanner, openFileDialog.FileName);
+			}
+		}
+
+		private bool SetPictureBoxImage(PictureBox box, string filepath)
+		{
+			if (filepath == "")
+			{
+				box.Image = null;
+				box.Tag = "";
+				return true;
+			}
+
+			if (filepath==null)
+			{
+				filepath = (string)box.Tag;
+			}
+
+			bool success = false;
+
+			if (File.Exists(filepath))
+			{
+				try
+				{
+					Bitmap bmp = IBBoard.Graphics.ImageConverter.TGAtoBMP(filepath, box.BackColor);
+
+					if (bmp.Width!=64)
+					{
+						MessageBox.Show(this, "The image you selected was not the correct width. Badges and banners must be 64px wide.", "Invalid image");
+					}
+					else if (box == pbBadge && bmp.Height!=64)
+					{
+						MessageBox.Show(this, "The image you selected was not the correct size. Badges must be 64px high.", "Invalid image");
+					}
+					else if (box == pbBanner && bmp.Height!=96)
+					{
+						MessageBox.Show(this, "The image you selected was not the correct size. Banners must be 96px high.", "Invalid image");
+					}
+					else
+					{
+						box.Image = bmp;
+						box.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
+						box.Tag = filepath;
+						success = true;
+					}
+				}
+				catch(InvalidOperationException ex)
+				{
+					if (box==pbBanner)
+					{
+						MessageBox.Show(this, ex.Message, "Invalid banner");
+					}
+					else
+					{
+						MessageBox.Show(this, ex.Message, "Invalid badge");
+					}
+				}
+			}
+			else
+			{
+				box.Image = null;
+				box.Tag = "";
+
+			}
+
+			setSaveEnabled();
+
+			return success;
+		}
+
+		private void bttnImportTeamcolour_Click(object sender, System.EventArgs e)
+		{
+			openFileDialog.Filter = "Team Colour files (*.teamcolour)|*.teamcolour";
+			openFileDialog.FileName = "";
+			openFileDialog.InitialDirectory = txtTeamcolourPath.Text;
+			openFileDialog.CheckFileExists = true;
+			DialogResult dr = openFileDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				string error = "";
+				string temp = "";
+
+				FileInfo file = new FileInfo(openFileDialog.FileName);
+				TextReader tr = file.OpenText();
+				string content = tr.ReadToEnd();
+				tr.Close();
+				Match match = Regex.Match(content, "\"BADGES:([\\w\\.]+)\"");
+
+				if (match.Success)
+				{
+					temp = txtDoWPath.Text.TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"badges"+IBBoard.Constants.DirectoryChar+match.Groups[1].Value;					
+					SetPictureBoxImage(pbBadge, temp);
+				}
+				else
+				{
+					SetPictureBoxImage(pbBadge, "");
+				}
+
+				match = Regex.Match(content, "\"BANNERS:([\\w\\.]+)\"");
+				if (match.Success)
+				{
+					temp = txtDoWPath.Text.ToString().TrimEnd(IBBoard.Constants.DirectoryChar)+IBBoard.Constants.DirectoryChar+"banners"+IBBoard.Constants.DirectoryChar+match.Groups[1].Value;
+					
+					SetPictureBoxImage(pbBanner, temp);
+				}
+				else
+				{
+					SetPictureBoxImage(pbBanner, "");
+				}
+
+				match = Regex.Match(content, "Primary =\\s+{\\s+b = ([12]?[0-9]?[0-9]),\\s+g = ([12]?[0-9]?[0-9]),\\s+r = ([12]?[0-9]?[0-9]),");
+				if (match.Success)
+				{
+					SetButtonColour(bttnPrimary, Color.FromArgb(byte.Parse(match.Groups[3].Value), byte.Parse(match.Groups[2].Value), byte.Parse(match.Groups[1].Value)));
+				}
+				else
+				{
+					error+= "\r\n* Primary";
+				}
+
+				match = Regex.Match(content, "Secondary =\\s+{\\s+b = ([12]?[0-9]?[0-9]),\\s+g = ([12]?[0-9]?[0-9]),\\s+r = ([12]?[0-9]?[0-9]),");
+				if (match.Success)
+				{
+					SetButtonColour(bttnSecondary, Color.FromArgb(byte.Parse(match.Groups[3].Value), byte.Parse(match.Groups[2].Value), byte.Parse(match.Groups[1].Value)));
+				}
+				else
+				{
+					error+= "\r\n* Secondary";
+				}
+				
+				match = Regex.Match(content, "Trim =\\s+{\\s+b = ([12]?[0-9]?[0-9]),\\s+g = ([12]?[0-9]?[0-9]),\\s+r = ([12]?[0-9]?[0-9]),");
+				if (match.Success)
+				{
+					SetButtonColour(bttnTrim, Color.FromArgb(byte.Parse(match.Groups[3].Value), byte.Parse(match.Groups[2].Value), byte.Parse(match.Groups[1].Value)));
+				}
+				else
+				{
+					error+= "\r\n* Trim";
+				}
+
+				match = Regex.Match(content, "Weapons =\\s+{\\s+b = ([12]?[0-9]?[0-9]),\\s+g = ([12]?[0-9]?[0-9]),\\s+r = ([12]?[0-9]?[0-9]),");
+				if (match.Success)
+				{
+					SetButtonColour(bttnWeapon, Color.FromArgb(byte.Parse(match.Groups[3].Value), byte.Parse(match.Groups[2].Value), byte.Parse(match.Groups[1].Value)));
+				}
+				else
+				{
+					error+= "\r\n* Weapon";
+				}
+
+				match = Regex.Match(content, "Eyes =\\s+{\\s+b = ([12]?[0-9]?[0-9]),\\s+g = ([12]?[0-9]?[0-9]),\\s+r = ([12]?[0-9]?[0-9]),");
+				if (match.Success)
+				{
+					SetButtonColour(bttnTrim2, Color.FromArgb(byte.Parse(match.Groups[3].Value), byte.Parse(match.Groups[2].Value), byte.Parse(match.Groups[1].Value)));
+				}
+				else
+				{
+					error+= "\r\n* Trim 2/Eye";
+				}
+
+				if (error!="")
+				{
+					MessageBox.Show(this, "Invalid .teamcolour file - Error loading:"+error, "Import error");
+				}
+			}
+		}
+
+		private void bttnSave_Click(object sender, System.EventArgs e)
+		{
+			setPrefs();
+			pref.Save();
+			bttnSave.Enabled = false;
+		}
+
+		private void textbox_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
+		{		
+			if (sender is TextBox)
+			{
+				if(e.KeyData == (Keys.Control|Keys.A) && e.Control)
+				{
+					((TextBox)sender).SelectAll();
+				}
+			}
+		}
+
+		private void setSaveEnabled()
+		{
+			if (bttnOK.Enabled && (!folderMatches(txtDoWPath.Text, "DoWPath")
+				|| !folderMatches(txtTexturePath.Text, "TexturePath")
+				|| !folderMatches(txtTeamcolourPath.Text, "TeamcolourPath")
+				|| modeChanged() || !coloursMatch(bttnPrimary, "Primary")
+				|| !coloursMatch(bttnSecondary, "Secondary") || !coloursMatch(bttnTrim, "Trim")
+				|| !coloursMatch(bttnTrim2, "Eyes") || !coloursMatch(bttnWeapon, "Weapon")
+				|| pbBadge.Tag.ToString()!=pref["BadgeName"].ToString()
+				|| pbBanner.Tag.ToString()!=pref["BannerName"].ToString()))
+			{
+				bttnSave.Enabled = true;
+			}
+			else
+			{
+				bttnSave.Enabled = pref.IsModified();
+			}
+		}
+
+		private void txtDoWPath_Leave(object sender, System.EventArgs e)
+		{
+			textbox_Leave(sender, e);
+
+			if (!foldersExist())
+			{
+				MessageBox.Show(this, "Could not find 'badges' and 'banners' folder in "+txtDoWPath.Text+"\r\nPlease check that it points to your Dawn of War/Dark Crusade installation folder", "Invalid path", MessageBoxButtons.OK, MessageBoxIcon.Error);
+			}
+		}
+		private void textbox_Leave(object sender, System.EventArgs e)
+		{
+			if (sender is TextBox)
+			{
+				TextBox tb = (TextBox)sender;
+				if (!tb.Text.EndsWith(Path.DirectorySeparatorChar.ToString()))
+				{
+					tb.Text = tb.Text + Path.DirectorySeparatorChar;
+				}
+			}
+		}
+
+		private bool foldersExist()
+		{
+			if (!txtDoWPath.Text.EndsWith(Path.DirectorySeparatorChar.ToString()))
+			{
+				return (Directory.Exists(txtDoWPath.Text+Path.DirectorySeparatorChar+"Badges") &&
+					    Directory.Exists(txtDoWPath.Text+Path.DirectorySeparatorChar+"Banners"));
+			}
+			else
+			{
+				return (Directory.Exists(txtDoWPath.Text+"Badges") &&
+					    Directory.Exists(txtDoWPath.Text+"Banners"));
+			}
+		}
+
+		private bool folderMatches(string path, string prefID)
+		{
+			if (!path.EndsWith(Path.DirectorySeparatorChar.ToString()))
+			{
+				return (path.ToLower()+Path.DirectorySeparatorChar == pref[prefID].ToString().ToLower());
+			}
+			else
+			{
+				return (path.ToLower() == pref[prefID].ToString().ToLower());
+			}
+		}
+
+		private bool coloursMatch(Button bttn, string colourName)
+		{
+			return (bttn.BackColor.R == (byte)pref[colourName+"Red"] && bttn.BackColor.G == (byte)pref[colourName+"Green"] && bttn.BackColor.B == (byte)pref[colourName+"Blue"]);
+		}
+
+		private void setPrefs()
+		{			
+			pref["DoWPath"] = txtDoWPath.Text;
+			pref["TeamcolourPath"] = txtTeamcolourPath.Text;
+			pref["TexturePath"] = txtTexturePath.Text;
+
+			pref["settingBasic"] = rbBasicMode.Checked;
+			
+			pref["PrimaryRed"] = bttnPrimary.BackColor.R;
+			pref["PrimaryGreen"] = bttnPrimary.BackColor.G;
+			pref["PrimaryBlue"] = bttnPrimary.BackColor.B;
+			pref["SecondaryRed"] = bttnSecondary.BackColor.R;
+			pref["SecondaryGreen"] = bttnSecondary.BackColor.G;
+			pref["SecondaryBlue"] = bttnSecondary.BackColor.B;
+			pref["TrimRed"] = bttnTrim.BackColor.R;
+			pref["TrimGreen"] = bttnTrim.BackColor.G;
+			pref["TrimBlue"] = bttnTrim.BackColor.B;
+			pref["WeaponRed"] = bttnWeapon.BackColor.R;
+			pref["WeaponGreen"] = bttnWeapon.BackColor.G;
+			pref["WeaponBlue"] = bttnWeapon.BackColor.B;
+			pref["EyesRed"] = bttnTrim2.BackColor.R;
+			pref["EyesGreen"] = bttnTrim2.BackColor.G;
+			pref["EyesBlue"] = bttnTrim2.BackColor.B;
+
+			pref["BadgeName"] = pbBadge.Tag.ToString();
+			pref["BannerName"] = pbBanner.Tag.ToString();
+		}
+
+		private void textbox_TextChanged(object sender, System.EventArgs e)
+		{
+			setOkayEnabled();
+			setSaveEnabled();		
+		}
+
+		private void bttnTexturePath_Click(object sender, System.EventArgs e)
+		{	
+			setPath(txtTexturePath);
+		}
+
+		private void bttnTeamcolourPath_Click(object sender, System.EventArgs e)
+		{		
+			setPath(txtTeamcolourPath);
+		}
+
+		private void setPath(TextBox textbox)
+		{
+			folderBrowserDialog.SelectedPath = textbox.Text;
+			DialogResult dr = folderBrowserDialog.ShowDialog(this);
+
+			if (dr==DialogResult.OK)
+			{
+				textbox.Text = folderBrowserDialog.SelectedPath + Path.DirectorySeparatorChar;
+			}	
+		}
+
+		private void setOkayEnabled()
+		{
+			bool enabled = true;
+
+			if (foldersExist())
+			{
+				txtDoWPath.ForeColor = SystemColors.WindowText;
+			}
+			else
+			{
+				enabled = false;
+				txtDoWPath.ForeColor = Color.Red;
+			}
+
+			if (Directory.Exists(txtTexturePath.Text))
+			{
+				txtTexturePath.ForeColor = SystemColors.WindowText;
+			}
+			else
+			{
+				enabled = false;
+				txtTexturePath.ForeColor = Color.Red;
+			}
+
+			if (Directory.Exists(txtTeamcolourPath.Text))
+			{
+				txtTeamcolourPath.ForeColor = SystemColors.WindowText;
+			}
+			else
+			{
+				enabled = false;
+				txtTeamcolourPath.ForeColor = Color.Red;
+			}
+
+			bttnOK.Enabled = enabled;
+		}
+
+		private bool modeChanged()
+		{
+			bool basicMode = (bool)pref["settingBasic"];
+			return ((rbAdvancedMode.Checked && basicMode) || (rbBasicMode.Checked && !basicMode));
+		}
+
+		private void rbMode_CheckedChanged(object sender, System.EventArgs e)
+		{
+			setSaveEnabled();
+		}
+	}
+}