Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
view UI/StatColumnStyle.cs @ 78:431cc3ace26c
Fixes #187: Error when adding equipment with minNum > unit size
* Separate out methods to ensure that the percentages and numbers are kept correct and that they're not messed up when editing percentage equipment items
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 06 Oct 2009 13:39:50 +0000 |
parents | e04bea5b7b3d |
children | e749b748e7ea |
line wrap: on
line source
// This file (StatColumnStyle.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. // // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero 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.Text; using System.Windows.Forms; using IBBoard.WarFoundry.API.Objects; namespace IBBoard.WarFoundry.GUI.WinForms.UI { class StatColumnStyle : DataGridColumnStyle { protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight) { Object obj = GetColumnValueAtRow(source, rowNum); Rectangle rect = bounds; g.FillRectangle(backBrush, rect); if (obj is Stat) { Stat stat = (Stat) obj; StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = (stat.ParentSlotName == "Name" ? StringAlignment.Near : StringAlignment.Center); g.DrawString(stat.SlotValueString, GetFont(), foreBrush, rect, stringFormat); } else { g.DrawString(NullText, GetFont(), foreBrush, rect); } } private Font GetFont() { return DataGridTableStyle.DataGrid.Font; } protected override void Abort(int rowNum) { // Do nothing - we don't allow editing } protected override bool Commit(CurrencyManager dataSource, int rowNum) { // Do nothing - we don't allow editing - but pretend we did return true; } protected override void Edit(CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible) { // Do nothing - we don't allow editing } protected override int GetMinimumHeight() { return GetFont().Height; } protected override int GetPreferredHeight(Graphics g, object value) { return GetFont().Height; } protected override Size GetPreferredSize(Graphics g, object value) { Size size = new Size(); if (value is Stat) { SizeF stringSize = g.MeasureString(((Stat) value).SlotValueString, GetFont()); size.Height = (int) Math.Ceiling(stringSize.Height); size.Width = (int) Math.Ceiling(stringSize.Width); } return size; } protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum) { Paint(g, bounds, source, rowNum, false); } protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, bool alignToRight) { Paint(g, bounds, source, rowNum, SystemBrushes.Window, SystemBrushes.WindowText, alignToRight); } } }