using System; using Robust.Client.Input; using Robust.Client.Interfaces.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; using Robust.Shared.Maths; using Robust.Shared.Timing; namespace Robust.Client.Interfaces.UserInterface { public interface IUserInterfaceManager { UITheme ThemeDefaults { get; } Stylesheet Stylesheet { get; set; } Control KeyboardFocused { get; } LayoutContainer StateRoot { get; } LayoutContainer WindowRoot { get; } LayoutContainer PopupRoot { get; } PopupContainer ModalRoot { get; } Control CurrentlyHovered { get; } float UIScale { get; } /// /// The "root" control to which all other controls are parented, /// potentially indirectly. /// Control RootControl { get; } IDebugMonitors DebugMonitors { get; } void Popup(string contents, string title = "Alert!"); Control MouseGetControl(Vector2 coordinates); /// /// Give a control keyboard focus, releasing focus on the currently focused control (if any). /// /// The control to give keyboard focus to. /// Thrown if is null. /// /// Thrown if has false. /// void GrabKeyboardFocus(Control control); /// /// Release keyboard focus from the currently focused control, if any. /// void ReleaseKeyboardFocus(); /// /// Conditionally release keyboard focus if has keyboard focus. /// /// /// Thrown if is null. /// /// void ReleaseKeyboardFocus(Control ifControl); } internal interface IUserInterfaceManagerInternal : IUserInterfaceManager { /// /// Clears and disposes of all UI components. /// Highly destructive! /// void DisposeAllComponents(); void Initialize(); void InitializeTesting(); void Update(FrameEventArgs args); void FrameUpdate(FrameEventArgs args); void KeyBindDown(BoundKeyEventArgs args); void KeyBindUp(BoundKeyEventArgs args); void MouseMove(MouseMoveEventArgs mouseMoveEventArgs); void MouseWheel(MouseWheelEventArgs args); void TextEntered(TextEventArgs textEvent); void ControlHidden(Control control); void ControlRemovedFromTree(Control control); void PushModal(Control modal); void RemoveModal(Control modal); void Render(IRenderHandle renderHandle); void QueueStyleUpdate(Control control); void QueueLayoutUpdate(Control control); } }