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

View file

@ -9,21 +9,34 @@ namespace Dalamud.Plugin
/// <summary> /// <summary>
/// This enum reflects reasons for loading a plugin. /// This enum reflects reasons for loading a plugin.
/// </summary> /// </summary>
public enum PluginLoadReason [Flags]
public enum PluginLoadReason
{ {
None = 0,
/// <summary> /// <summary>
/// We don't know why this plugin was loaded. /// We don't know why this plugin was loaded.
/// </summary> /// </summary>
Unknown, Unknown = 1,
/// <summary> /// <summary>
/// This plugin was loaded because it was installed with the plugin installer. /// This plugin was loaded because it was installed with the plugin installer.
/// </summary> /// </summary>
Installer, Installer = 2,
/// <summary> /// <summary>
/// This plugin was loaded because the game was started or Dalamud was reinjected. /// This plugin was loaded because the game was started or Dalamud was reinjected.
/// </summary> /// </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) { foreach (var dllFile in pluginDlls) {
try { try {
LoadPluginFromAssembly(dllFile, raw, PluginLoadReason.Boot); LoadPluginFromAssembly(dllFile, raw, PluginLoadReason.Boot | (raw ? PluginLoadReason.Dev : PluginLoadReason.Installed));
} catch (Exception ex) { } catch (Exception ex) {
Log.Error(ex, $"Plugin load for {dllFile.FullName} failed."); Log.Error(ex, $"Plugin load for {dllFile.FullName} failed.");
} }

View file

@ -81,7 +81,7 @@ namespace Dalamud.Plugin
if (disabledFile.Exists) if (disabledFile.Exists)
disabledFile.Delete(); 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) { if (dllFile.Exists && !enableAfterInstall) {
@ -128,7 +128,7 @@ namespace Dalamud.Plugin
testingFile.Delete(); 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) catch (Exception e)
{ {