Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
view UI/StatColumnStyle.cs @ 153:fcd90498d9a2
Re #269: Handle multiple stat lines
* Improve rendering of stats
* Fix column widths
* Set width and height based on content
Also:
* Make FrmUnit title contain unit type as we're using it more now
Still needs more testing and fixing
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Wed, 26 May 2010 20:05:20 +0000 |
parents | e749b748e7ea |
children |
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);//TODO: make "name" a constrant 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); } } }