Added label and warning on dev plugins + made PluginLoadReason a mask

This commit is contained in:
Aireil 2020-11-01 18:00:50 +01:00
parent 0197733fdb
commit bbcab82961
4 changed files with 50 additions and 24 deletions

View file

@ -99,9 +99,16 @@ namespace Dalamud.Plugin
}
didAnyWithSearch = true;
var isInstalled = this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).Any(
var installedPlugin = this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).FirstOrDefault(
x => x.Definition.InternalName == pluginDefinition.InternalName);
var isInstalled = installedPlugin.Definition != null;
var isRaw = false;
if (isInstalled) {
if (installedPlugin.PluginInterface.Reason.HasFlag(PluginLoadReason.Dev)) {
isRaw = true;
}
}
var label = isInstalled ? Loc.Localize("InstallerInstalled", " (installed)") : string.Empty;
label = this.updatedPlugins != null &&
@ -114,6 +121,8 @@ namespace Dalamud.Plugin
? Loc.Localize("InstallerUpdateFailed", " (update failed)")
: label;
label = isRaw ? " (dev)" : label;
var isTestingAvailable = false;
if (Version.TryParse(pluginDefinition.AssemblyVersion, out var assemblyVersion) && Version.TryParse(pluginDefinition.TestingAssemblyVersion, out var testingAssemblyVersion))
isTestingAvailable = this.dalamud.Configuration.DoPluginTest && testingAssemblyVersion > assemblyVersion;
@ -124,7 +133,7 @@ namespace Dalamud.Plugin
continue;
}
label += isTestingAvailable ? " (Testing version)" : string.Empty;
label += (isTestingAvailable && !isRaw) ? " (testing version)" : string.Empty;
ImGui.PushID(pluginDefinition.InternalName + pluginDefinition.AssemblyVersion);
@ -157,8 +166,7 @@ namespace Dalamud.Plugin
});
}
}
if (!string.IsNullOrEmpty(pluginDefinition.RepoUrl))
{
if (!string.IsNullOrEmpty(pluginDefinition.RepoUrl)) {
ImGui.PushFont(InterfaceManager.IconFont);
ImGui.SameLine();
@ -169,18 +177,18 @@ namespace Dalamud.Plugin
ImGui.PopFont();
}
} else {
var installedPlugin = this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).First(
x => x.Definition.InternalName ==
pluginDefinition.InternalName);
if (ImGui.Button(Loc.Localize("InstallerDisable", "Disable")))
try {
this.dalamud.PluginManager.DisablePlugin(installedPlugin.Definition);
} catch (Exception exception) {
Log.Error(exception, "Could not disable plugin.");
this.errorModalDrawing = true;
this.errorModalOnNextFrame = true;
}
if (!isRaw) {
if (ImGui.Button(Loc.Localize("InstallerDisable", "Disable")))
try {
this.dalamud.PluginManager.DisablePlugin(installedPlugin.Definition);
} catch (Exception exception) {
Log.Error(exception, "Could not disable plugin.");
this.errorModalDrawing = true;
this.errorModalOnNextFrame = true;
}
} else {
ImGui.NewLine();
}
if (installedPlugin.PluginInterface.UiBuilder.OnOpenConfigUi != null) {
ImGui.SameLine();
@ -201,6 +209,11 @@ namespace Dalamud.Plugin
ImGui.SameLine();
ImGui.TextColored(new Vector4(0.5f, 0.5f, 0.5f, 1.0f), $" v{pluginDefinition.AssemblyVersion}");
if(isRaw) {
ImGui.SameLine();
ImGui.TextColored(new Vector4(1.0f, 0.0f, 0.0f, 1.0f), " To update or disable this plugin, please remove it from the devPlugins folder.");
}
}
ImGui.Unindent();

View file

@ -9,21 +9,34 @@ namespace Dalamud.Plugin
/// <summary>
/// This enum reflects reasons for loading a plugin.
/// </summary>
public enum PluginLoadReason
[Flags]
public enum PluginLoadReason
{
None = 0,
/// <summary>
/// We don't know why this plugin was loaded.
/// </summary>
Unknown,
Unknown = 1,
/// <summary>
/// This plugin was loaded because it was installed with the plugin installer.
/// </summary>
Installer,
Installer = 2,
/// <summary>
/// This plugin was loaded because the game was started or Dalamud was reinjected.
/// </summary>
Boot
Boot = 4,
/// <summary>
/// This plugin was loaded from the installedPlugins folder.
/// </summary>
Installed = 8,
/// <summary>
/// This plugin was loaded from the devPlugins folder.
/// </summary>
Dev = 16
}
}

View file

@ -200,7 +200,7 @@ namespace Dalamud.Plugin
foreach (var dllFile in pluginDlls) {
try {
LoadPluginFromAssembly(dllFile, raw, PluginLoadReason.Boot);
LoadPluginFromAssembly(dllFile, raw, PluginLoadReason.Boot | (raw ? PluginLoadReason.Dev : PluginLoadReason.Installed));
} catch (Exception ex) {
Log.Error(ex, $"Plugin load for {dllFile.FullName} failed.");
}

View file

@ -81,7 +81,7 @@ namespace Dalamud.Plugin
if (disabledFile.Exists)
disabledFile.Delete();
return this.dalamud.PluginManager.LoadPluginFromAssembly(dllFile, false, PluginLoadReason.Installer);
return this.dalamud.PluginManager.LoadPluginFromAssembly(dllFile, false, PluginLoadReason.Installer | PluginLoadReason.Installed);
}
if (dllFile.Exists && !enableAfterInstall) {
@ -128,7 +128,7 @@ namespace Dalamud.Plugin
testingFile.Delete();
}
return this.dalamud.PluginManager.LoadPluginFromAssembly(dllFile, false, PluginLoadReason.Installer);
return this.dalamud.PluginManager.LoadPluginFromAssembly(dllFile, false, PluginLoadReason.Installer | PluginLoadReason.Installed);
}
catch (Exception e)
{