From 5f9191ff20f5e4d006ffa2062453ba60d4478f64 Mon Sep 17 00:00:00 2001
From: Aireil <33433913+Aireil@users.noreply.github.com>
Date: Mon, 25 Jan 2021 01:06:41 +0100
Subject: [PATCH 1/2] Reload plugins when change in settings + fix scaling
---
Dalamud.Injector/Program.cs | 2 +-
Dalamud/Configuration/ThirdRepoSetting.cs | 7 ++++
Dalamud/Interface/DalamudSettingsWindow.cs | 29 ++++++++--------
Dalamud/Plugin/PluginInstallerWindow.cs | 39 ++++++++++++----------
4 files changed, 44 insertions(+), 33 deletions(-)
diff --git a/Dalamud.Injector/Program.cs b/Dalamud.Injector/Program.cs
index e5bbc6a00..040988955 100644
--- a/Dalamud.Injector/Program.cs
+++ b/Dalamud.Injector/Program.cs
@@ -182,7 +182,7 @@ namespace Dalamud.Injector {
$"DefaultPluginDirectory: {startInfo.DefaultPluginDirectory}\n" +
$"Language: {startInfo.Language}\n" +
$"GameVersion: {startInfo.GameVersion}\n" +
- $"OptOutMbCollection: {startInfo.OptOutMbCollection}" +
+ $"OptOutMbCollection: {startInfo.OptOutMbCollection}\n" +
$"AssetDirectory: {startInfo.AssetDirectory}");
return startInfo;
diff --git a/Dalamud/Configuration/ThirdRepoSetting.cs b/Dalamud/Configuration/ThirdRepoSetting.cs
index 3d022cdf2..3087059e2 100644
--- a/Dalamud/Configuration/ThirdRepoSetting.cs
+++ b/Dalamud/Configuration/ThirdRepoSetting.cs
@@ -9,5 +9,12 @@ namespace Dalamud.Configuration
class ThirdRepoSetting {
public string Url { get; set; }
public bool IsEnabled { get;set; }
+
+ public ThirdRepoSetting Clone() {
+ return new ThirdRepoSetting {
+ Url = this.Url,
+ IsEnabled = this.IsEnabled
+ };
+ }
}
}
diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs
index 59fd02735..fdb3b816d 100644
--- a/Dalamud/Interface/DalamudSettingsWindow.cs
+++ b/Dalamud/Interface/DalamudSettingsWindow.cs
@@ -30,7 +30,7 @@ namespace Dalamud.Interface
this.doToggleUiHideDuringGpose = this.dalamud.Configuration.ToggleUiHideDuringGpose;
this.doPluginTest = this.dalamud.Configuration.DoPluginTest;
- this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList;
+ this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList.Select(x => x.Clone()).ToList();
this.printPluginsWelcomeMsg = this.dalamud.Configuration.PrintPluginsWelcomeMsg;
this.autoUpdatePlugins = this.dalamud.Configuration.AutoUpdatePlugins;
@@ -114,7 +114,7 @@ namespace Dalamud.Interface
}
var windowSize = ImGui.GetWindowSize();
- ImGui.BeginChild("scrolling", new Vector2(windowSize.X - 10, windowSize.Y - 70) * ImGui.GetIO().FontGlobalScale, false, ImGuiWindowFlags.HorizontalScrollbar);
+ ImGui.BeginChild("scrolling", new Vector2(windowSize.X - 5 - (5 * ImGui.GetIO().FontGlobalScale), windowSize.Y - 35 - (35 * ImGui.GetIO().FontGlobalScale)), false, ImGuiWindowFlags.HorizontalScrollbar);
if (ImGui.BeginTabBar("SetTabBar")) {
if (ImGui.BeginTabItem(Loc.Localize("DalamudSettingsGeneral", "General"))) {
@@ -179,10 +179,6 @@ namespace Dalamud.Interface
}
if (ImGui.BeginTabItem(Loc.Localize("DalamudSettingsExperimental", "Experimental"))) {
- ImGui.Text(Loc.Localize("DalamudSettingsRestartHint", "You need to restart your game after changing these settings."));
-
- ImGui.Dummy(new Vector2(10f, 10f) * ImGui.GetIO().FontGlobalScale);
-
ImGui.Checkbox(Loc.Localize("DalamudSettingsPluginTest", "Get plugin testing builds"), ref this.doPluginTest);
ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingsPluginTestHint", "Receive testing prereleases for plugins."));
@@ -202,8 +198,8 @@ namespace Dalamud.Interface
ImGui.Dummy(new Vector2(5f, 5f) * ImGui.GetIO().FontGlobalScale);
ImGui.Columns(3);
- ImGui.SetColumnWidth(0, ImGui.GetWindowWidth() - 350);
- ImGui.SetColumnWidth(1, 60);
+ ImGui.SetColumnWidth(0, ImGui.GetWindowWidth() - (16 + 14) - (45 + 26) * ImGui.GetIO().FontGlobalScale);
+ ImGui.SetColumnWidth(1, 16 + (45 * ImGui.GetIO().FontGlobalScale));
ImGui.Separator();
@@ -229,8 +225,9 @@ namespace Dalamud.Interface
ImGui.PushID($"thirdRepo_{thirdRepoSetting.Url}");
- ImGui.Text(thirdRepoSetting.Url);
+ ImGui.TextWrapped(thirdRepoSetting.Url);
ImGui.NextColumn();
+ ImGui.SetCursorPosX(ImGui.GetCursorPosX() + (ImGui.GetColumnWidth() / 2) - (12 * ImGui.GetIO().FontGlobalScale) - 7);
ImGui.Checkbox("##thirdRepoCheck", ref isEnabled);
ImGui.NextColumn();
ImGui.PushFont(InterfaceManager.IconFont);
@@ -267,14 +264,13 @@ namespace Dalamud.Interface
}
}
ImGui.PopFont();
-
- if (!string.IsNullOrEmpty(this.thirdRepoAddError)) {
- ImGui.SameLine();
- ImGui.TextColored(new Vector4(1, 0, 0, 1), this.thirdRepoAddError);
- }
ImGui.Columns(1);
ImGui.EndTabItem();
+
+ if (!string.IsNullOrEmpty(this.thirdRepoAddError)) {
+ ImGui.TextColored(new Vector4(1, 0, 0, 1), this.thirdRepoAddError);
+ }
}
ImGui.EndTabBar();
@@ -284,6 +280,7 @@ namespace Dalamud.Interface
if (!isOpen) {
ImGui.GetIO().FontGlobalScale = this.dalamud.Configuration.GlobalUiScale;
+ this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList.Select(x => x.Clone()).ToList();
}
if (ImGui.Button(Loc.Localize("Save", "Save"))) {
Save();
@@ -314,12 +311,14 @@ namespace Dalamud.Interface
this.dalamud.Configuration.ToggleUiHideDuringGpose = this.doToggleUiHideDuringGpose;
this.dalamud.Configuration.DoPluginTest = this.doPluginTest;
- this.dalamud.Configuration.ThirdRepoList = this.thirdRepoList;
+ this.dalamud.Configuration.ThirdRepoList = this.thirdRepoList.Select(x => x.Clone()).ToList();
this.dalamud.Configuration.PrintPluginsWelcomeMsg = this.printPluginsWelcomeMsg;
this.dalamud.Configuration.AutoUpdatePlugins = this.autoUpdatePlugins;
this.dalamud.Configuration.Save();
+
+ this.dalamud.PluginRepository.ReloadPluginMasterAsync();
}
}
}
diff --git a/Dalamud/Plugin/PluginInstallerWindow.cs b/Dalamud/Plugin/PluginInstallerWindow.cs
index c4eb6de84..5cd97d788 100644
--- a/Dalamud/Plugin/PluginInstallerWindow.cs
+++ b/Dalamud/Plugin/PluginInstallerWindow.cs
@@ -62,6 +62,22 @@ namespace Dalamud.Plugin
this.dalamud.PluginRepository.ReloadPluginMasterAsync();
}
+ 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();
+ this.pluginListInstalled = this.dalamud.PluginRepository.PluginMaster
+ .Where(def => {
+ return this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).Any(
+ x => x.Definition.InternalName == def.InternalName);
+ })
+ .ToList();
+ this.pluginListInstalled.AddRange(hiddenPlugins);
+ this.pluginListInstalled.Sort((x, y) => x.Name.CompareTo(y.Name));
+
+ ResortPlugins();
+ }
+
private void ResortPlugins() {
var availableDefs = this.dalamud.PluginRepository.PluginMaster.Where(
x => this.pluginListInstalled.All(y => x.InternalName != y.InternalName)).ToList();
@@ -136,27 +152,16 @@ namespace Dalamud.Plugin
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.");
- }
- else if (this.dalamud.PluginRepository.State == PluginRepository.InitializationState.FailThirdRepo) {
+ 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.");
- }
- else {
+ this.pluginListAvailable = null;
+ } else {
if (this.pluginListAvailable == null) {
- 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();
- this.pluginListInstalled = this.dalamud.PluginRepository.PluginMaster
- .Where(def => {
- return this.dalamud.PluginManager.Plugins.Where(x => x.Definition != null).Any(
- x => x.Definition.InternalName == def.InternalName);
- })
- .ToList();
- this.pluginListInstalled.AddRange(hiddenPlugins);
- this.pluginListInstalled.Sort((x, y) => x.Name.CompareTo(y.Name));
-
- ResortPlugins();
+ RefetchPlugins();
}
}
From 348b8a5e3a8bb5a184edc6c8600caf49c221de7b Mon Sep 17 00:00:00 2001
From: Aireil <33433913+Aireil@users.noreply.github.com>
Date: Mon, 25 Jan 2021 14:20:43 +0100
Subject: [PATCH 2/2] Add third repo number and use it in the installer
---
Dalamud/Interface/DalamudSettingsWindow.cs | 26 ++++++++++++++++++----
Dalamud/Plugin/PluginDefinition.cs | 4 ++--
Dalamud/Plugin/PluginInstallerWindow.cs | 5 ++---
Dalamud/Plugin/PluginRepository.cs | 6 +++--
4 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs
index fdb3b816d..c1b5123d3 100644
--- a/Dalamud/Interface/DalamudSettingsWindow.cs
+++ b/Dalamud/Interface/DalamudSettingsWindow.cs
@@ -197,12 +197,16 @@ namespace Dalamud.Interface
ImGui.Dummy(new Vector2(5f, 5f) * ImGui.GetIO().FontGlobalScale);
- ImGui.Columns(3);
- ImGui.SetColumnWidth(0, ImGui.GetWindowWidth() - (16 + 14) - (45 + 26) * ImGui.GetIO().FontGlobalScale);
- ImGui.SetColumnWidth(1, 16 + (45 * ImGui.GetIO().FontGlobalScale));
+ ImGui.Columns(4);
+ ImGui.SetColumnWidth(0, 18 + 5 * ImGui.GetIO().FontGlobalScale);
+ ImGui.SetColumnWidth(1, ImGui.GetWindowWidth() - (18 + 16 + 14) - (5 + 45 + 26) * ImGui.GetIO().FontGlobalScale);
+ ImGui.SetColumnWidth(2, 16 + (45 * ImGui.GetIO().FontGlobalScale));
+ ImGui.SetColumnWidth(3, 14 + (26 * ImGui.GetIO().FontGlobalScale));
ImGui.Separator();
+ ImGui.Text("#");
+ ImGui.NextColumn();
ImGui.Text("URL");
ImGui.NextColumn();
ImGui.Text("Enabled");
@@ -212,6 +216,8 @@ namespace Dalamud.Interface
ImGui.Separator();
+ ImGui.Text("0");
+ ImGui.NextColumn();
ImGui.Text("XIVLauncher");
ImGui.NextColumn();
ImGui.NextColumn();
@@ -220,16 +226,23 @@ namespace Dalamud.Interface
ThirdRepoSetting toRemove = null;
+ var repoNumber = 1;
foreach (var thirdRepoSetting in this.thirdRepoList) {
var isEnabled = thirdRepoSetting.IsEnabled;
ImGui.PushID($"thirdRepo_{thirdRepoSetting.Url}");
+ ImGui.SetCursorPosX(ImGui.GetCursorPosX() + (ImGui.GetColumnWidth() / 2) - 8 - (ImGui.CalcTextSize(repoNumber.ToString()).X / 2));
+ ImGui.Text(repoNumber.ToString());
+ ImGui.NextColumn();
+
ImGui.TextWrapped(thirdRepoSetting.Url);
ImGui.NextColumn();
- ImGui.SetCursorPosX(ImGui.GetCursorPosX() + (ImGui.GetColumnWidth() / 2) - (12 * ImGui.GetIO().FontGlobalScale) - 7);
+
+ ImGui.SetCursorPosX(ImGui.GetCursorPosX() + (ImGui.GetColumnWidth() / 2) - 7 - 12 * ImGui.GetIO().FontGlobalScale);
ImGui.Checkbox("##thirdRepoCheck", ref isEnabled);
ImGui.NextColumn();
+
ImGui.PushFont(InterfaceManager.IconFont);
if (ImGui.Button(FontAwesomeIcon.Trash.ToIconString())) {
toRemove = thirdRepoSetting;
@@ -239,12 +252,17 @@ namespace Dalamud.Interface
ImGui.Separator();
thirdRepoSetting.IsEnabled = isEnabled;
+
+ repoNumber++;
}
if (toRemove != null) {
this.thirdRepoList.Remove(toRemove);
}
+ ImGui.SetCursorPosX(ImGui.GetCursorPosX() + (ImGui.GetColumnWidth() / 2) - 8 - (ImGui.CalcTextSize(repoNumber.ToString()).X / 2));
+ ImGui.Text(repoNumber.ToString());
+ ImGui.NextColumn();
ImGui.SetNextItemWidth(-1);
ImGui.InputText("##thirdRepoUrlInput", ref this.thirdRepoTempUrl, 300);
ImGui.NextColumn();
diff --git a/Dalamud/Plugin/PluginDefinition.cs b/Dalamud/Plugin/PluginDefinition.cs
index 3b866ff51..2b2fb0e70 100644
--- a/Dalamud/Plugin/PluginDefinition.cs
+++ b/Dalamud/Plugin/PluginDefinition.cs
@@ -79,9 +79,9 @@ namespace Dalamud.Plugin
public long LastUpdate { get; set; }
///
- /// Domain of the origin repo
+ /// Number of the repo.
///
- public string FromRepo { get; set; }
+ public int RepoNumber { get; set; }
///
/// Download link used to install the plugin.
diff --git a/Dalamud/Plugin/PluginInstallerWindow.cs b/Dalamud/Plugin/PluginInstallerWindow.cs
index 5cd97d788..7361264f5 100644
--- a/Dalamud/Plugin/PluginInstallerWindow.cs
+++ b/Dalamud/Plugin/PluginInstallerWindow.cs
@@ -365,9 +365,8 @@ namespace Dalamud.Plugin
info += pluginDefinition.DownloadCount != 0
? $", {pluginDefinition.DownloadCount} downloads"
: ", download count unavailable";
- if (pluginDefinition.FromRepo != "goatcorp.github.io" &&
- !string.IsNullOrWhiteSpace(pluginDefinition.FromRepo))
- info += $", from {pluginDefinition.FromRepo}";
+ if (pluginDefinition.RepoNumber != 0)
+ info += $", from custom plugin repository #{pluginDefinition.RepoNumber}";
ImGui.TextColored(new Vector4(0.5f, 0.5f, 0.5f, 1.0f), info);
if (!string.IsNullOrWhiteSpace(pluginDefinition.Description))
diff --git a/Dalamud/Plugin/PluginRepository.cs b/Dalamud/Plugin/PluginRepository.cs
index af55fbcc2..68e8d7fd8 100644
--- a/Dalamud/Plugin/PluginRepository.cs
+++ b/Dalamud/Plugin/PluginRepository.cs
@@ -51,19 +51,21 @@ namespace Dalamud.Plugin
try {
using var client = new WebClient();
+ var repoNumber = 0;
foreach (var repo in repos) {
Log.Information("[PLUGINR] Fetching repo: {0}", repo);
var data = client.DownloadString(repo);
var unsortedPluginMaster = JsonConvert.DeserializeObject>(data);
- var host = new Uri(repo).Host;
foreach (var pluginDefinition in unsortedPluginMaster) {
- pluginDefinition.FromRepo = host;
+ pluginDefinition.RepoNumber = repoNumber;
}
allPlugins.AddRange(unsortedPluginMaster);
+
+ repoNumber++;
}
this.PluginMaster = allPlugins.AsReadOnly();