// // Label.cs: Label control // // Authors: // Miguel de Icaza (miguel@gnome.org) // using System; using NStack; namespace Terminal.Gui { /// /// The Label displays a string at a given position and supports multiple lines separated by newline characters. /// Multi-line Labels support word wrap. /// /// /// The view is functionality identical to and is included for API backwards compatibility. /// public class Label : View { /// public Label () { SetInitialProperties (); } /// public Label (Rect frame, bool autosize = false) : base (frame) { SetInitialProperties (autosize); } /// public Label (ustring text, bool autosize = true) : base (text) { SetInitialProperties (autosize); } /// public Label (Rect rect, ustring text, bool autosize = false) : base (rect, text) { SetInitialProperties (autosize); } /// public Label (int x, int y, ustring text, bool autosize = true) : base (x, y, text) { SetInitialProperties (autosize); } /// public Label (ustring text, TextDirection direction, bool autosize = true) : base (text, direction) { SetInitialProperties (autosize); } void SetInitialProperties (bool autosize = true) { Height = 1; AutoSize = autosize; } /// /// Clicked , raised when the user clicks the primary mouse button within the Bounds of this /// or if the user presses the action key while this view is focused. (TODO: IsDefault) /// /// /// Client code can hook up to this event, it is /// raised when the button is activated either with /// the mouse or the keyboard. /// public event EventHandler Clicked; /// /// Method invoked when a mouse event is generated /// /// /// true, if the event was handled, false otherwise. public override bool OnMouseEvent (MouseEvent mouseEvent) { MouseEventEventArgs args = new MouseEventEventArgs (mouseEvent); if (OnMouseClick (args)) return true; if (MouseEvent (mouseEvent)) return true; if (mouseEvent.Flags == MouseFlags.Button1Clicked) { if (!HasFocus && SuperView != null) { if (!SuperView.HasFocus) { SuperView.SetFocus (); } SetFocus (); SetNeedsDisplay (); } OnClicked (); return true; } return false; } /// public override bool OnEnter (View view) { Application.Driver.SetCursorVisibility (CursorVisibility.Invisible); return base.OnEnter (view); } /// public override bool ProcessHotKey (KeyEvent ke) { if (ke.Key == (Key.AltMask | HotKey)) { if (!HasFocus) { SetFocus (); } OnClicked (); return true; } return base.ProcessHotKey (ke); } /// /// Virtual method to invoke the event. /// public virtual void OnClicked () { Clicked?.Invoke (this, EventArgs.Empty); } } }