Files
renderdoc/renderdocui/Controls/TreeListView/TreeListOptions.cs
T
baldurk c38affcded Initial commit of existing code.
* All renderdoc code up to this point was written by me, history is available by request
2014-05-02 08:33:01 +01:00

335 lines
8.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing;
using System.Windows.Forms;
// Taken from http://www.codeproject.com/Articles/23746/TreeView-with-Columns with minor tweaks
// and fixes for my purposes.
namespace TreelistView.TreeList
{
[TypeConverterAttribute(typeof(OptionsSettingTypeConverter))]
public class TextFormatting
{
ContentAlignment m_alignment = ContentAlignment.MiddleLeft;
Color m_foreColor = SystemColors.ControlText;
Color m_backColor = Color.Transparent;
Padding m_padding = new Padding(0,0,0,0);
public TextFormatFlags GetFormattingFlags()
{
TextFormatFlags flags = 0;
switch (TextAlignment)
{
case ContentAlignment.TopLeft:
flags = TextFormatFlags.Top | TextFormatFlags.Left;
break;
case ContentAlignment.TopCenter:
flags = TextFormatFlags.Top | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.TopRight:
flags = TextFormatFlags.Top | TextFormatFlags.Right;
break;
case ContentAlignment.MiddleLeft:
flags = TextFormatFlags.VerticalCenter | TextFormatFlags.Left;
break;
case ContentAlignment.MiddleCenter:
flags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.MiddleRight:
flags = TextFormatFlags.VerticalCenter | TextFormatFlags.Right;
break;
case ContentAlignment.BottomLeft:
flags = TextFormatFlags.Bottom | TextFormatFlags.Left;
break;
case ContentAlignment.BottomCenter:
flags = TextFormatFlags.Bottom | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.BottomRight:
flags = TextFormatFlags.Bottom | TextFormatFlags.Right;
break;
}
return flags;
}
[DefaultValue(typeof(Padding), "0,0,0,0")]
public Padding Padding
{
get { return m_padding; }
set { m_padding = value; }
}
[DefaultValue(typeof(ContentAlignment), "MiddleLeft")]
public ContentAlignment TextAlignment
{
get { return m_alignment; }
set { m_alignment = value; }
}
[DefaultValue(typeof(Color), "ControlText")]
public Color ForeColor
{
get { return m_foreColor; }
set { m_foreColor = value; }
}
[DefaultValue(typeof(Color), "Transparent")]
public Color BackColor
{
get { return m_backColor; }
set { m_backColor = value; }
}
public TextFormatting()
{
}
public TextFormatting(TextFormatting aCopy)
{
m_alignment = aCopy.m_alignment;
m_foreColor = aCopy.m_foreColor;
m_backColor = aCopy.m_backColor;
m_padding = aCopy.m_padding;
}
}
[TypeConverterAttribute(typeof(OptionsSettingTypeConverter))]
public class ViewSetting
{
TreeListView m_owner;
BorderStyle m_borderStyle = BorderStyle.None;
int m_indent = 16;
bool m_showLine = true;
bool m_showPlusMinus = true;
bool m_showGridLines = true;
bool m_rearrangeableColumns = false;
bool m_hoverHand = true;
[Category("Behavior")]
[DefaultValue(typeof(int), "16")]
public int Indent
{
get { return m_indent; }
set
{
m_indent = value;
m_owner.Invalidate();
}
}
[Category("Behavior")]
[DefaultValue(typeof(bool), "True")]
public bool ShowLine
{
get { return m_showLine; }
set
{
m_showLine = value;
m_owner.Invalidate();
}
}
[Category("Behavior")]
[DefaultValue(typeof(bool), "True")]
public bool ShowPlusMinus
{
get { return m_showPlusMinus; }
set
{
m_showPlusMinus = value;
m_owner.Invalidate();
}
}
[Category("Behavior")]
[DefaultValue(typeof(bool), "True")]
public bool ShowGridLines
{
get { return m_showGridLines; }
set
{
m_showGridLines = value;
m_owner.Invalidate();
}
}
[Category("Behavior")]
[DefaultValue(typeof(bool), "False")]
public bool UserRearrangeableColumns
{
get { return m_rearrangeableColumns; }
set
{
m_rearrangeableColumns = value;
}
}
[Category("Behavior")]
[DefaultValue(typeof(bool), "True")]
public bool HoverHandTreeColumn
{
get { return m_hoverHand; }
set
{
m_hoverHand = value;
}
}
[Category("Appearance")]
[DefaultValue(typeof(BorderStyle), "None")]
public BorderStyle BorderStyle
{
get { return m_borderStyle; }
set
{
if (m_borderStyle != value)
{
m_borderStyle = value;
m_owner.internalUpdateStyles();
m_owner.Invalidate();
}
}
}
public ViewSetting(TreeListView owner)
{
m_owner = owner;
}
}
[TypeConverterAttribute(typeof(OptionsSettingTypeConverter))]
public class CollumnSetting
{
bool m_FreezeWhileResizing = false;
int m_leftMargin = 5;
int m_headerHeight = 20;
TreeListView m_owner;
[DefaultValue(false)]
public bool FreezeWhileResizing
{
get { return m_FreezeWhileResizing; }
set
{
m_FreezeWhileResizing = value;
}
}
[DefaultValue(5)]
public int LeftMargin
{
get { return m_leftMargin; }
set
{
m_leftMargin = value;
m_owner.Columns.RecalcVisibleColumsRect();
m_owner.Invalidate();
}
}
[DefaultValue(20)]
public int HeaderHeight
{
get { return m_headerHeight; }
set
{
m_headerHeight = value;
m_owner.Columns.RecalcVisibleColumsRect();
m_owner.Invalidate();
}
}
public CollumnSetting(TreeListView owner)
{
m_owner = owner;
}
}
[TypeConverterAttribute(typeof(OptionsSettingTypeConverter))]
public class RowSetting
{
TreeListView m_owner;
bool m_showHeader = true;
bool m_hoverHighlight = false;
int m_headerWidth = 15;
int m_itemHeight = 16;
[DefaultValue(true)]
public bool ShowHeader
{
get { return m_showHeader; }
set
{
if (m_showHeader == value)
return;
m_showHeader = value;
m_owner.Columns.RecalcVisibleColumsRect();
m_owner.Invalidate();
}
}
[DefaultValue(false)]
public bool HoverHighlight
{
get { return m_hoverHighlight; }
set
{
if (m_hoverHighlight == value)
return;
m_hoverHighlight = value;
m_owner.Invalidate();
}
}
[DefaultValue(15)]
public int HeaderWidth
{
get { return m_headerWidth; }
set
{
if (m_headerWidth == value)
return;
m_headerWidth = value;
m_owner.Columns.RecalcVisibleColumsRect();
m_owner.Invalidate();
}
}
[Category("Behavior")]
[DefaultValue(typeof(int), "16")]
public int ItemHeight
{
get { return m_itemHeight; }
set
{
m_itemHeight = value;
m_owner.Invalidate();
}
}
public RowSetting(TreeListView owner)
{
m_owner = owner;
}
}
class OptionsSettingTypeConverter : ExpandableObjectConverter
{
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(ViewSetting))
return true;
if (destinationType == typeof(RowSetting))
return true;
if (destinationType == typeof(CollumnSetting))
return true;
if (destinationType == typeof(TextFormatting))
return true;
return base.CanConvertTo(context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (destinationType == typeof(string) && value.GetType() == typeof(ViewSetting))
return "(View Options)";
if (destinationType == typeof(string) && value.GetType() == typeof(RowSetting))
return "(Row Header Options)";
if (destinationType == typeof(string) && value.GetType() == typeof(CollumnSetting))
return "(Columns Options)";
if (destinationType == typeof(string) && value.GetType() == typeof(TextFormatting))
return "(Formatting)";
return base.ConvertTo(context, culture, value, destinationType);
}
}
}