using Penumbra.Api.Enums; namespace Penumbra.Api.Api; /// API methods pertaining to Penumbras UI. public interface IPenumbraApiUi { /// /// Triggered when the user hovers over a listed changed object in a mod tab. /// Can be used to append tooltips. /// /// The type of the changed item and its ID if known. public event Action? ChangedItemTooltip; /// /// Triggered when the user clicks a listed changed object in a mod tab. /// /// The mouse button clicked, the type of the changed item and its ID if known. public event Action? ChangedItemClicked; /// /// Triggered before the settings tab bar for a mod is drawn, after the title group is drawn. /// /// The directory name of the currently selected mod, the total used width of the title bar and the width of the title box. public event Action? PreSettingsTabBarDraw; /// /// Triggered before the content of a mod settings panel is drawn. /// /// The directory name of the currently selected mod. public event Action? PreSettingsPanelDraw; /// /// Triggered after the Enabled Checkbox line in settings is drawn, but before options are drawn. /// /// The directory name of the currently selected mod. public event Action? PostEnabledDraw; /// /// Triggered after the content of a mod settings panel is drawn, but still in the child window. /// /// The directory name of the currently selected mod. public event Action? PostSettingsPanelDraw; /// /// Open the Penumbra main config window. /// /// Open the window at a specific tab. Use TabType.None to not change the tab. /// Select a mod specified via its directory name in the mod tab, empty if none. /// Select a mod specified via its mod name in the mod tab, empty if none. /// InvalidArgument if is invalid, /// ModMissing if or are set non-empty and the mod does not exist, /// Success otherwise. /// If is not TabType.Mods, the mod will not be selected regardless of other parameters and ModMissing will not be returned. public PenumbraApiEc OpenMainWindow(TabType tab, string modDirectory, string modName); /// Close the Penumbra main config window. public void CloseMainWindow(); }