New weak event rooted event.

Fixed color theme changing in 3d view.
Fixe bed shape and size changing on printer change.
This commit is contained in:
larsbrubaker 2014-08-08 10:25:44 -07:00
parent 10306b3d31
commit bbca065e18
19 changed files with 214 additions and 140 deletions

View file

@ -309,7 +309,7 @@ namespace MatterHackers.MatterControl.ContactForm
}
}
public class ContactFormWindow : SystemWindow
public class ContactFormWindow : SystemWindow, IReceiveRootedWeakEvent
{
static ContactFormWindow contactFormWindow;
static bool contactFormIsOpen;
@ -349,25 +349,23 @@ namespace MatterHackers.MatterControl.ContactForm
MinimumSize = new Vector2(500, 550);
}
event EventHandler unregisterEvents;
private void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(Instance_ThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
contactFormWidget.Closed += (sender, e) => { Close(); };
}
public override void OnClosed(EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
if (unregisterEvents != null)
switch (eventType)
{
unregisterEvents(this, null);
}
base.OnClosed(e);
}
case "ThemeChanged":
this.Invalidate();
break;
void Instance_ThemeChanged(object sender, EventArgs e)
{
Invalidate();
default:
throw new NotImplementedException();
}
}
}
}

View file

@ -17,7 +17,7 @@ using MatterHackers.MatterControl.PrinterControls.PrinterConnections;
namespace MatterHackers.MatterControl
{
public class ActionBarPlus : FlowLayoutWidget
public class ActionBarPlus : FlowLayoutWidget, IReceiveRootedWeakEvent
{
QueueDataView queueDataView;
@ -41,7 +41,21 @@ namespace MatterHackers.MatterControl
this.Padding = new BorderDouble(bottom: 6);
// Add Handlers
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
public override void OnClosed(EventArgs e)
@ -52,12 +66,6 @@ namespace MatterHackers.MatterControl
}
base.OnClosed(e);
}
private void onThemeChanged(object sender, EventArgs e)
{
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.Invalidate();
}
}
class MessageActionRow : ActionRowBase

View file

@ -14,7 +14,7 @@ using MatterHackers.MatterControl.PrinterCommunication;
namespace MatterHackers.MatterControl.ActionBar
{
class PrintActionRow : ActionRowBase
class PrintActionRow : ActionRowBase, IReceiveRootedWeakEvent
{
Stopwatch timeSincePrintStarted = new Stopwatch();
@ -148,7 +148,7 @@ namespace MatterHackers.MatterControl.ActionBar
cancelConnectButton.Click += (sender, e) => { UiThread.RunOnIdle(CancelConnectionButton_Click); };
reprintButton.Click += new ButtonBase.ButtonEventHandler(onReprintButton_Click);
doneWithCurrentPartButton.Click += new ButtonBase.ButtonEventHandler(onDoneWithCurrentPartButton_Click);
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public override void OnClosed(EventArgs e)
@ -160,9 +160,17 @@ namespace MatterHackers.MatterControl.ActionBar
base.OnClosed(e);
}
private void onThemeChanged(object sender, EventArgs e)
{
this.Invalidate();
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
void onAddButton_Click(object sender, MouseEventArgs mouseEvent)

View file

@ -35,7 +35,7 @@ using MatterHackers.MatterControl.PrinterCommunication;
namespace MatterHackers.MatterControl.ActionBar
{
class TemperatureWidgetBase : GuiWidget
class TemperatureWidgetBase : GuiWidget, IReceiveRootedWeakEvent
{
protected TextWidget indicatorTextWidget;
protected TextWidget labelTextWidget;
@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl.ActionBar
this.AddChild(container);
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
this.MouseEnterBounds += onEnterBounds;
this.MouseLeaveBounds += onLeaveBounds;
@ -133,10 +133,18 @@ namespace MatterHackers.MatterControl.ActionBar
base.OnClosed(e);
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
this.indicatorTextWidget.TextColor = ActiveTheme.Instance.PrimaryAccentColor;
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
void onEnterBounds(Object sender, EventArgs e)

View file

@ -50,7 +50,7 @@ using MatterHackers.Localizations;
namespace MatterHackers.MatterControl
{
public class ApplicationWidget : GuiWidget
public class ApplicationWidget : GuiWidget, IReceiveRootedWeakEvent
{
static ApplicationWidget globalInstance;
public RootedObjectEventHandler ReloadAdvancedControlsPanelTrigger = new RootedObjectEventHandler();
@ -66,7 +66,20 @@ namespace MatterHackers.MatterControl
public ApplicationWidget()
{
Name = "MainSlidePanel";
ActiveTheme.Instance.ThemeChanged.RegisterEvent(ReloadAll, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
ReloadAll(null, null);
break;
default:
throw new NotImplementedException();
}
}
WidescreenPanel widescreenPanel;

View file

@ -769,7 +769,6 @@ namespace MatterHackers.MatterControl
event EventHandler unregisterEvents;
private void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.EnableChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
}
@ -780,13 +779,6 @@ namespace MatterHackers.MatterControl
this.Invalidate();
}
private void onThemeChanged(object sender, EventArgs e)
{
//this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
// SetVisibleControls();
//this.Invalidate();
}
public delegate void EnableCloudMonitor(object state);
public static EnableCloudMonitor enableCloudMonitorFunction = null;
void enableCloudMonitor_Click(object sender, MouseEventArgs mouseEvent)

View file

@ -53,7 +53,7 @@ namespace MatterHackers.MatterControl
private int defaultThemeIndex = 1;
private int activeThemeIndex = -1;
public RootedObjectEventHandler ThemeChanged = new RootedObjectEventHandler();
public RootedObjectWeakEventHandler ThemeChanged = new RootedObjectWeakEventHandler();
public List<Theme> AvailableThemes
{

View file

@ -45,7 +45,7 @@ using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl
{
public class PartThumbnailWidget : ClickWidget
public class PartThumbnailWidget : ClickWidget, IReceiveRootedWeakEvent
{
static BackgroundWorker createThumbnailWorker = null;
@ -131,7 +131,7 @@ namespace MatterHackers.MatterControl
this.Click += new ButtonEventHandler(OnMouseClick);
this.MouseEnterBounds += new EventHandler(onEnter);
this.MouseLeaveBounds += new EventHandler(onExit);
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
void item_FileHasChanged(object sender, EventArgs e)
@ -326,17 +326,25 @@ namespace MatterHackers.MatterControl
createThumbnailWorker = null;
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
//Set background color to new theme
this.normalBackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
switch (eventType)
{
case "ThemeChanged":
//Set background color to new theme
this.normalBackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
//Regenerate thumbnails
// The thumbnail color is currently white and does not change with this change.
// If we eventually change the thumbnail color with the theme we will need to change this.
//this.thumbNailHasBeenRequested = false;
this.Invalidate();
//Regenerate thumbnails
// The thumbnail color is currently white and does not change with this change.
// If we eventually change the thumbnail color with the theme we will need to change this.
//this.thumbNailHasBeenRequested = false;
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
private void OnMouseClick(object sender, MouseEventArgs e)

View file

@ -40,7 +40,7 @@ using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.CreatorPlugins
{
public class PluginChooserWindow : SystemWindow
public class PluginChooserWindow : SystemWindow, IReceiveRootedWeakEvent
{
protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
protected TextImageButtonFactory unlockButtonFactory = new TextImageButtonFactory();
@ -66,13 +66,20 @@ namespace MatterHackers.MatterControl.CreatorPlugins
event EventHandler unregisterEvents;
protected void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(Instance_ThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
protected void Instance_ThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
UiThread.RunOnIdle(Reload);
switch (eventType)
{
case "ThemeChanged":
UiThread.RunOnIdle(Reload);
break;
default:
throw new NotImplementedException();
}
}
public void TriggerReload(object sender, EventArgs e)

View file

@ -11,7 +11,7 @@ using MatterHackers.MatterControl.PrinterCommunication;
namespace MatterHackers.MatterControl
{
public class PrintProgressBar : GuiWidget
public class PrintProgressBar : GuiWidget, IReceiveRootedWeakEvent
{
double currentPercent = 0;
Stopwatch timeSinceLastUpdate = new Stopwatch();
@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl
PrinterConnectionAndCommunication.Instance.WroteLine.RegisterEvent(Instance_WroteLine, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.ActivePrintItemChanged.RegisterEvent(Instance_PrintItemChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(Instance_PrintItemChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public override void OnClosed(EventArgs e)
@ -80,13 +80,20 @@ namespace MatterHackers.MatterControl
this.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
//Set background color to new theme
SetThemedColors();
this.Invalidate();
}
switch (eventType)
{
case "ThemeChanged":
//Set background color to new theme
SetThemedColors();
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
void Instance_PrintItemChanged(object sender, EventArgs e)
{

View file

@ -57,6 +57,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public PartPreview3DWidget()
{
SliceSettingsWidget.PartPreviewSettingsChanged.RegisterEvent(RecreateBedAndPartPosition, ref unregisterEvents);
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent(RecreateBedAndPartPosition, ref unregisterEvents);
}
void RecreateBedAndPartPosition(object sender, EventArgs e)

View file

@ -41,7 +41,7 @@ using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
public class PartPreviewMainWindow : SystemWindow
public class PartPreviewMainWindow : SystemWindow, IReceiveRootedWeakEvent
{
View3DTransformPart view3DTransformPart;
ViewGcodeBasic viewGcodeBasic;
@ -112,11 +112,24 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
event EventHandler unregisterEvents;
private void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(Instance_ThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
view3DTransformPart.Closed += (sender, e) => { Close(); };
viewGcodeBasic.Closed += (sender, e) => { Close(); };
}
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
@ -125,10 +138,5 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
base.OnClosed(e);
}
void Instance_ThemeChanged(object sender, EventArgs e)
{
Invalidate();
}
}
}

View file

@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
public class View3DTransformPart : PartPreview3DWidget
public class View3DTransformPart : PartPreview3DWidget, IReceiveRootedWeakEvent
{
public WindowType windowType { get; set; }
@ -470,8 +470,24 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
}
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
processingProgressControl.fillColor = ActiveTheme.Instance.PrimaryAccentColor;
break;
default:
throw new NotImplementedException();
}
}
void SetEditControlsBasedOnPrinterState(object sender, EventArgs e)
{
if (windowType == WindowType.Embeded)

View file

@ -12,7 +12,7 @@ using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
public class ViewControls3D : FlowLayoutWidget
public class ViewControls3D : FlowLayoutWidget, IReceiveRootedWeakEvent
{
GuiWidget partSelectSeparator;
MeshViewerWidget meshViewerWidget;
@ -95,23 +95,28 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
SetMeshViewerDisplayTheme();
partSelectButton.CheckedStateChanged += SetMeshViewerDisplayTheme;
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public void RootedEvent(string eventType, EventArgs e)
{
switch (eventType)
{
case "ThemeChanged":
SetMeshViewerDisplayTheme(null, null);
break;
default:
throw new NotImplementedException();
}
}
protected void SetMeshViewerDisplayTheme(object sender = null, EventArgs e = null)
{
meshViewerWidget.TrackballTumbleWidget.RotationHelperCircleColor = ActiveTheme.Instance.PrimaryBackgroundColor;
//if (partSelectButton.Checked)
{
meshViewerWidget.PartColor = RGBA_Bytes.White;
meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
}
#if false
else
{
meshViewerWidget.PartColor = ActiveTheme.Instance.PrimaryAccentColor;
meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
}
#endif
meshViewerWidget.PartColor = RGBA_Bytes.White;
meshViewerWidget.SelectedPartColor = ActiveTheme.Instance.PrimaryAccentColor;
meshViewerWidget.BuildVolumeColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryAccentColor.Red0To255, ActiveTheme.Instance.PrimaryAccentColor.Green0To255, ActiveTheme.Instance.PrimaryAccentColor.Blue0To255, 50);
}

View file

@ -54,7 +54,7 @@ namespace MatterHackers.MatterControl.PrintHistory
{
public class PrintHistoryListItem : FlowLayoutWidget
public class PrintHistoryListItem : FlowLayoutWidget, IReceiveRootedWeakEvent
{
public PrintTask printTask;
public RGBA_Bytes WidgetTextColor;
@ -240,26 +240,22 @@ namespace MatterHackers.MatterControl.PrintHistory
this.Margin = new BorderDouble(6, 0, 6, 6);
}
event EventHandler unregisterEvents;
void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
//Set background and text color to new theme
this.Invalidate();
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
switch (eventType)
{
unregisterEvents(this, null);
case "ThemeChanged":
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
base.OnClosed(e);
}
public override void OnDraw(Graphics2D graphics2D)

View file

@ -51,7 +51,7 @@ using MatterHackers.PolygonMesh.Processors;
namespace MatterHackers.MatterControl.PrintLibrary
{
public class LibraryRowItem : ClickWidget
public class LibraryRowItem : ClickWidget, IReceiveRootedWeakEvent
{
public PrintItemWrapper printItemWrapper;
public RGBA_Bytes WidgetTextColor;
@ -209,7 +209,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
event EventHandler unregisterEvents;
void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
//this.Click += new ButtonEventHandler(PrintLibraryListItem_Click);
viewLink.Click += new ButtonBase.ButtonEventHandler(onViewLinkClick);
removeLink.Click += new ButtonBase.ButtonEventHandler(onRemoveLinkClick);
@ -315,10 +315,17 @@ namespace MatterHackers.MatterControl.PrintLibrary
}
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
//Set background and text color to new theme
this.Invalidate();
switch (eventType)
{
case "ThemeChanged":
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
}
public override void OnDraw(Graphics2D graphics2D)

View file

@ -50,7 +50,7 @@ using MatterHackers.PolygonMesh;
namespace MatterHackers.MatterControl.PrintQueue
{
public class QueueRowItem : GuiWidget
public class QueueRowItem : GuiWidget, IReceiveRootedWeakEvent
{
public PrintItemWrapper PrintItemWrapper { get; set; }
public RGBA_Bytes WidgetTextColor;
@ -316,7 +316,7 @@ namespace MatterHackers.MatterControl.PrintQueue
event EventHandler unregisterEvents;
void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
PrintItemWrapper.SlicingOutputMessage.RegisterEvent(PrintItem_SlicingOutputMessage, ref unregisterEvents);
@ -468,16 +468,24 @@ namespace MatterHackers.MatterControl.PrintQueue
});
}
private void onThemeChanged(object sender, EventArgs e)
public void RootedEvent(string eventType, EventArgs e)
{
if (this.isActivePrint)
{
//Set background and text color to new theme
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.partLabel.TextColor = RGBA_Bytes.White;
this.partStatus.TextColor = RGBA_Bytes.White;
this.Invalidate();
}
switch (eventType)
{
case "ThemeChanged":
if (this.isActivePrint)
{
//Set background and text color to new theme
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
this.partLabel.TextColor = RGBA_Bytes.White;
this.partStatus.TextColor = RGBA_Bytes.White;
this.Invalidate();
}
break;
default:
throw new NotImplementedException();
}
}
public void SetTextColors(RGBA_Bytes color)

View file

@ -752,7 +752,6 @@ namespace MatterHackers.MatterControl
event EventHandler unregisterEvents;
private void AddHandlers()
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.EnableChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
}
@ -763,13 +762,6 @@ namespace MatterHackers.MatterControl
this.Invalidate();
}
private void onThemeChanged(object sender, EventArgs e)
{
//this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
//SetVisibleControls();
//this.Invalidate();
}
void disableMotors_Click(object sender, MouseEventArgs mouseEvent)
{
PrinterConnectionAndCommunication.Instance.ReleaseMotors();

View file

@ -243,7 +243,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
}
public class ConnectionWidgetBase : GuiWidget
public class ConnectionWidgetBase : GuiWidget, IReceiveRootedWeakEvent
{
protected GuiWidget containerWindowToClose;
protected RGBA_Bytes defaultTextColor = ActiveTheme.Instance.PrimaryTextColor;
@ -260,7 +260,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
{
this.windowController = windowController;
this.containerWindowToClose = containerWindowToClose;
AddHandlers();
ActiveTheme.Instance.ThemeChanged.Register(this, "ThemeChanged");
}
public int GetPrinterRecordCount()
@ -268,26 +268,18 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
return Datastore.Instance.RecordCount("Printer");
}
event EventHandler unregisterEvents;
private void AddHandlers()
public void RootedEvent(string eventType, EventArgs e)
{
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
switch (eventType)
{
unregisterEvents(this, null);
case "ThemeChanged":
this.linkTextColor = ActiveTheme.Instance.PrimaryAccentColor;
this.Invalidate();
break;
default:
throw new NotImplementedException();
}
base.OnClosed(e);
}
private void onThemeChanged(object sender, EventArgs e)
{
this.linkTextColor = ActiveTheme.Instance.PrimaryAccentColor;
this.Invalidate();
}
}
}