mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-30 20:33:43 +01:00
Complete refactoring of interface code. Addition of 'Enable Mods' checkmark, that just (de)activates all mods at once without changing settings. Allow editing of mod json inside the interface in advanced mode.
This commit is contained in:
parent
5462bb6f05
commit
7e51e663ec
20 changed files with 2274 additions and 872 deletions
66
Penumbra/UI/TabEffective.cs
Normal file
66
Penumbra/UI/TabEffective.cs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
using System.Linq;
|
||||
using ImGuiNET;
|
||||
using Penumbra.Mods;
|
||||
|
||||
namespace Penumbra.UI
|
||||
{
|
||||
public partial class SettingsInterface
|
||||
{
|
||||
private class TabEffective
|
||||
{
|
||||
private const string LabelTab = "Effective File List";
|
||||
private const float TextSizePadding = 5f;
|
||||
|
||||
private ModManager _mods;
|
||||
private (string, string)[] _fileList = null;
|
||||
private float _maxGamePath = 0f;
|
||||
|
||||
public TabEffective(SettingsInterface ui)
|
||||
{
|
||||
_mods = ui._plugin.ModManager;
|
||||
RebuildFileList(ui._plugin.Configuration.ShowAdvanced);
|
||||
}
|
||||
|
||||
public void RebuildFileList(bool advanced)
|
||||
{
|
||||
if (advanced)
|
||||
{
|
||||
_fileList = _mods.ResolvedFiles.Select( P => (P.Value.FullName, P.Key) ).ToArray();
|
||||
_maxGamePath = ((_fileList.Length > 0) ? _fileList.Max( P => ImGui.CalcTextSize(P.Item2).X ) : 0f) + TextSizePadding;
|
||||
}
|
||||
else
|
||||
{
|
||||
_fileList = null;
|
||||
_maxGamePath = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawFileLine((string, string) file)
|
||||
{
|
||||
ImGui.Selectable(file.Item2);
|
||||
ImGui.SameLine();
|
||||
ImGui.SetCursorPosX(_maxGamePath);
|
||||
ImGui.TextUnformatted(" <-- ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Selectable(file.Item1);
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
var ret = ImGui.BeginTabItem( LabelTab );
|
||||
if( !ret )
|
||||
return;
|
||||
|
||||
if( ImGui.ListBoxHeader( "##effective_files", AutoFillSize ) )
|
||||
{
|
||||
foreach( var file in _fileList )
|
||||
DrawFileLine(file);
|
||||
|
||||
ImGui.ListBoxFooter();
|
||||
}
|
||||
|
||||
ImGui.EndTabItem();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue