# HG changeset patch # User IBBoard # Date 1313524905 -3600 # Node ID 53d79e1be712c5a47d1d011efd62d3f4655aed2c # Parent 314d90a059d80c9e43603219cd0c88a36ec5101b Re #354: Single-button Add Unit * Start creating new form diff -r 314d90a059d8 -r 53d79e1be712 FrmMain.cs --- a/FrmMain.cs Tue Aug 16 20:34:46 2011 +0100 +++ b/FrmMain.cs Tue Aug 16 21:01:45 2011 +0100 @@ -59,6 +59,7 @@ //public FailedUnitRequirementDelegate FailedUnitRequirementMethod; private FrmArmyTree armyTree; + private FrmNewUnitFromTree newUnitTree; private string loadedFilePath; private Dictionary unitWindows; @@ -184,6 +185,24 @@ armyTree.Location = new Point(this.DisplayRectangle.Width - armyTree.Width - 10, 10); } + private FrmNewUnitFromTree GetNewUnitTree() + { + if (newUnitTree == null || newUnitTree.IsDisposed) + { + CreateNewUnitTree(); + } + + return newUnitTree; + } + + private void CreateNewUnitTree() + { + newUnitTree = new FrmNewUnitFromTree(); + newUnitTree.MdiParent = this; + newUnitTree.StartPosition = FormStartPosition.Manual; + newUnitTree.Location = new Point(10, 10); + } + private void TranslateControls() { ControlTranslator.TranslateControls(Controls); @@ -957,6 +976,7 @@ miExportArmyAs.Enabled = false; DisableCategoryButtons(); GetArmyTree().Hide(); + GetNewUnitTree().Hide(); } private void SetNonNullArmyState(Army newArmy) @@ -967,6 +987,7 @@ miCloseArmy.Enabled = true; miExportArmyAs.Enabled = true; GetArmyTree().Show(); + GetNewUnitTree().Show(); } private void SetCategoryButtons(Category[] cats) diff -r 314d90a059d8 -r 53d79e1be712 FrmNewUnitFromTree.Designer.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FrmNewUnitFromTree.Designer.cs Tue Aug 16 21:01:45 2011 +0100 @@ -0,0 +1,60 @@ +namespace IBBoard.WarFoundry.GUI.WinForms +{ + partial class FrmNewUnitFromTree + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.unitTypeTree = new System.Windows.Forms.TreeView(); + this.SuspendLayout(); + // + // unitTypeTree + // + this.unitTypeTree.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.unitTypeTree.Location = new System.Drawing.Point(0, 0); + this.unitTypeTree.Name = "unitTypeTree"; + this.unitTypeTree.Size = new System.Drawing.Size(292, 267); + this.unitTypeTree.TabIndex = 0; + // + // FrmNewUnitFromTree + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 266); + this.Controls.Add(this.unitTypeTree); + this.Name = "FrmNewUnitFromTree"; + this.Text = "FrmNewUnitFromTree"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TreeView unitTypeTree; + } +} \ No newline at end of file diff -r 314d90a059d8 -r 53d79e1be712 FrmNewUnitFromTree.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FrmNewUnitFromTree.cs Tue Aug 16 21:01:45 2011 +0100 @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API; + +namespace IBBoard.WarFoundry.GUI.WinForms +{ + public partial class FrmNewUnitFromTree : Form + { + public FrmNewUnitFromTree() + { + InitializeComponent(); + WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(ArmyChanged); + } + + private void ArmyChanged(Army newArmy, Army oldArmy) + { + unitTypeTree.Nodes.Clear(); + + if (newArmy != null) + { + BuildTree(newArmy.Race); + } + } + + private void BuildTree(Race race) + { + foreach (Category cat in race.Categories) + { + UnitType[] unitTypes = race.GetUnitTypes(cat); + TreeNode[] unitNodes = new TreeNode[unitTypes.Length]; + + for (int i = 0; i < unitTypes.Length; i++) + { + UnitType unitType = unitTypes[i]; + TreeNode temp = new TreeNode(unitType.Name); + temp.Tag = unitType; + unitNodes[i] = temp; + } + + TreeNode catTemp = new TreeNode(cat.Name, unitNodes); + catTemp.Tag = cat; + unitTypeTree.Nodes.Add(catTemp); + catTemp.ExpandAll(); + } + } + } +} diff -r 314d90a059d8 -r 53d79e1be712 FrmNewUnitFromTree.resx --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FrmNewUnitFromTree.resx Tue Aug 16 21:01:45 2011 +0100 @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff -r 314d90a059d8 -r 53d79e1be712 IBBoard.WarFoundry.GUI.WinForms.csproj --- a/IBBoard.WarFoundry.GUI.WinForms.csproj Tue Aug 16 20:34:46 2011 +0100 +++ b/IBBoard.WarFoundry.GUI.WinForms.csproj Tue Aug 16 21:01:45 2011 +0100 @@ -150,6 +150,12 @@ Form + + Form + + + FrmNewUnitFromTree.cs + Form @@ -206,6 +212,9 @@ FrmNewUnitEquipment.cs Designer + + FrmNewUnitFromTree.cs + Designer FrmPreferences.cs