//////////////// /// <param name="theme">Appearance style.</param> /// <param name="label">Display text.</param> /// <param name="url">URL.</param> /// <param name="hoverUrl">Indicates if the current element handles its own mouse hover URL display behavior.</param> /// <param name="scale">Size multiplier of display text.</param> /// <param name="large">'Large' state of display text.</param> public UIWebUrl(UITheme theme, string label, string url, bool hoverUrl = true, float scale = 0.85f, bool large = false) : base(theme, true) { this.IsVisited = false; this.Url = url; this.WillDrawOwnHoverUrl = hoverUrl; this.Scale = scale; this.Large = large; this.TextElem = new UIText(label, scale, large); this.TextElem.TextColor = theme.UrlColor; this.Append(this.TextElem); this.LineElem = UIWebUrl.GetLineElement(label, scale, large); this.LineElem.TextColor = theme.UrlColor; this.Append(this.LineElem); CalculatedStyle labelSize = this.TextElem.GetDimensions(); this.Width.Set(labelSize.Width, 0f); this.Height.Set(labelSize.Height, 0f); UIText textElem = this.TextElem; UIText lineElem = this.LineElem; this.OnMouseOver += delegate(UIMouseEvent evt, UIElement fromElem) { if (textElem.TextColor != theme.UrlVisitColor) { textElem.TextColor = theme.UrlLitColor; textElem.TextColor = theme.UrlLitColor; } }; this.OnMouseOut += delegate(UIMouseEvent evt, UIElement fromElem) { if (textElem.TextColor != theme.UrlVisitColor) { textElem.TextColor = theme.UrlColor; textElem.TextColor = theme.UrlColor; } }; this.OnClick += delegate(UIMouseEvent evt, UIElement fromElem) { try { SystemLibraries.OpenUrl(this.Url); //System.Diagnostics.Process.Start( this.Url ); this.IsVisited = true; textElem.TextColor = theme.UrlVisitColor; lineElem.TextColor = theme.UrlVisitColor; } catch (Exception e) { Main.NewText(e.Message); } }; this.RefreshTheme(); }
//////////////// /// <summary> /// Sets the display text. /// </summary> /// <param name="text">New display text.</param> public void SetText(string text) { this.TextElem.SetText(text, this.Scale, this.Large); Timers.RunNow(() => { this.RemoveChild(this.LineElem); this.LineElem.Remove(); }); this.LineElem = UIWebUrl.GetLineElement(text, this.Scale, this.Large); this.Append(this.LineElem); this.Recalculate(); }