From 4ca76180b745f7fc7d82bc9544fe8310311d4db6 Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Sun, 13 Dec 2020 21:15:47 +0100 Subject: [PATCH] feat: third party repo UI --- Dalamud/Configuration/DalamudConfiguration.cs | 2 + Dalamud/Configuration/ThirdRepoSetting.cs | 13 +++ Dalamud/Interface/DalamudSettingsWindow.cs | 84 ++++++++++++++++++- 3 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 Dalamud/Configuration/ThirdRepoSetting.cs diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index 5d11508f2..f41b80596 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using Dalamud.Configuration; using Dalamud.Game.Chat; using Newtonsoft.Json; using Serilog; @@ -25,6 +26,7 @@ namespace Dalamud public bool DoPluginTest { get; set; } = false; public bool DoDalamudTest { get; set; } = false; + public List ThirdRepoList { get; set; }= new List(); public float GlobalUiScale { get; set; } = 1.0f; public bool ToggleUiHide { get; set; } = true; diff --git a/Dalamud/Configuration/ThirdRepoSetting.cs b/Dalamud/Configuration/ThirdRepoSetting.cs new file mode 100644 index 000000000..3d022cdf2 --- /dev/null +++ b/Dalamud/Configuration/ThirdRepoSetting.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dalamud.Configuration +{ + class ThirdRepoSetting { + public string Url { get; set; } + public bool IsEnabled { get;set; } + } +} diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs index 29e2a8a2a..5efb53e5b 100644 --- a/Dalamud/Interface/DalamudSettingsWindow.cs +++ b/Dalamud/Interface/DalamudSettingsWindow.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Numerics; +using System.Windows.Forms.VisualStyles; using CheapLoc; +using Dalamud.Configuration; using Dalamud.Game.Chat; using ImGuiNET; @@ -28,6 +30,7 @@ namespace Dalamud.Interface this.doPluginTest = this.dalamud.Configuration.DoPluginTest; this.doDalamudTest = this.dalamud.Configuration.DoDalamudTest; + this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList; this.printPluginsWelcomeMsg = this.dalamud.Configuration.PrintPluginsWelcomeMsg; @@ -85,9 +88,12 @@ namespace Dalamud.Interface private bool doToggleUiHide; private bool doToggleUiHideDuringCutscenes; private bool doToggleUiHideDuringGpose; + private List thirdRepoList; private bool printPluginsWelcomeMsg; + private string thirdRepoTempUrl = string.Empty; + #region Experimental private bool doPluginTest; @@ -96,16 +102,17 @@ namespace Dalamud.Interface #endregion public bool Draw() { - ImGui.SetNextWindowSize(new Vector2(500, 500) * ImGui.GetIO().FontGlobalScale, ImGuiCond.Always); + ImGui.SetNextWindowSize(new Vector2(740, 500) * ImGui.GetIO().FontGlobalScale, ImGuiCond.FirstUseEver); var isOpen = true; - if (!ImGui.Begin(Loc.Localize("DalamudSettingsHeader", "Dalamud Settings") + "###XlSettings", ref isOpen, ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize)) { + if (!ImGui.Begin(Loc.Localize("DalamudSettingsHeader", "Dalamud Settings") + "###XlSettings2", ref isOpen, ImGuiWindowFlags.NoCollapse)) { ImGui.End(); return false; } - ImGui.BeginChild("scrolling", new Vector2(499, 430) * ImGui.GetIO().FontGlobalScale, false, ImGuiWindowFlags.HorizontalScrollbar); + var windowSize = ImGui.GetWindowSize(); + ImGui.BeginChild("scrolling", new Vector2(windowSize.X - 10, windowSize.Y - 70) * ImGui.GetIO().FontGlobalScale, false, ImGuiWindowFlags.HorizontalScrollbar); if (ImGui.BeginTabBar("SetTabBar")) { if (ImGui.BeginTabItem(Loc.Localize("DalamudSettingsGeneral", "General"))) { @@ -175,6 +182,76 @@ namespace Dalamud.Interface ImGui.Checkbox(Loc.Localize("DalamudSettingDalamudTest", "Get Dalamud testing builds"), ref this.doDalamudTest); ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingDalamudTestHint", "Receive testing prereleases for Dalamud.")); + ImGui.Dummy(new Vector2(12f, 12f) * ImGui.GetIO().FontGlobalScale); + + ImGui.Text(Loc.Localize("DalamudSettingsCustomRepo", "Custom Plugin Repositories")); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingCustomRepoHint", "Add custom plugin repositories. Only change these settings if you know what you are doing.")); + + ImGui.Dummy(new Vector2(5f, 5f) * ImGui.GetIO().FontGlobalScale); + + ImGui.Columns(3); + ImGui.SetColumnWidth(0, ImGui.GetWindowWidth() - 350); + ImGui.SetColumnWidth(1, 60); + ImGui.SetColumnWidth(2, 60); + + ImGui.Separator(); + + ImGui.Text("URL"); + ImGui.NextColumn(); + ImGui.Text("Enabled"); + ImGui.NextColumn(); + ImGui.Text(""); + ImGui.NextColumn(); + + ImGui.Separator(); + + ImGui.Text("XIVLauncher"); + ImGui.NextColumn(); + ImGui.NextColumn(); + ImGui.NextColumn(); + ImGui.Separator(); + + ThirdRepoSetting toRemove = null; + + foreach (var thirdRepoSetting in this.thirdRepoList) { + var isEnabled = thirdRepoSetting.IsEnabled; + + ImGui.PushID(thirdRepoSetting.Url); + + ImGui.Text(thirdRepoSetting.Url); + ImGui.NextColumn(); + ImGui.Checkbox("##thirdRepoCheck", ref isEnabled); + ImGui.NextColumn(); + ImGui.PushFont(InterfaceManager.IconFont); + if (ImGui.Button(FontAwesomeIcon.Trash.ToIconString())) { + toRemove = thirdRepoSetting; + } + ImGui.PopFont(); + ImGui.NextColumn(); + ImGui.Separator(); + + thirdRepoSetting.IsEnabled = isEnabled; + } + + if (toRemove != null) { + this.thirdRepoList.Remove(toRemove); + } + + ImGui.InputText("##thirdRepoUrlInput", ref this.thirdRepoTempUrl, 300); + ImGui.NextColumn(); + ImGui.NextColumn(); + ImGui.PushFont(InterfaceManager.IconFont); + if (ImGui.Button(FontAwesomeIcon.Plus.ToIconString())) { + this.thirdRepoList.Add(new ThirdRepoSetting { + Url = this.thirdRepoTempUrl + }); + + this.thirdRepoTempUrl = string.Empty; + } + ImGui.PopFont(); + + ImGui.Columns(1); + ImGui.EndTabItem(); } @@ -216,6 +293,7 @@ namespace Dalamud.Interface this.dalamud.Configuration.DoPluginTest = this.doPluginTest; this.dalamud.Configuration.DoDalamudTest = this.doDalamudTest; + this.dalamud.Configuration.ThirdRepoList = this.thirdRepoList; this.dalamud.Configuration.PrintPluginsWelcomeMsg = this.printPluginsWelcomeMsg;