From 03b1927434787f1340e5c40f48852950d6acf516 Mon Sep 17 00:00:00 2001
From: goat <16760685+goaaats@users.noreply.github.com>
Date: Thu, 1 Apr 2021 20:53:49 +0200
Subject: [PATCH] refactor: new code style in PluginInstallerWindow.cs
---
Dalamud/Plugin/PluginInstallerWindow.cs | 598 ++++++++++++++----------
1 file changed, 344 insertions(+), 254 deletions(-)
diff --git a/Dalamud/Plugin/PluginInstallerWindow.cs b/Dalamud/Plugin/PluginInstallerWindow.cs
index f487eac8d..b270e4a43 100644
--- a/Dalamud/Plugin/PluginInstallerWindow.cs
+++ b/Dalamud/Plugin/PluginInstallerWindow.cs
@@ -1,25 +1,25 @@
using System;
using System.Collections.Generic;
-using System.Collections.ObjectModel;
using System.Diagnostics;
-using System.IO;
-using System.IO.Compression;
using System.Linq;
-using System.Net;
-using System.Net.Http;
using System.Numerics;
-using System.Text;
using System.Threading.Tasks;
+
using CheapLoc;
using Dalamud.Interface;
using ImGuiNET;
-using Newtonsoft.Json;
using Serilog;
namespace Dalamud.Plugin
{
- internal class PluginInstallerWindow {
+ ///
+ /// Class responsible for drawing the plugin installer.
+ ///
+ internal class PluginInstallerWindow
+ {
private readonly Dalamud dalamud;
+ private readonly Vector4 colorGrey = new Vector4(0.70f, 0.70f, 0.70f, 1.00f);
+
private string gameVersion;
private bool errorModalDrawing = true;
@@ -32,29 +32,20 @@ namespace Dalamud.Plugin
private List pluginListAvailable;
private List pluginListInstalled;
- private string searchText = "";
-
- private readonly Vector4 colorGrey = new Vector4(0.70f, 0.70f, 0.70f, 1.00f);
-
- private enum PluginInstallStatus {
- None,
- InProgress,
- Success,
- Fail
- }
-
- private PluginInstallStatus installStatus = PluginInstallStatus.None;
-
- private enum PluginSortKind {
- Alphabetical,
- DownloadCount,
- LastUpdate
- }
+ private string searchText = string.Empty;
private PluginSortKind sortKind = PluginSortKind.Alphabetical;
private string filterText = Loc.Localize("SortAlphabetical", "Alphabetical");
- public PluginInstallerWindow(Dalamud dalamud, string gameVersion) {
+ private PluginInstallStatus installStatus = PluginInstallStatus.None;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The relevant Dalamud instance.
+ /// The version of the game.
+ public PluginInstallerWindow(Dalamud dalamud, string gameVersion)
+ {
this.dalamud = dalamud;
this.gameVersion = gameVersion;
@@ -62,30 +53,256 @@ namespace Dalamud.Plugin
this.dalamud.PluginRepository.ReloadPluginMasterAsync();
}
- private void RefetchPlugins() {
+ private enum PluginInstallStatus
+ {
+ None,
+ InProgress,
+ Success,
+ Fail,
+ }
+
+ private enum PluginSortKind
+ {
+ Alphabetical,
+ DownloadCount,
+ LastUpdate,
+ }
+
+ ///
+ /// Draw the plugin installer view ImGui.
+ ///
+ /// Whether or not the plugin installer window is open.
+ public bool Draw()
+ {
+ var windowOpen = true;
+
+ ImGui.SetNextWindowSize(new Vector2(810, 520) * ImGui.GetIO().FontGlobalScale);
+
+ ImGui.Begin(
+ Loc.Localize("InstallerHeader", "Plugin Installer") + (this.dalamud.Configuration.DoPluginTest ? " (TESTING)" : string.Empty) + "###XlPluginInstaller",
+ ref windowOpen,
+ ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoScrollbar);
+
+ ImGui.SetCursorPosY(ImGui.GetCursorPosY() - (5 * ImGui.GetIO().FontGlobalScale));
+ var descriptionText = Loc.Localize("InstallerHint", "This window allows you to install and remove in-game plugins.\nThey are made by third-party developers.");
+ ImGui.Text(descriptionText);
+
+ var sortingTextSize = ImGui.CalcTextSize(Loc.Localize("SortDownloadCounts", "Download Count")) + ImGui.CalcTextSize(Loc.Localize("PluginSort", "Sort By"));
+ ImGui.SameLine(ImGui.GetWindowWidth() - sortingTextSize.X - ((250 + 20) * ImGui.GetIO().FontGlobalScale));
+ ImGui.SetCursorPosY(ImGui.GetCursorPosY() + (ImGui.CalcTextSize(descriptionText).Y / 4) - 2);
+ ImGui.SetCursorPosX(ImGui.GetWindowWidth() - sortingTextSize.X - ((250 + 20) * ImGui.GetIO().FontGlobalScale));
+
+ ImGui.SetNextItemWidth(240 * ImGui.GetIO().FontGlobalScale);
+ ImGui.InputTextWithHint("###XPlPluginInstaller_Search", Loc.Localize("InstallerSearch", "Search"), ref this.searchText, 100);
+
+ ImGui.SameLine();
+ ImGui.SetNextItemWidth((10 * ImGui.GetIO().FontGlobalScale) + ImGui.CalcTextSize(Loc.Localize("SortDownloadCounts", "Download Count")).X);
+ if (ImGui.BeginCombo(Loc.Localize("PluginSort", "Sort By"), this.filterText, ImGuiComboFlags.NoArrowButton))
+ {
+ if (ImGui.Selectable(Loc.Localize("SortAlphabetical", "Alphabetical")))
+ {
+ this.sortKind = PluginSortKind.Alphabetical;
+ this.filterText = Loc.Localize("SortAlphabetical", "Alphabetical");
+
+ this.ResortPlugins();
+ }
+
+ if (ImGui.Selectable(Loc.Localize("SortDownloadCounts", "Download Count")))
+ {
+ this.sortKind = PluginSortKind.DownloadCount;
+ this.filterText = Loc.Localize("SortDownloadCounts", "Download Count");
+
+ this.ResortPlugins();
+ }
+
+ if (ImGui.Selectable(Loc.Localize("SortLastUpdate", "Last Update")))
+ {
+ this.sortKind = PluginSortKind.LastUpdate;
+ this.filterText = Loc.Localize("SortLastUpdate", "Last Update");
+
+ this.ResortPlugins();
+ }
+
+ ImGui.EndCombo();
+ }
+
+ ImGui.SetCursorPosY(ImGui.GetCursorPosY() - (5 * ImGui.GetIO().FontGlobalScale));
+
+ string initializationStatusText = null;
+ if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.InProgress)
+ {
+ initializationStatusText = Loc.Localize("InstallerLoading", "Loading plugins...");
+ this.pluginListAvailable = null;
+ }
+ else if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.Fail)
+ {
+ initializationStatusText = Loc.Localize("InstallerDownloadFailed", "Download failed.");
+ this.pluginListAvailable = null;
+ }
+ else if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.FailThirdRepo)
+ {
+ initializationStatusText = Loc.Localize("InstallerDownloadFailedThird", "One of your third party repos is unreachable or there is no internet connection.");
+ this.pluginListAvailable = null;
+ }
+ else
+ {
+ if (this.pluginListAvailable == null)
+ {
+ this.RefetchPlugins();
+ }
+ }
+
+ ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(1, 3) * ImGui.GetIO().FontGlobalScale);
+
+ if (ImGui.BeginTabBar("PluginsTabBar", ImGuiTabBarFlags.NoTooltip))
+ {
+ this.DrawTab(false, initializationStatusText);
+ this.DrawTab(true, initializationStatusText);
+
+ ImGui.EndTabBar();
+ ImGui.Separator();
+ }
+
+ ImGui.PopStyleVar();
+
+ ImGui.Dummy(new Vector2(3f, 3f) * ImGui.GetIO().FontGlobalScale);
+
+ if (this.installStatus == PluginInstallStatus.InProgress)
+ {
+ ImGui.Button(Loc.Localize("InstallerUpdating", "Updating..."));
+ }
+ else
+ {
+ if (this.updateComplete)
+ {
+ ImGui.Button(this.updatePluginCount == 0
+ ? Loc.Localize("InstallerNoUpdates", "No updates found!")
+ : string.Format(Loc.Localize("InstallerUpdateComplete", "{0} plugins updated!"), this.updatePluginCount));
+ }
+ else
+ {
+ if (ImGui.Button(Loc.Localize("InstallerUpdatePlugins", "Update plugins")))
+ {
+ this.installStatus = PluginInstallStatus.InProgress;
+
+ Task.Run(() => this.dalamud.PluginRepository.UpdatePlugins()).ContinueWith(t =>
+ {
+ this.installStatus =
+ t.Result.Success ? PluginInstallStatus.Success : PluginInstallStatus.Fail;
+ this.installStatus =
+ t.IsFaulted ? PluginInstallStatus.Fail : this.installStatus;
+
+ if (this.installStatus == PluginInstallStatus.Success)
+ {
+ this.updateComplete = true;
+ }
+
+ if (t.Result.UpdatedPlugins != null)
+ {
+ this.updatePluginCount = t.Result.UpdatedPlugins.Count;
+ this.updatedPlugins = t.Result.UpdatedPlugins;
+ }
+
+ this.errorModalDrawing = this.installStatus == PluginInstallStatus.Fail;
+ this.errorModalOnNextFrame = this.installStatus == PluginInstallStatus.Fail;
+
+ this.dalamud.PluginRepository.PrintUpdatedPlugins(this.updatedPlugins, Loc.Localize("DalamudPluginUpdates", "Updates:"));
+ });
+ }
+ }
+ }
+
+ ImGui.SameLine();
+
+ if (ImGui.Button(Loc.Localize("SettingsInstaller", "Settings")))
+ {
+ this.dalamud.DalamudUi.OpenSettings();
+ }
+
+ var closeText = Loc.Localize("Close", "Close");
+
+ ImGui.SameLine(ImGui.GetWindowWidth() - ImGui.CalcTextSize(closeText).X - (16 * ImGui.GetIO().FontGlobalScale));
+ if (ImGui.Button(closeText))
+ {
+ windowOpen = false;
+ this.dalamud.Configuration.Save();
+ }
+
+ if (ImGui.BeginPopupModal(Loc.Localize("InstallerError", "Installer failed"), ref this.errorModalDrawing, ImGuiWindowFlags.AlwaysAutoResize))
+ {
+ var message = Loc.Localize(
+ "InstallerErrorHint",
+ "The plugin installer ran into an issue or the plugin is incompatible.\nPlease restart the game and report this error on our discord.");
+
+ if (this.updatedPlugins != null)
+ {
+ if (this.updatedPlugins.Any(x => x.WasUpdated == false))
+ {
+ var extraInfoMessage = Loc.Localize(
+ "InstallerErrorPluginInfo",
+ "\n\nThe following plugins caused these issues:\n\n{0}\nYou may try removing these plugins manually and reinstalling them.");
+
+ var insert = this.updatedPlugins.Where(x => x.WasUpdated == false)
+ .Aggregate(
+ string.Empty,
+ (current, pluginUpdateStatus) =>
+ current + $"* {pluginUpdateStatus.InternalName}\n");
+ extraInfoMessage = string.Format(extraInfoMessage, insert);
+ message += extraInfoMessage;
+ }
+ }
+
+ ImGui.Text(message);
+
+ ImGui.Spacing();
+
+ if (ImGui.Button(Loc.Localize("OK", "OK"), new Vector2(120, 40)))
+ {
+ ImGui.CloseCurrentPopup();
+ }
+
+ ImGui.EndPopup();
+ }
+
+ if (this.errorModalOnNextFrame)
+ {
+ ImGui.OpenPopup(Loc.Localize("InstallerError", "Installer failed"));
+ this.errorModalOnNextFrame = false;
+ }
+
+ ImGui.End();
+
+ return windowOpen;
+ }
+
+ private void RefetchPlugins()
+ {
var hiddenPlugins = this.dalamud.PluginManager.Plugins.Where(
x => this.dalamud.PluginRepository.PluginMaster.All(
- y => y.InternalName != x.Definition.InternalName || y.InternalName == x.Definition.InternalName && y.IsHide)).Select(x => x.Definition).ToList();
+ y => y.InternalName != x.Definition.InternalName || (y.InternalName == x.Definition.InternalName && y.IsHide))).Select(x => x.Definition).ToList();
this.pluginListInstalled = this.dalamud.PluginRepository.PluginMaster
- .Where(def => {
+ .Where(def =>
+ {
return this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).Any(
x => x.Definition.InternalName == def.InternalName);
})
- .GroupBy(x => new {x.InternalName, x.AssemblyVersion})
+ .GroupBy(x => new { x.InternalName, x.AssemblyVersion })
.Select(y => y.First()).ToList();
this.pluginListInstalled.AddRange(hiddenPlugins);
this.pluginListInstalled.Sort((x, y) => x.Name.CompareTo(y.Name));
- ResortPlugins();
+ this.ResortPlugins();
}
- private void ResortPlugins() {
+ private void ResortPlugins()
+ {
var availableDefs = this.dalamud.PluginRepository.PluginMaster.Where(
x => this.pluginListInstalled.All(y => x.InternalName != y.InternalName))
- .GroupBy(x => new {x.InternalName, x.AssemblyVersion})
+ .GroupBy(x => new { x.InternalName, x.AssemblyVersion })
.Select(y => y.First()).ToList();
- switch (this.sortKind) {
+ switch (this.sortKind)
+ {
case PluginSortKind.Alphabetical:
this.pluginListAvailable = availableDefs.OrderBy(x => x.Name).ToList();
this.pluginListInstalled.Sort((x, y) => x.Name.CompareTo(y.Name));
@@ -103,198 +320,36 @@ namespace Dalamud.Plugin
}
}
- public bool Draw() {
- var windowOpen = true;
-
- ImGui.SetNextWindowSize(new Vector2(810, 520) * ImGui.GetIO().FontGlobalScale);
-
- ImGui.Begin(Loc.Localize("InstallerHeader", "Plugin Installer") + (this.dalamud.Configuration.DoPluginTest ? " (TESTING)" : string.Empty) + "###XlPluginInstaller", ref windowOpen,
- ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoScrollbar);
-
- ImGui.SetCursorPosY(ImGui.GetCursorPosY() - (5 * ImGui.GetIO().FontGlobalScale));
- var descriptionText = Loc.Localize("InstallerHint", "This window allows you to install and remove in-game plugins.\nThey are made by third-party developers.");
- ImGui.Text(descriptionText);
-
- var sortingTextSize = ImGui.CalcTextSize(Loc.Localize("SortDownloadCounts", "Download Count")) + ImGui.CalcTextSize(Loc.Localize("PluginSort", "Sort By"));
- ImGui.SameLine(ImGui.GetWindowWidth() - sortingTextSize.X - ((250 + 20) * ImGui.GetIO().FontGlobalScale));
- ImGui.SetCursorPosY(ImGui.GetCursorPosY() + (ImGui.CalcTextSize(descriptionText).Y / 4) - 2);
- ImGui.SetCursorPosX(ImGui.GetWindowWidth() - sortingTextSize.X - ((250 + 20) * ImGui.GetIO().FontGlobalScale));
-
- ImGui.SetNextItemWidth(240 * ImGui.GetIO().FontGlobalScale);
- ImGui.InputTextWithHint("###XPlPluginInstaller_Search", Loc.Localize("InstallerSearch", "Search"), ref this.searchText, 100);
-
- ImGui.SameLine();
- ImGui.SetNextItemWidth((10 * ImGui.GetIO().FontGlobalScale) + ImGui.CalcTextSize(Loc.Localize("SortDownloadCounts", "Download Count")).X);
- if (ImGui.BeginCombo(Loc.Localize("PluginSort", "Sort By"), this.filterText, ImGuiComboFlags.NoArrowButton)) {
- if (ImGui.Selectable(Loc.Localize("SortAlphabetical", "Alphabetical"))) {
- this.sortKind = PluginSortKind.Alphabetical;
- this.filterText = Loc.Localize("SortAlphabetical", "Alphabetical");
-
- ResortPlugins();
- }
-
- if (ImGui.Selectable(Loc.Localize("SortDownloadCounts", "Download Count"))) {
- this.sortKind = PluginSortKind.DownloadCount;
- this.filterText = Loc.Localize("SortDownloadCounts", "Download Count");
-
- ResortPlugins();
- }
-
- if (ImGui.Selectable(Loc.Localize("SortLastUpdate", "Last Update"))) {
- this.sortKind = PluginSortKind.LastUpdate;
- this.filterText = Loc.Localize("SortLastUpdate", "Last Update");
-
- ResortPlugins();
- }
-
- ImGui.EndCombo();
- }
-
- ImGui.SetCursorPosY(ImGui.GetCursorPosY() - (5 * ImGui.GetIO().FontGlobalScale));
-
- string initializationStatusText = null;
- if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.InProgress) {
- initializationStatusText = Loc.Localize("InstallerLoading", "Loading plugins...");
- this.pluginListAvailable = null;
- } else if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.Fail) {
- initializationStatusText = Loc.Localize("InstallerDownloadFailed", "Download failed.");
- this.pluginListAvailable = null;
- } else if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.FailThirdRepo) {
- initializationStatusText = Loc.Localize("InstallerDownloadFailedThird", "One of your third party repos is unreachable or there is no internet connection.");
- this.pluginListAvailable = null;
- } else {
- if (this.pluginListAvailable == null) {
- RefetchPlugins();
- }
- }
-
- ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(1, 3) * ImGui.GetIO().FontGlobalScale);
-
- if (ImGui.BeginTabBar("PluginsTabBar", ImGuiTabBarFlags.NoTooltip)) {
- DrawTab(false, initializationStatusText);
- DrawTab(true, initializationStatusText);
-
- ImGui.EndTabBar();
- ImGui.Separator();
- }
-
- ImGui.PopStyleVar();
-
- ImGui.Dummy(new Vector2(3f, 3f) * ImGui.GetIO().FontGlobalScale);
-
- if (this.installStatus == PluginInstallStatus.InProgress) {
- ImGui.Button(Loc.Localize("InstallerUpdating", "Updating..."));
- } else {
- if (this.updateComplete) {
- ImGui.Button(this.updatePluginCount == 0
- ? Loc.Localize("InstallerNoUpdates", "No updates found!")
- : string.Format(Loc.Localize("InstallerUpdateComplete", "{0} plugins updated!"), this.updatePluginCount));
- } else {
- if (ImGui.Button(Loc.Localize("InstallerUpdatePlugins", "Update plugins"))) {
- this.installStatus = PluginInstallStatus.InProgress;
-
- Task.Run(() => this.dalamud.PluginRepository.UpdatePlugins()).ContinueWith(t => {
- this.installStatus =
- t.Result.Success ? PluginInstallStatus.Success : PluginInstallStatus.Fail;
- this.installStatus =
- t.IsFaulted ? PluginInstallStatus.Fail : this.installStatus;
-
- if (this.installStatus == PluginInstallStatus.Success) {
- this.updateComplete = true;
- }
-
- if (t.Result.UpdatedPlugins != null) {
- this.updatePluginCount = t.Result.UpdatedPlugins.Count;
- this.updatedPlugins = t.Result.UpdatedPlugins;
- }
-
- this.errorModalDrawing = this.installStatus == PluginInstallStatus.Fail;
- this.errorModalOnNextFrame = this.installStatus == PluginInstallStatus.Fail;
-
- this.dalamud.PluginRepository.PrintUpdatedPlugins(updatedPlugins, Loc.Localize("DalamudPluginUpdates", "Updates:"));
- });
- }
- }
- }
-
-
- ImGui.SameLine();
-
- if (ImGui.Button(Loc.Localize("SettingsInstaller", "Settings"))) {
- this.dalamud.DalamudUi.OpenSettings();
- }
-
- var closeText = Loc.Localize("Close", "Close");
-
- ImGui.SameLine(ImGui.GetWindowWidth() - ImGui.CalcTextSize(closeText).X - (16 * ImGui.GetIO().FontGlobalScale));
- if (ImGui.Button(closeText)) {
- windowOpen = false;
- this.dalamud.Configuration.Save();
- }
-
-
- if (ImGui.BeginPopupModal(Loc.Localize("InstallerError","Installer failed"), ref this.errorModalDrawing, ImGuiWindowFlags.AlwaysAutoResize)) {
- var message = Loc.Localize("InstallerErrorHint",
- "The plugin installer ran into an issue or the plugin is incompatible.\nPlease restart the game and report this error on our discord.");
-
- if (this.updatedPlugins != null) {
- if (this.updatedPlugins.Any(x => x.WasUpdated == false)) {
- var extraInfoMessage = Loc.Localize("InstallerErrorPluginInfo",
- "\n\nThe following plugins caused these issues:\n\n{0}\nYou may try removing these plugins manually and reinstalling them.");
-
- var insert = this.updatedPlugins.Where(x => x.WasUpdated == false)
- .Aggregate(string.Empty,
- (current, pluginUpdateStatus) =>
- current + $"* {pluginUpdateStatus.InternalName}\n");
- extraInfoMessage = string.Format(extraInfoMessage, insert);
- message += extraInfoMessage;
- }
- }
-
- ImGui.Text(message);
-
- ImGui.Spacing();
-
- if (ImGui.Button(Loc.Localize("OK", "OK"), new Vector2(120, 40))) { ImGui.CloseCurrentPopup(); }
-
- ImGui.EndPopup();
- }
-
- if (this.errorModalOnNextFrame) {
- ImGui.OpenPopup(Loc.Localize("InstallerError", "Installer failed"));
- this.errorModalOnNextFrame = false;
- }
-
-
- ImGui.End();
-
- return windowOpen;
- }
-
- private void DrawTab(bool installed, string statusText) {
+ private void DrawTab(bool installed, string statusText)
+ {
if (ImGui.BeginTabItem(installed ? Loc.Localize("InstallerInstalledPluginList", "Installed Plugins")
- : Loc.Localize("InstallerAvailablePluginList", "Available Plugins"))) {
- ImGui.BeginChild("Scrolling" + (installed ? "Installed" : "Available"),
- new Vector2(0, 384 * ImGui.GetIO().FontGlobalScale), true, ImGuiWindowFlags.HorizontalScrollbar | ImGuiWindowFlags.NoBackground);
+ : Loc.Localize("InstallerAvailablePluginList", "Available Plugins")))
+ {
+ ImGui.BeginChild(
+ "Scrolling" + (installed ? "Installed" : "Available"),
+ new Vector2(0, 384 * ImGui.GetIO().FontGlobalScale),
+ true,
+ ImGuiWindowFlags.HorizontalScrollbar | ImGuiWindowFlags.NoBackground);
ImGui.SetCursorPosY(ImGui.GetCursorPosY() - 5);
- if (statusText != null) {
+ if (statusText != null)
ImGui.TextColored(this.colorGrey, statusText);
- } else {
- DrawPluginList(installed ? this.pluginListInstalled : this.pluginListAvailable, installed);
- }
+ else
+ this.DrawPluginList(installed ? this.pluginListInstalled : this.pluginListAvailable, installed);
ImGui.EndChild();
ImGui.EndTabItem();
}
}
- private void DrawPluginList(List pluginDefinitions, bool installed) {
+ private void DrawPluginList(List pluginDefinitions, bool installed)
+ {
var didAny = false;
var didAnyWithSearch = false;
var hasSearchString = !string.IsNullOrWhiteSpace(this.searchText);
- for (var index = 0; index < pluginDefinitions.Count; index++) {
+ for (var index = 0; index < pluginDefinitions.Count; index++)
+ {
var pluginDefinition = pluginDefinitions[index];
if (pluginDefinition.ApplicableVersion != this.gameVersion &&
@@ -314,12 +369,10 @@ namespace Dalamud.Plugin
if (hasSearchString &&
!(pluginDefinition.Name.ToLowerInvariant().Contains(this.searchText.ToLowerInvariant()) ||
- string.Equals(pluginDefinition.Author, this.searchText,
- StringComparison.InvariantCultureIgnoreCase) ||
- pluginDefinition.Tags != null &&
- pluginDefinition.Tags.Contains(this.searchText.ToLowerInvariant(),
- StringComparer.InvariantCultureIgnoreCase)
- ))
+ string.Equals(pluginDefinition.Author, this.searchText, StringComparison.InvariantCultureIgnoreCase) ||
+ (pluginDefinition.Tags != null && pluginDefinition.Tags.Contains(
+ this.searchText.ToLowerInvariant(),
+ StringComparer.InvariantCultureIgnoreCase))))
continue;
didAnyWithSearch = true;
@@ -330,17 +383,22 @@ namespace Dalamud.Plugin
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;
+ }
if (this.dalamud.Configuration.DoPluginTest && pluginDefinition.IsTestingExclusive)
isTestingAvailable = true;
else if (!this.dalamud.Configuration.DoPluginTest && pluginDefinition.IsTestingExclusive) continue;
var label = string.Empty;
- if (isInstalled && !installed) {
+ if (isInstalled && !installed)
+ {
label += Loc.Localize("InstallerInstalled", " (installed)");
- } else if (!isInstalled && installed) {
+ }
+ else if (!isInstalled && installed)
+ {
label += Loc.Localize("InstallerDisabled", " (disabled)");
}
@@ -357,7 +415,8 @@ namespace Dalamud.Plugin
ImGui.PushID(pluginDefinition.InternalName + pluginDefinition.AssemblyVersion + installed + index);
- if (ImGui.CollapsingHeader(pluginDefinition.Name + label + "###Header" + pluginDefinition.InternalName)) {
+ if (ImGui.CollapsingHeader(pluginDefinition.Name + label + "###Header" + pluginDefinition.InternalName))
+ {
ImGui.Indent();
ImGui.Text(pluginDefinition.Name);
@@ -375,19 +434,24 @@ namespace Dalamud.Plugin
if (!string.IsNullOrWhiteSpace(pluginDefinition.Description))
ImGui.TextWrapped(pluginDefinition.Description);
- if (!isInstalled) {
- if (this.installStatus == PluginInstallStatus.InProgress) {
+ if (!isInstalled)
+ {
+ if (this.installStatus == PluginInstallStatus.InProgress)
+ {
ImGui.Button(Loc.Localize("InstallerInProgress", "Install in progress..."));
- } else {
+ }
+ else
+ {
var versionString = isTestingAvailable
? pluginDefinition.TestingAssemblyVersion + " (testing version)"
: pluginDefinition.AssemblyVersion;
- if (ImGui.Button($"Install v{versionString}")) {
+ if (ImGui.Button($"Install v{versionString}"))
+ {
this.installStatus = PluginInstallStatus.InProgress;
- Task.Run(() => this.dalamud.PluginRepository.InstallPlugin(
- pluginDefinition, true, false, isTestingAvailable)).ContinueWith(t => {
+ Task.Run(() => this.dalamud.PluginRepository.InstallPlugin(pluginDefinition, true, false, isTestingAvailable)).ContinueWith(t =>
+ {
this.installStatus =
t.Result ? PluginInstallStatus.Success : PluginInstallStatus.Fail;
this.installStatus =
@@ -395,11 +459,12 @@ namespace Dalamud.Plugin
this.errorModalDrawing = this.installStatus == PluginInstallStatus.Fail;
this.errorModalOnNextFrame = this.installStatus == PluginInstallStatus.Fail;
- });
+ });
}
}
- if (!string.IsNullOrEmpty(pluginDefinition.RepoUrl)) {
+ if (!string.IsNullOrEmpty(pluginDefinition.RepoUrl))
+ {
ImGui.PushFont(InterfaceManager.IconFont);
ImGui.SameLine();
@@ -409,7 +474,9 @@ namespace Dalamud.Plugin
ImGui.PopFont();
}
- } else {
+ }
+ else
+ {
var installedPlugin = this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).First(
x => x.Definition.InternalName ==
pluginDefinition.InternalName);
@@ -417,7 +484,8 @@ namespace Dalamud.Plugin
var commands = this.dalamud.CommandManager.Commands.Where(
x => x.Value.LoaderAssemblyName == installedPlugin.Definition?.InternalName &&
x.Value.ShowInHelp);
- if (commands.Any()) {
+ if (commands.Any())
+ {
ImGui.Dummy(new Vector2(10f, 10f) * ImGui.GetIO().FontGlobalScale);
foreach (var command in commands)
ImGui.TextWrapped($"{command.Key} → {command.Value.HelpMessage}");
@@ -425,13 +493,18 @@ namespace Dalamud.Plugin
ImGui.NewLine();
- if (!installedPlugin.IsRaw) {
+ if (!installedPlugin.IsRaw)
+ {
ImGui.SameLine();
- if (ImGui.Button(Loc.Localize("InstallerDisable", "Disable"))) {
- try {
+ if (ImGui.Button(Loc.Localize("InstallerDisable", "Disable")))
+ {
+ try
+ {
this.dalamud.PluginManager.DisablePlugin(installedPlugin.Definition);
- } catch (Exception exception) {
+ }
+ catch (Exception exception)
+ {
Log.Error(exception, "Could not disable plugin.");
this.errorModalDrawing = true;
this.errorModalOnNextFrame = true;
@@ -439,14 +512,16 @@ namespace Dalamud.Plugin
}
}
- if (installedPlugin.PluginInterface.UiBuilder.HasConfigUi) {
+ if (installedPlugin.PluginInterface.UiBuilder.HasConfigUi)
+ {
ImGui.SameLine();
if (ImGui.Button(Loc.Localize("InstallerOpenConfig", "Open Configuration")))
installedPlugin.PluginInterface.UiBuilder.OpenConfigUi();
}
- if (!string.IsNullOrEmpty(installedPlugin.Definition.RepoUrl)) {
+ if (!string.IsNullOrEmpty(installedPlugin.Definition.RepoUrl))
+ {
ImGui.PushFont(InterfaceManager.IconFont);
ImGui.SameLine();
@@ -460,10 +535,12 @@ namespace Dalamud.Plugin
ImGui.SameLine();
ImGui.TextColored(new Vector4(0.5f, 0.5f, 0.5f, 1.0f), $" v{installedPlugin.Definition.AssemblyVersion}");
- if (installedPlugin.IsRaw) {
+ if (installedPlugin.IsRaw)
+ {
ImGui.SameLine();
- ImGui.TextColored(new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
- this.dalamud.PluginRepository.PluginMaster.Any(x => x.InternalName == installedPlugin.Definition.InternalName)
+ ImGui.TextColored(
+ new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
+ this.dalamud.PluginRepository.PluginMaster.Any(x => x.InternalName == installedPlugin.Definition.InternalName)
? " This plugin is available in one of your repos, please remove it from the devPlugins folder."
: " To disable this plugin, please remove it from the devPlugins folder.");
}
@@ -472,7 +549,8 @@ namespace Dalamud.Plugin
ImGui.Unindent();
}
- if (ImGui.BeginPopupContextItem("item context menu")) {
+ if (ImGui.BeginPopupContextItem("item context menu"))
+ {
if (ImGui.Selectable("Hide from installer"))
this.dalamud.Configuration.HiddenPluginInternalName.Add(pluginDefinition.InternalName);
ImGui.EndPopup();
@@ -481,19 +559,31 @@ namespace Dalamud.Plugin
ImGui.PopID();
}
- if (!didAny) {
- if (installed) {
- ImGui.TextColored(this.colorGrey,
- Loc.Localize("InstallerNoInstalled",
- "No plugins are currently installed. You can install them from the Available Plugins tab."));
- } else {
- ImGui.TextColored(this.colorGrey,
- Loc.Localize("InstallerNoCompatible",
- "No compatible plugins were found :( Please restart your game and try again."));
+ if (!didAny)
+ {
+ if (installed)
+ {
+ ImGui.TextColored(
+ this.colorGrey,
+ Loc.Localize(
+ "InstallerNoInstalled",
+ "No plugins are currently installed. You can install them from the Available Plugins tab."));
}
- } else if (!didAnyWithSearch)
- ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1.0f),
- Loc.Localize("InstallNoMatching", "No plugins were found matching your search."));
+ else
+ {
+ ImGui.TextColored(
+ this.colorGrey,
+ Loc.Localize(
+ "InstallerNoCompatible",
+ "No compatible plugins were found :( Please restart your game and try again."));
+ }
+ }
+ else if (!didAnyWithSearch)
+ {
+ ImGui.TextColored(
+ new Vector4(0.7f, 0.7f, 0.7f, 1.0f),
+ Loc.Localize("InstallNoMatching", "No plugins were found matching your search."));
+ }
}
}
}