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();
}