mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-01-03 06:13:45 +01:00
Use TabBar, add OpenMainWindow and CloseMainWindow to API
This commit is contained in:
parent
6a54d24634
commit
8d38f73f52
16 changed files with 463 additions and 369 deletions
|
|
@ -312,6 +312,9 @@ public class IpcTester : IDisposable
|
|||
private bool _subscribedToClick = false;
|
||||
private string _lastClicked = string.Empty;
|
||||
private string _lastHovered = string.Empty;
|
||||
private TabType _selectTab = TabType.None;
|
||||
private string _modName = string.Empty;
|
||||
private PenumbraApiEc _ec = PenumbraApiEc.Success;
|
||||
|
||||
public Ui( DalamudPluginInterface pi )
|
||||
{
|
||||
|
|
@ -330,6 +333,21 @@ public class IpcTester : IDisposable
|
|||
return;
|
||||
}
|
||||
|
||||
using( var combo = ImRaii.Combo( "Tab to Open at", _selectTab.ToString() ) )
|
||||
{
|
||||
if( combo )
|
||||
{
|
||||
foreach( var val in Enum.GetValues< TabType >() )
|
||||
{
|
||||
if( ImGui.Selectable( val.ToString(), _selectTab == val ) )
|
||||
{
|
||||
_selectTab = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.InputTextWithHint( "##openMod", "Mod to Open at...", ref _modName, 256 );
|
||||
using var table = ImRaii.Table( string.Empty, 3, ImGuiTableFlags.SizingFixedFit );
|
||||
if( !table )
|
||||
{
|
||||
|
|
@ -370,6 +388,20 @@ public class IpcTester : IDisposable
|
|||
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted( _lastClicked );
|
||||
DrawIntro( Ipc.OpenMainWindow.Label, "Open Mod Window" );
|
||||
if( ImGui.Button( "Open##window" ) )
|
||||
{
|
||||
_ec = Ipc.OpenMainWindow.Subscriber( _pi ).Invoke( _selectTab, _modName, _modName );
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted( _ec.ToString() );
|
||||
|
||||
DrawIntro( Ipc.CloseMainWindow.Label, "Close Mod Window" );
|
||||
if( ImGui.Button( "Close##window" ) )
|
||||
{
|
||||
Ipc.CloseMainWindow.Subscriber( _pi ).Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateLastDrawnMod( string name )
|
||||
|
|
|
|||
|
|
@ -171,6 +171,38 @@ public class PenumbraApi : IDisposable, IPenumbraApi
|
|||
public event ChangedItemHover? ChangedItemTooltip;
|
||||
public event GameObjectResourceResolvedDelegate? GameObjectResourceResolved;
|
||||
|
||||
public PenumbraApiEc OpenMainWindow( TabType tab, string modDirectory, string modName )
|
||||
{
|
||||
CheckInitialized();
|
||||
|
||||
_penumbra!.ConfigWindow.IsOpen = true;
|
||||
|
||||
if( !Enum.IsDefined( tab ) )
|
||||
return PenumbraApiEc.InvalidArgument;
|
||||
|
||||
if( tab != TabType.None )
|
||||
_penumbra!.ConfigWindow.SelectTab = tab;
|
||||
|
||||
if( tab == TabType.Mods && (modDirectory.Length > 0 || modName.Length > 0) )
|
||||
{
|
||||
if( Penumbra.ModManager.TryGetMod( modDirectory, modName, out var mod ) )
|
||||
{
|
||||
_penumbra!.ConfigWindow.SelectMod( mod );
|
||||
}
|
||||
else
|
||||
{
|
||||
return PenumbraApiEc.ModMissing;
|
||||
}
|
||||
}
|
||||
return PenumbraApiEc.Success;
|
||||
}
|
||||
|
||||
public void CloseMainWindow()
|
||||
{
|
||||
CheckInitialized();
|
||||
_penumbra!.ConfigWindow.IsOpen = false;
|
||||
}
|
||||
|
||||
public void RedrawObject( int tableIndex, RedrawType setting )
|
||||
{
|
||||
CheckInitialized();
|
||||
|
|
|
|||
|
|
@ -29,10 +29,12 @@ public class PenumbraIpcProviders : IDisposable
|
|||
internal readonly EventProvider< string, bool > ModDirectoryChanged;
|
||||
|
||||
// UI
|
||||
internal readonly EventProvider< string > PreSettingsDraw;
|
||||
internal readonly EventProvider< string > PostSettingsDraw;
|
||||
internal readonly EventProvider< ChangedItemType, uint > ChangedItemTooltip;
|
||||
internal readonly EventProvider< MouseButton, ChangedItemType, uint > ChangedItemClick;
|
||||
internal readonly EventProvider< string > PreSettingsDraw;
|
||||
internal readonly EventProvider< string > PostSettingsDraw;
|
||||
internal readonly EventProvider< ChangedItemType, uint > ChangedItemTooltip;
|
||||
internal readonly EventProvider< MouseButton, ChangedItemType, uint > ChangedItemClick;
|
||||
internal readonly FuncProvider< TabType, string, string, PenumbraApiEc > OpenMainWindow;
|
||||
internal readonly ActionProvider CloseMainWindow;
|
||||
|
||||
// Redrawing
|
||||
internal readonly ActionProvider< RedrawType > RedrawAll;
|
||||
|
|
@ -131,6 +133,8 @@ public class PenumbraIpcProviders : IDisposable
|
|||
PostSettingsDraw = Ipc.PostSettingsDraw.Provider( pi, a => Api.PostSettingsPanelDraw += a, a => Api.PostSettingsPanelDraw -= a );
|
||||
ChangedItemTooltip = Ipc.ChangedItemTooltip.Provider( pi, () => Api.ChangedItemTooltip += OnTooltip, () => Api.ChangedItemTooltip -= OnTooltip );
|
||||
ChangedItemClick = Ipc.ChangedItemClick.Provider( pi, () => Api.ChangedItemClicked += OnClick, () => Api.ChangedItemClicked -= OnClick );
|
||||
OpenMainWindow = Ipc.OpenMainWindow.Provider( pi, Api.OpenMainWindow );
|
||||
CloseMainWindow = Ipc.CloseMainWindow.Provider( pi, Api.CloseMainWindow );
|
||||
|
||||
// Redrawing
|
||||
RedrawAll = Ipc.RedrawAll.Provider( pi, Api.RedrawAll );
|
||||
|
|
@ -241,6 +245,8 @@ public class PenumbraIpcProviders : IDisposable
|
|||
PostSettingsDraw.Dispose();
|
||||
ChangedItemTooltip.Dispose();
|
||||
ChangedItemClick.Dispose();
|
||||
OpenMainWindow.Dispose();
|
||||
CloseMainWindow.Dispose();
|
||||
|
||||
// Redrawing
|
||||
RedrawAll.Dispose();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue