# HG changeset patch # User IBBoard # Date 1274990467 0 # Node ID 24d0cfaa95da8888f3b4c6f022c49334101b051b # Parent fcd90498d9a2af9daa73395902ec831a904d2983 Re #269: Handle multiple stat lines * Add debug logging to work out what was going on * Migrate to using a FlowLayoutPanel Previous problem fixed - test data file had stats override, which stopped multiple stat lines showing TODO: Reduce the width of the stats a bit so that we only get vertical scrollbars diff -r fcd90498d9a2 -r 24d0cfaa95da FrmUnit.cs --- a/FrmUnit.cs Wed May 26 20:05:20 2010 +0000 +++ b/FrmUnit.cs Thu May 27 20:01:07 2010 +0000 @@ -17,6 +17,7 @@ using IBBoard.WarFoundry.API.Objects; using IBBoard.WarFoundry.GUI.WinForms.UI; using IBBoard.WarFoundry.GUI.WinForms.Util; +using log4net; namespace IBBoard.WarFoundry.GUI.WinForms { @@ -25,6 +26,7 @@ /// public class FrmUnit : IBBoard.Windows.Forms.IBBForm { + private static readonly ILog log = LogManager.GetLogger(typeof(FrmUnit)); private static readonly int COLUMN_WIDTH = 40; private static readonly int BORDER_WIDTH = 1; private Unit unit; @@ -45,7 +47,7 @@ private TextBox notes; private ListBox abilitiesList; private IBBLabel lblAbilities; - private Panel statsPanel; + private FlowLayoutPanel statsPanel; /// /// Required designer variable. /// @@ -107,6 +109,7 @@ Stat[][] stats = unit.UnitStatsArraysWithName; string[] statsIDs = unit.UnitStatsArrayIDs; int statsCount = stats.Length; + log.DebugFormat("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount); for (int i = 0; i < statsCount; i++) { @@ -114,8 +117,9 @@ DataTable dt = (DataTable)statsGrid.DataSource; DataRow dr = dt.NewRow(); dr.ItemArray = stats[i]; + log.DebugFormat("Add row to data table for {0}", statsIDs[i]); dt.Rows.Add(dr); - statsGrid.SelectedCells[0].Selected = false; + statsGrid.ClearSelection(); } } @@ -138,6 +142,7 @@ private DataGridView CreateDataGridView(string statsID) { + log.DebugFormat("Create DataGridView for stats ID {0}", statsID); SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID(statsID); StatSlot[] sysStatSlots = sysStats.StatSlots; StatSlot[] statsWithName = new StatSlot[sysStatSlots.Length + 1]; @@ -170,12 +175,14 @@ private static DataColumn CreateDataColumn(string slotName) { + log.DebugFormat("Create column {0}", slotName); DataColumn tempCol = new DataColumn(slotName, typeof(Stat)); return tempCol; } public DataGridView CreateDataGridView() { + log.Debug("Create DataGridView widget"); DataGridView statsGrid = new DataGridView(); statsGrid.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); @@ -207,6 +214,7 @@ { DataGridViewRowCollection rows = statsGrid.Rows; statsGrid.Height = statsGrid.Columns[0].HeaderCell.Size.Height + (rows.Count * rows[0].Height); + log.DebugFormat("Set height to {0} for grid of {1} rows", statsGrid.Height, rows.Count); } private void SetWeapons() @@ -271,7 +279,7 @@ this.notes = new System.Windows.Forms.TextBox(); this.abilitiesList = new System.Windows.Forms.ListBox(); this.lblAbilities = new IBBoard.Windows.Forms.IBBLabel(); - this.statsPanel = new System.Windows.Forms.Panel(); + this.statsPanel = new System.Windows.Forms.FlowLayoutPanel(); ((System.ComponentModel.ISupportInitialize)(this.unitSize)).BeginInit(); this.SuspendLayout(); // @@ -422,6 +430,8 @@ // // statsPanel // + this.statsPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.statsPanel.AutoScroll = true; this.statsPanel.Location = new System.Drawing.Point(8, 35); this.statsPanel.Name = "statsPanel";