pascalabcnet/Utils/NodesGeneratorNew/Scintilla/Sources/ScintillaNET/HotspotStyle.cs
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

219 lines
4.9 KiB
C#

#region Using Directives
using System;
using System.ComponentModel;
using System.Drawing;
#endregion Using Directives
namespace ScintillaNET
{
[TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
public class HotspotStyle : TopLevelHelper
{
#region Fields
private bool _useActiveForeColor = true;
private bool _useActiveBackColor = true;
#endregion Fields
#region Methods
private void ResetActiveBackColor()
{
ActiveBackColor = SystemColors.Window;
}
private void ResetActiveForeColor()
{
ActiveForeColor = SystemColors.HotTrack;
}
private void ResetActiveUnderline()
{
ActiveUnderline = true;
}
private void ResetSingleLine()
{
SingleLine = true;
}
private void ResetUseActiveBackColor()
{
UseActiveBackColor = true;
}
private void ResetUseActiveForeColor()
{
UseActiveForeColor = true;
}
internal bool ShouldSerialize()
{
return ShouldSerializeActiveBackColor() ||
ShouldSerializeActiveForeColor() ||
ShouldSerializeActiveUnderline() ||
ShouldSerializeSingleLine() ||
ShouldSerializeUseActiveBackColor() ||
ShouldSerializeUseActiveForeColor();
}
private bool ShouldSerializeActiveBackColor()
{
return ActiveBackColor != SystemColors.Window;
}
private bool ShouldSerializeActiveForeColor()
{
return ActiveForeColor != SystemColors.HotTrack;
}
private bool ShouldSerializeActiveUnderline()
{
return !ActiveUnderline;
}
private bool ShouldSerializeSingleLine()
{
return !SingleLine;
}
private bool ShouldSerializeUseActiveBackColor()
{
return !UseActiveBackColor;
}
private bool ShouldSerializeUseActiveForeColor()
{
return !UseActiveForeColor;
}
#endregion Methods
#region Properties
public Color ActiveBackColor
{
get
{
if (Scintilla.ColorBag.ContainsKey("HotspotStyle.ActiveBackColor"))
return Scintilla.ColorBag["HotspotStyle.ActiveBackColor"];
return Utilities.RgbToColor(NativeScintilla.GetHotspotActiveBack());
}
set
{
if (value.IsKnownColor)
Scintilla.ColorBag["HotspotStyle.ActiveBackColor"] = value;
else
Scintilla.ColorBag.Remove("HotspotStyle.ActiveBackColor");
NativeScintilla.SetHotspotActiveBack(_useActiveBackColor, Utilities.ColorToRgb(value));
}
}
public Color ActiveForeColor
{
get
{
if (Scintilla.ColorBag.ContainsKey("HotspotStyle.ActiveForeColor"))
return Scintilla.ColorBag["HotspotStyle.ActiveForeColor"];
return Utilities.RgbToColor(NativeScintilla.GetHotspotActiveFore());
}
set
{
if (value.IsKnownColor)
Scintilla.ColorBag["HotspotStyle.ActiveForeColor"] = value;
else
Scintilla.ColorBag.Remove("HotspotStyle.ActiveForeColor");
NativeScintilla.SetHotspotActiveFore(_useActiveForeColor, Utilities.ColorToRgb(value));
}
}
public bool ActiveUnderline
{
get
{
return NativeScintilla.GetHotspotActiveUnderline();
}
set
{
NativeScintilla.SetHotspotActiveUnderline(value);
}
}
public bool SingleLine
{
get
{
return NativeScintilla.GetHotspotSingleLine();
}
set
{
NativeScintilla.SetHotspotSingleLine(value);
}
}
public bool UseActiveBackColor
{
get
{
return _useActiveBackColor;
}
set
{
_useActiveBackColor = value;
}
}
public bool UseActiveForeColor
{
get
{
return _useActiveForeColor;
}
set
{
_useActiveForeColor = value;
}
}
#endregion Properties
#region Constructors
internal HotspotStyle(Scintilla scintilla) : base(scintilla)
{
ActiveForeColor = SystemColors.HotTrack;
ActiveBackColor = SystemColors.Window;
}
#endregion Constructors
}
}