/// <summary>Apply the specified selector (style) to the specified widget</summary> /// <param name="Widget">The widget that should "got" the style</param> /// <param name="Style">The specified selector with the desired style</param> public void ApplyStyle(Xwt.Widget Widget, string Pattern) { if (Widget.GetType() == typeof(Xwt.Label)) { ApplyStyle((Xwt.Label)Widget, Pattern); return; } if (Widget.GetType() == typeof(Xwt.Box)) { ApplyStyle((Xwt.Box)Widget, Pattern); return; } Selector Selector = CSS[Pattern]; if (Selector.Declarations["background-color"].Value != "inherit") { Widget.BackgroundColor = Utilities.GetXwtColor( Selector.Declarations["background-color"].Value ); } if (Selector.Declarations["font-family"].Value != "inherit") { Widget.Font = Xwt.Drawing.Font.FromName( Selector.Declarations["font-family"].Value ); } Widget.Visible = Selector.Declarations["display"].Value == "none" ? false : true; }
/// <summary>Enable theming of the widget</summary> /// <param name="Widget">The widget that needs to be themized</param> /// <param name="Selector">The selector pattern</param> public void Stylize(Xwt.Widget Widget, string Selector = "Widget") { if (!semaphore) { semaphore = true; Stylize(Widget, "Widget"); //apply default style for all widgets try { Stylize(Widget, Widget.GetType().ToString().Substring(Widget.GetType().ToString().IndexOf('.') + 1)); //apply default style for the widget type } catch { Console.WriteLine("NOTICE: No style is set for widgets of type " + Widget.GetType().ToString().Substring(Widget.GetType().ToString().IndexOf('.') + 1)); } semaphore = false; } ApplyStyle(Widget, Selector); Widget.MouseEntered += (o, ea) => { ApplyStyle(Widget, Selector + ":hover"); }; Widget.MouseExited += (o, ea) => { ApplyStyle(Widget, Selector); if (Widget.HasFocus) { ApplyStyle(Widget, Selector + ":focus"); } }; Widget.ButtonPressed += (o, ea) => { ApplyStyle(Widget, Selector + ":active"); }; Widget.GotFocus += (o, ea) => { ApplyStyle(Widget, Selector + ":focus"); }; Widget.LostFocus += (o, ea) => { ApplyStyle(Widget, Selector); }; Widget.ButtonReleased += (o, ea) => { ApplyStyle(Widget, Selector); if (Widget.HasFocus) { ApplyStyle(Widget, Selector + ":focus"); } }; }