Mercurial > repos > RelicTools > TextureTool
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(); + } + } +}