public override void DrawSettingsMenu() { string[] settingName = { "Build Selection", "Build Edit", "Add Build", "Colors", "Sliders" }; ImGuiNative.igGetContentRegionAvail(out var newcontentRegionArea); if (ImGui.BeginChild("LeftSettings", new Vector2(150, newcontentRegionArea.Y), false, WindowFlags.Default)) { for (var i = 0; i < settingName.Length; i++) { if (ImGui.Selectable(settingName[i], selected == i)) { selected = i; } } } ImGui.EndChild(); ImGui.SameLine(); ImGui.PushStyleVar(StyleVar.ChildRounding, 5.0f); ImGuiNative.igGetContentRegionAvail(out newcontentRegionArea); if (ImGui.BeginChild("RightSettings", new Vector2(newcontentRegionArea.X, newcontentRegionArea.Y), true, WindowFlags.Default)) { switch (settingName[selected]) { case "Build Selection": if (ImGui.Button("Open Build Folder")) { Process.Start(SkillTreeUrlFilesDir); } ImGui.SameLine(); if (ImGui.Button("Reload List")) { LoadBuildFiles(); } ImGui.SameLine(); if (ImGui.Button("Open Forum Thread")) { ReadHtmlLineFromFile(Settings.SelectedURLFile); } Settings.SelectedURLFile = ImGuiExtension.ComboBox("Build Files", Settings.SelectedURLFile, BuildFiles, out var tempBool, ComboFlags.HeightLarge); if (tempBool) { ReadUrlFromSelectedUrl(Settings.SelectedURLFile); } break; case "Build Edit": if (!string.IsNullOrEmpty(CurrentlySelectedBuildFile)) { CurrentlySelectedBuildFileEdit = ImGuiExtension.InputText("##RenameLabel", CurrentlySelectedBuildFileEdit, 1024, InputTextFlags.EnterReturnsTrue); ImGui.SameLine(); if (ImGui.Button("Rename Build")) { RenameFile(CurrentlySelectedBuildFileEdit, Settings.SelectedURLFile); } CurrentlySelectedBuildUrl = ImGuiExtension.InputText("##ChangeURL", CurrentlySelectedBuildUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll); ImGui.SameLine(); if (ImGui.Button("Change URL")) { ReplaceUrlContents(Settings.SelectedURLFile, CurrentlySelectedBuildUrl); } CurrentlySelectedBuildForumThread = ImGuiExtension.InputText("##ChangeThreadURL", CurrentlySelectedBuildForumThread, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll); ImGui.SameLine(); if (ImGui.Button("Change Thread URL")) { ReplaceThreadUrlContents(Settings.SelectedURLFile, CurrentlySelectedBuildForumThread); } } else { ImGui.Text("No Build Selected"); } break; case "Add Build": AddNewBuildFile = ImGuiExtension.InputText("Build Name", AddNewBuildFile, 1024, InputTextFlags.EnterReturnsTrue); AddNewBuildUrl = ImGuiExtension.InputText("Build URL", AddNewBuildUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll); AddNewBuildThreadUrl = ImGuiExtension.InputText("Build Thread URL", AddNewBuildThreadUrl, 1024, InputTextFlags.EnterReturnsTrue | InputTextFlags.AutoSelectAll); if (ImGui.Button("Create Build")) { AddNewBuild(AddNewBuildFile, AddNewBuildUrl, AddNewBuildThreadUrl); AddNewBuildFile = ""; AddNewBuildUrl = ""; AddNewBuildThreadUrl = ""; } break; case "Colors": Settings.PickedBorderColor.Value = ImGuiExtension.ColorPicker("Border Color", Settings.PickedBorderColor); Settings.UnpickedBorderColor.Value = ImGuiExtension.ColorPicker("Unpicked Border Color", Settings.UnpickedBorderColor); Settings.WrongPickedBorderColor.Value = ImGuiExtension.ColorPicker("Wrong picked Border Color", Settings.WrongPickedBorderColor); Settings.LineColor.Value = ImGuiExtension.ColorPicker("Line Color", Settings.LineColor); break; case "Sliders": Settings.PickedBorderWidth.Value = ImGuiExtension.IntSlider("Picked Border Width", Settings.PickedBorderWidth); Settings.UnpickedBorderWidth.Value = ImGuiExtension.IntSlider("Unpicked Border Width", Settings.UnpickedBorderWidth); Settings.WrongPickedBorderWidth.Value = ImGuiExtension.IntSlider("WrongPicked Border Width", Settings.WrongPickedBorderWidth); Settings.LineWidth.Value = ImGuiExtension.IntSlider("Line Width", Settings.LineWidth); break; } } ImGui.PopStyleVar(); ImGui.EndChild(); }
public override void DrawSettings() { string[] settingName = { "Build Selection", "Build Edit", "Build Add", "Colors", "Sliders", "Toggles" }; var newcontentRegionArea = ImGuiNative.igGetContentRegionAvail(); if (ImGui.BeginChild("LeftSettings", new Vector2(150, newcontentRegionArea.Y), false, ImGuiWindowFlags.None)) { for (var i = 0; i < settingName.Length; i++) { if (ImGui.Selectable(settingName[i], selected == i)) { selected = i; } } } ImGui.EndChild(); ImGui.SameLine(); ImGui.PushStyleVar(ImGuiStyleVar.ChildRounding, 5.0f); newcontentRegionArea = ImGuiNative.igGetContentRegionAvail(); if (ImGui.BeginChild("RightSettings", new Vector2(newcontentRegionArea.X, newcontentRegionArea.Y), true, ImGuiWindowFlags.None)) { switch (settingName[selected]) { case "Build Selection": // Open Build Folder if (ImGui.Button("Open Build Folder")) { Process.Start(SkillTreeUrlFilesDir); } ImGui.SameLine(); // Populate Build List if (ImGui.Button("(Re)Load List")) { BuildFiles = TreeConfig.GetBuilds(); } ImGui.SameLine(); // Open Forum Thread if (ImGui.Button("Open Forum Thread")) { Process.Start(Settings.SelectedBuild.BuildLink); } Settings.SelectedURLFile = ImGuiExtension.ComboBox("Builds", Settings.SelectedURLFile, BuildFiles, out var buildSelected, ImGuiComboFlags.HeightLarge); if (buildSelected) { Settings.SelectedBuild = TreeConfig.LoadBuild(Settings.SelectedURLFile); ReadUrlFromSelectedUrl(Settings.SelectedURLFile); } var TreeToUse = -1; ImGui.Separator(); ImGui.Text($"Currently Selected: {Settings.SelectedTreeName}"); ImGui.Separator(); ImGui.Columns(2, "LoadColums", true); ImGui.SetColumnWidth(0, 51f); ImGui.Text(""); ImGui.NextColumn(); ImGui.Text("Tree Name"); ImGui.NextColumn(); if (Settings.SelectedBuild.Trees.Count != 0) { ImGui.Separator(); } for (var j = 0; j < Settings.SelectedBuild.Trees.Count; j++) { if (ImGui.Button($"LOAD##LOADRULE{j}")) { TreeToUse = j; Settings.SelectedBuild.SelectedIndex = j; } ImGui.NextColumn(); ImGui.Text(Settings.SelectedBuild.Trees[j].Tag); ImGui.NextColumn(); ImGui.PopItemWidth(); } ImGui.Columns(1, "", false); ImGui.Separator(); if (TreeToUse != -1) { ReadUrlFromSelectedBuild(Settings.SelectedBuild.Trees[TreeToUse].SkillTreeUrl, Settings.SelectedBuild.Trees[TreeToUse].Tag); } ImGui.Text("NOTES:"); // only way to wrap text with imgui.net without a limit on TextWrap function ImGuiNative.igPushTextWrapPos(0.0f); ImGui.TextUnformatted(Settings.SelectedBuild.Notes); ImGuiNative.igPopTextWrapPos(); break; case "Build Edit": if (Settings.SelectedBuild.Trees.Count > 0) { var treesToRemove = new List <int>(); var treesToMoveEdit = new List <Tuple <int, bool> >(); ImGui.Separator(); Settings.SelectedBuild.BuildLink = ImGuiExtension.InputText("Forum Thread", Settings.SelectedBuild.BuildLink, 1024, ImGuiInputTextFlags.None); ImGui.Text("Notes"); // Keep at max 4k byte size not sure why it crashes when upped, not going to bother dealing with this either. Settings.SelectedBuild.Notes = ImGuiExtension.MultiLineTextBox("##Notes", Settings.SelectedBuild.Notes, 150000, new Vector2(newcontentRegionArea.X - 20, 200), ImGuiInputTextFlags.Multiline); ImGui.Separator(); ImGui.Columns(4, "EditColums", true); ImGui.SetColumnWidth(0, 30f); ImGui.SetColumnWidth(1, 50f); ImGui.Text(""); ImGui.NextColumn(); ImGui.Text("Move"); ImGui.NextColumn(); ImGui.Text("Tree Name"); ImGui.NextColumn(); ImGui.Text("Skill Tree"); ImGui.NextColumn(); if (Settings.SelectedBuild.Trees.Count != 0) { ImGui.Separator(); } for (var j = 0; j < Settings.SelectedBuild.Trees.Count; j++) { if (ImGui.Button($"X##REMOVERULE{j}")) { treesToRemove.Add(j); } ImGui.NextColumn(); if (ImGui.Button($"^##MOVERULEUPEDIT{j}")) { treesToMoveEdit.Add(new Tuple <int, bool>(j, true)); } ImGui.SameLine(); if (ImGui.Button($"v##MOVERULEDOWNEDIT{j}")) { treesToMoveEdit.Add(new Tuple <int, bool>(j, false)); } ImGui.NextColumn(); ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X); Settings.SelectedBuild.Trees[j].Tag = ImGuiExtension.InputText($"##TAG{j}", Settings.SelectedBuild.Trees[j].Tag, 1024, ImGuiInputTextFlags.AutoSelectAll).TrimEnd('\0').TrimEnd('\u0000').Replace("\u0000", ""); ImGui.PopItemWidth(); //ImGui.SameLine(); ImGui.NextColumn(); ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X); Settings.SelectedBuild.Trees[j].SkillTreeUrl = ImGuiExtension.InputText($"##GN{j}", Settings.SelectedBuild.Trees[j].SkillTreeUrl, 1024, ImGuiInputTextFlags.AutoSelectAll).TrimEnd('\0').TrimEnd('\u0000').Replace("\u0000", ""); ImGui.NextColumn(); ImGui.PopItemWidth(); } foreach (var i in treesToRemove) { Settings.SelectedBuild.Trees.Remove(Settings.SelectedBuild.Trees[i]); } ImGui.Separator(); ImGui.Columns(1, "", false); if (ImGui.Button($"+##AN")) { Settings.SelectedBuild.Trees.Add(new TreeConfig.Tree()); } ImGui.Separator(); foreach (var i in treesToMoveEdit) { if (i.Item2) { // Move Up if (i.Item1 > 0) { var itemAbove = Settings.SelectedBuild.Trees[i.Item1 - 1]; var itemMoving = Settings.SelectedBuild.Trees[i.Item1]; Settings.SelectedBuild.Trees[i.Item1 - 1] = itemMoving; Settings.SelectedBuild.Trees[i.Item1] = itemAbove; } } else { // Move Down if (i.Item1 < Settings.SelectedBuild.Trees.Count - 1) { var itemBelow = Settings.SelectedBuild.Trees[i.Item1 + 1]; var itemMoving = Settings.SelectedBuild.Trees[i.Item1]; Settings.SelectedBuild.Trees[i.Item1 + 1] = itemMoving; Settings.SelectedBuild.Trees[i.Item1] = itemBelow; } } } //ImGui.Separator(); CurrentlySelectedBuildFileEdit = ImGuiExtension.InputText("##RenameLabel", CurrentlySelectedBuildFileEdit, 200, ImGuiInputTextFlags.None); ImGui.SameLine(); if (ImGui.Button("Rename Build")) { RenameFile(CurrentlySelectedBuildFileEdit, Settings.SelectedURLFile); BuildFiles = TreeConfig.GetBuilds(); } if (ImGui.Button($"Save Build to File: {Settings.SelectedURLFile}")) { TreeConfig.SaveSettingFile($@"{SkillTreeUrlFilesDir}\{Settings.SelectedURLFile}", Settings.SelectedBuild); BuildFiles = TreeConfig.GetBuilds(); } } else { ImGui.Text("No Data Selected"); } break; case "Build Add": var treesToRemoveCreation = new List <int>(); var treesToMove = new List <Tuple <int, bool> >(); ImGui.Separator(); Settings.SelectedBuildCreating.BuildLink = ImGuiExtension.InputText("Forum Thread", Settings.SelectedBuildCreating.BuildLink, 1024, ImGuiInputTextFlags.None); ImGui.Text("Notes"); // Keep at max 4k byte size not sure why it crashes when upped, not going to bother dealing with this either. ImGuiExtension.MultiLineTextBox("##NotesAdd", Settings.SelectedBuildCreating.Notes, 4000, new Vector2(newcontentRegionArea.X - 20, 200), ImGuiInputTextFlags.Multiline); ImGui.Separator(); ImGui.Columns(4, "AddColums", true); ImGui.SetColumnWidth(0, 30f); ImGui.SetColumnWidth(1, 50f); ImGui.Text(""); ImGui.NextColumn(); ImGui.Text("Move"); ImGui.NextColumn(); ImGui.Text("Tree Name"); ImGui.NextColumn(); ImGui.Text("Skill Tree"); ImGui.NextColumn(); if (Settings.SelectedBuildCreating.Trees.Count != 0) { ImGui.Separator(); } for (var j = 0; j < Settings.SelectedBuildCreating.Trees.Count; j++) { if (ImGui.Button($"X##REMOVERULE{j}")) { treesToRemoveCreation.Add(j); } ImGui.NextColumn(); if (ImGui.Button($"^##MOVERULEUP{j}")) { treesToMove.Add(new Tuple <int, bool>(j, true)); } ImGui.SameLine(); if (ImGui.Button($"v##MOVERULEDOWN{j}")) { treesToMove.Add(new Tuple <int, bool>(j, false)); } ImGui.NextColumn(); ImGui.PushItemWidth(ImGui.GetWindowContentRegionWidth()); Settings.SelectedBuildCreating.Trees[j].Tag = ImGuiExtension.InputText($"##TAGADD{j}", Settings.SelectedBuildCreating.Trees[j].Tag, 1024, ImGuiInputTextFlags.AutoSelectAll); ImGui.PopItemWidth(); //ImGui.SameLine(); ImGui.NextColumn(); ImGui.PushItemWidth(ImGui.GetWindowContentRegionWidth()); Settings.SelectedBuildCreating.Trees[j].SkillTreeUrl = ImGuiExtension.InputText($"##GNADD{j}", Settings.SelectedBuildCreating.Trees[j].SkillTreeUrl, 1024, ImGuiInputTextFlags.AutoSelectAll); ImGui.PopItemWidth(); ImGui.NextColumn(); } foreach (var i in treesToRemoveCreation) { Settings.SelectedBuildCreating.Trees.Remove(Settings.SelectedBuildCreating.Trees[i]); } ImGui.Separator(); ImGui.Columns(1, "", false); if (ImGui.Button($"+##AN")) { Settings.SelectedBuildCreating.Trees.Add(new TreeConfig.Tree()); } ImGui.Separator(); foreach (var i in treesToMove) { if (i.Item2) { // Move Up if (i.Item1 > 0) { var itemAbove = Settings.SelectedBuildCreating.Trees[i.Item1 - 1]; var itemMoving = Settings.SelectedBuildCreating.Trees[i.Item1]; Settings.SelectedBuildCreating.Trees[i.Item1 - 1] = itemMoving; Settings.SelectedBuildCreating.Trees[i.Item1] = itemAbove; } } else { // Move Down if (i.Item1 < Settings.SelectedBuildCreating.Trees.Count - 1) { var itemBelow = Settings.SelectedBuildCreating.Trees[i.Item1 + 1]; var itemMoving = Settings.SelectedBuildCreating.Trees[i.Item1]; Settings.SelectedBuildCreating.Trees[i.Item1 + 1] = itemMoving; Settings.SelectedBuildCreating.Trees[i.Item1] = itemBelow; } } } //ImGui.Separator(); AddNewBuildFile = ImGuiExtension.InputText("##CreationLabel", AddNewBuildFile, 1024, ImGuiInputTextFlags.EnterReturnsTrue); if (ImGui.Button($"Save Build to File: {AddNewBuildFile}")) { TreeConfig.SaveSettingFile($@"{SkillTreeUrlFilesDir}\{AddNewBuildFile}", Settings.SelectedBuildCreating); BuildFiles = TreeConfig.GetBuilds(); Settings.SelectedBuildCreating = new TreeConfig.SkillTreeData(); } break; case "Colors": Settings.PickedBorderColor.Value = ImGuiExtension.ColorPicker("Border Color", Settings.PickedBorderColor); Settings.UnpickedBorderColor.Value = ImGuiExtension.ColorPicker("Unpicked Border Color", Settings.UnpickedBorderColor); Settings.WrongPickedBorderColor.Value = ImGuiExtension.ColorPicker("Wrong picked Border Color", Settings.WrongPickedBorderColor); Settings.LineColor.Value = ImGuiExtension.ColorPicker("Line Color", Settings.LineColor); break; case "Sliders": Settings.offsetX.Value = ImGuiExtension.IntSlider("offsetX", Settings.offsetX); Settings.offsetY.Value = ImGuiExtension.IntSlider("offsetY", Settings.offsetY); Settings.PickedBorderWidth.Value = ImGuiExtension.IntSlider("Picked Border Width", Settings.PickedBorderWidth); Settings.UnpickedBorderWidth.Value = ImGuiExtension.IntSlider("Unpicked Border Width", Settings.UnpickedBorderWidth); Settings.WrongPickedBorderWidth.Value = ImGuiExtension.IntSlider("WrongPicked Border Width", Settings.WrongPickedBorderWidth); Settings.LineWidth.Value = ImGuiExtension.IntSlider("Line Width", Settings.LineWidth); break; case "Toggles": Settings.EnableEzTreeChanger.Value = ImGuiExtension.Checkbox("Enable EZ Tree Changer Within Builds", Settings.EnableEzTreeChanger); break; } } ImGui.PopStyleVar(); ImGui.EndChild(); }