mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
Merge branch 'master' into feature/ifontatlas-lock-safety
This commit is contained in:
commit
47b1dfd7f9
9 changed files with 82 additions and 29 deletions
|
|
@ -667,7 +667,7 @@ internal class DalamudInterface : IDisposable, IServiceType
|
||||||
}
|
}
|
||||||
|
|
||||||
var antiDebug = Service<AntiDebug>.Get();
|
var antiDebug = Service<AntiDebug>.Get();
|
||||||
if (ImGui.MenuItem("Enable AntiDebug", null, antiDebug.IsEnabled))
|
if (ImGui.MenuItem("Disable Debugging Protections", null, antiDebug.IsEnabled))
|
||||||
{
|
{
|
||||||
var newEnabled = !antiDebug.IsEnabled;
|
var newEnabled = !antiDebug.IsEnabled;
|
||||||
if (newEnabled)
|
if (newEnabled)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
using Dalamud.Game.Command;
|
using System.Linq;
|
||||||
|
|
||||||
|
using Dalamud.Game.Command;
|
||||||
|
using Dalamud.Interface.Utility.Raii;
|
||||||
|
|
||||||
using ImGuiNET;
|
using ImGuiNET;
|
||||||
|
|
||||||
namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
||||||
|
|
@ -28,9 +32,52 @@ internal class CommandWidget : IDataWindowWidget
|
||||||
{
|
{
|
||||||
var commandManager = Service<CommandManager>.Get();
|
var commandManager = Service<CommandManager>.Get();
|
||||||
|
|
||||||
foreach (var command in commandManager.Commands)
|
var tableFlags = ImGuiTableFlags.ScrollY | ImGuiTableFlags.Borders | ImGuiTableFlags.SizingStretchProp |
|
||||||
|
ImGuiTableFlags.Sortable | ImGuiTableFlags.SortTristate;
|
||||||
|
using var table = ImRaii.Table("CommandList", 4, tableFlags);
|
||||||
|
if (table)
|
||||||
{
|
{
|
||||||
ImGui.Text($"{command.Key}\n -> {command.Value.HelpMessage}\n -> In help: {command.Value.ShowInHelp}\n\n");
|
ImGui.TableSetupScrollFreeze(0, 1);
|
||||||
|
|
||||||
|
ImGui.TableSetupColumn("Command");
|
||||||
|
ImGui.TableSetupColumn("Plugin");
|
||||||
|
ImGui.TableSetupColumn("HelpMessage", ImGuiTableColumnFlags.NoSort);
|
||||||
|
ImGui.TableSetupColumn("In Help?", ImGuiTableColumnFlags.NoSort);
|
||||||
|
ImGui.TableHeadersRow();
|
||||||
|
|
||||||
|
var sortSpecs = ImGui.TableGetSortSpecs();
|
||||||
|
var commands = commandManager.Commands.ToArray();
|
||||||
|
|
||||||
|
if (sortSpecs.SpecsCount != 0)
|
||||||
|
{
|
||||||
|
commands = sortSpecs.Specs.ColumnIndex switch
|
||||||
|
{
|
||||||
|
0 => sortSpecs.Specs.SortDirection == ImGuiSortDirection.Ascending
|
||||||
|
? commands.OrderBy(kv => kv.Key).ToArray()
|
||||||
|
: commands.OrderByDescending(kv => kv.Key).ToArray(),
|
||||||
|
1 => sortSpecs.Specs.SortDirection == ImGuiSortDirection.Ascending
|
||||||
|
? commands.OrderBy(kv => kv.Value.LoaderAssemblyName).ToArray()
|
||||||
|
: commands.OrderByDescending(kv => kv.Value.LoaderAssemblyName).ToArray(),
|
||||||
|
_ => commands,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var command in commands)
|
||||||
|
{
|
||||||
|
ImGui.TableNextRow();
|
||||||
|
|
||||||
|
ImGui.TableSetColumnIndex(0);
|
||||||
|
ImGui.Text(command.Key);
|
||||||
|
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text(command.Value.LoaderAssemblyName);
|
||||||
|
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.TextWrapped(command.Value.HelpMessage);
|
||||||
|
|
||||||
|
ImGui.TableNextColumn();
|
||||||
|
ImGui.Text(command.Value.ShowInHelp ? "Yes" : "No");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2556,7 +2556,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
if (ImGui.MenuItem(Locs.PluginContext_DeletePluginConfigReload))
|
if (ImGui.MenuItem(Locs.PluginContext_DeletePluginConfigReload))
|
||||||
{
|
{
|
||||||
this.ShowDeletePluginConfigWarningModal(plugin.Name).ContinueWith(t =>
|
this.ShowDeletePluginConfigWarningModal(plugin.Manifest.Name).ContinueWith(t =>
|
||||||
{
|
{
|
||||||
var shouldDelete = t.Result;
|
var shouldDelete = t.Result;
|
||||||
|
|
||||||
|
|
@ -2571,7 +2571,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
{
|
{
|
||||||
this.installStatus = OperationStatus.Idle;
|
this.installStatus = OperationStatus.Idle;
|
||||||
|
|
||||||
this.DisplayErrorContinuation(task, Locs.ErrorModal_DeleteConfigFail(plugin.Name));
|
this.DisplayErrorContinuation(task, Locs.ErrorModal_DeleteConfigFail(plugin.Manifest.InternalName));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -3773,7 +3773,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
public static string DeletePluginConfigWarningModal_Title => Loc.Localize("InstallerDeletePluginConfigWarning", "Warning###InstallerDeletePluginConfigWarning");
|
public static string DeletePluginConfigWarningModal_Title => Loc.Localize("InstallerDeletePluginConfigWarning", "Warning###InstallerDeletePluginConfigWarning");
|
||||||
|
|
||||||
public static string DeletePluginConfigWarningModal_Body(string pluginName) => Loc.Localize("InstallerDeletePluginConfigWarningBody", "Are you sure you want to delete all data and configuration for v{0}?").Format(pluginName);
|
public static string DeletePluginConfigWarningModal_Body(string pluginName) => Loc.Localize("InstallerDeletePluginConfigWarningBody", "Are you sure you want to delete all data and configuration for {0}?").Format(pluginName);
|
||||||
|
|
||||||
public static string DeletePluginConfirmWarningModal_Yes => Loc.Localize("InstallerDeletePluginConfigWarningYes", "Yes");
|
public static string DeletePluginConfirmWarningModal_Yes => Loc.Localize("InstallerDeletePluginConfigWarningYes", "Yes");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,17 +31,20 @@ public sealed class LanguageChooserSettingsEntry : SettingsEntry
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var locLanguagesList = new List<string>();
|
var locLanguagesList = new List<string>();
|
||||||
string locLanguage;
|
|
||||||
foreach (var language in this.languages)
|
foreach (var language in this.languages)
|
||||||
{
|
{
|
||||||
if (language != "ko")
|
switch (language)
|
||||||
{
|
{
|
||||||
locLanguage = CultureInfo.GetCultureInfo(language).NativeName;
|
case "ko":
|
||||||
locLanguagesList.Add(char.ToUpper(locLanguage[0]) + locLanguage[1..]);
|
locLanguagesList.Add("Korean");
|
||||||
}
|
break;
|
||||||
else
|
case "tw":
|
||||||
{
|
locLanguagesList.Add("中華民國國語");
|
||||||
locLanguagesList.Add("Korean");
|
break;
|
||||||
|
default:
|
||||||
|
string locLanguage = CultureInfo.GetCultureInfo(language).NativeName;
|
||||||
|
locLanguagesList.Add(char.ToUpper(locLanguage[0]) + locLanguage[1..]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -746,10 +746,12 @@ public sealed class UiBuilder : IDisposable
|
||||||
|
|
||||||
public event IFontHandle.ImFontChangedDelegate? ImFontChanged;
|
public event IFontHandle.ImFontChangedDelegate? ImFontChanged;
|
||||||
|
|
||||||
public Exception? LoadException =>
|
public Exception? LoadException => this.WrappedNotDisposed.LoadException;
|
||||||
this.wrapped!.LoadException ?? new ObjectDisposedException(nameof(FontHandleWrapper));
|
|
||||||
|
|
||||||
public bool Available => this.wrapped?.Available ?? false;
|
public bool Available => this.WrappedNotDisposed.Available;
|
||||||
|
|
||||||
|
private IFontHandle WrappedNotDisposed =>
|
||||||
|
this.wrapped ?? throw new ObjectDisposedException(nameof(FontHandleWrapper));
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
|
@ -764,16 +766,15 @@ public sealed class UiBuilder : IDisposable
|
||||||
public ILockedImFont Lock() =>
|
public ILockedImFont Lock() =>
|
||||||
this.wrapped?.Lock() ?? throw new ObjectDisposedException(nameof(FontHandleWrapper));
|
this.wrapped?.Lock() ?? throw new ObjectDisposedException(nameof(FontHandleWrapper));
|
||||||
|
|
||||||
public IDisposable Push() =>
|
public IDisposable Push() => this.WrappedNotDisposed.Push();
|
||||||
this.wrapped?.Push() ?? throw new ObjectDisposedException(nameof(FontHandleWrapper));
|
|
||||||
|
|
||||||
public void Pop() => this.wrapped?.Pop();
|
public void Pop() => this.WrappedNotDisposed.Pop();
|
||||||
|
|
||||||
public Task<IFontHandle> WaitAsync() =>
|
public Task<IFontHandle> WaitAsync() =>
|
||||||
this.wrapped?.WaitAsync().ContinueWith(_ => (IFontHandle)this) ??
|
this.WrappedNotDisposed.WaitAsync().ContinueWith(_ => (IFontHandle)this);
|
||||||
throw new ObjectDisposedException(nameof(FontHandleWrapper));
|
|
||||||
|
|
||||||
public override string ToString() => $"{nameof(FontHandleWrapper)}({this.wrapped})";
|
public override string ToString() =>
|
||||||
|
$"{nameof(FontHandleWrapper)}({this.wrapped?.ToString() ?? "disposed"})";
|
||||||
|
|
||||||
private void WrappedOnImFontChanged(IFontHandle obj, ILockedImFont lockedFont) =>
|
private void WrappedOnImFontChanged(IFontHandle obj, ILockedImFont lockedFont) =>
|
||||||
this.ImFontChanged?.Invoke(obj, lockedFont);
|
this.ImFontChanged?.Invoke(obj, lockedFont);
|
||||||
|
|
|
||||||
|
|
@ -1094,7 +1094,7 @@ internal partial class PluginManager : IDisposable, IServiceType
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this.PluginConfigs.Delete(plugin.Name);
|
this.PluginConfigs.Delete(plugin.Manifest.InternalName);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
catch (IOException)
|
catch (IOException)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Diagnostics.Contracts;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Diagnostics.Contracts;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
@ -64,8 +65,9 @@ internal interface IDalamudAssetManager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="asset">The texture asset.</param>
|
/// <param name="asset">The texture asset.</param>
|
||||||
/// <param name="defaultWrap">The default return value, if the asset is not ready for whatever reason.</param>
|
/// <param name="defaultWrap">The default return value, if the asset is not ready for whatever reason.</param>
|
||||||
/// <returns>The texture wrap.</returns>
|
/// <returns>The texture wrap. Can be <c>null</c> only if <paramref name="defaultWrap"/> is <c>null</c>.</returns>
|
||||||
[Pure]
|
[Pure]
|
||||||
|
[return: NotNullIfNotNull(nameof(defaultWrap))]
|
||||||
IDalamudTextureWrap? GetDalamudTextureWrap(DalamudAsset asset, IDalamudTextureWrap? defaultWrap);
|
IDalamudTextureWrap? GetDalamudTextureWrap(DalamudAsset asset, IDalamudTextureWrap? defaultWrap);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
2
build.sh
Normal file → Executable file
2
build.sh
Normal file → Executable file
|
|
@ -59,4 +59,4 @@ fi
|
||||||
echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
|
echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
|
||||||
|
|
||||||
"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false /p:EnableWindowsTargeting=true -nologo -clp:NoSummary --verbosity quiet
|
"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false /p:EnableWindowsTargeting=true -nologo -clp:NoSummary --verbosity quiet
|
||||||
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- /p:EnableWindowsTargeting=true "$@"
|
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit e9341bb3038bf4200300f21be4a8629525d15596
|
Subproject commit b5f5f68e147e1a21a0f0c88345f8d8c359678317
|
||||||
Loading…
Add table
Add a link
Reference in a new issue