private void DrawDeleteModal() { if (_deleteIndex == null) { return; } ImGui.OpenPopup(DialogDeleteMod); var _ = true; ImGui.SetNextWindowPos(ImGui.GetMainViewport().GetCenter(), ImGuiCond.Appearing, Vector2.One / 2); var ret = ImGui.BeginPopupModal(DialogDeleteMod, ref _, ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoDecoration); if (!ret) { return; } using var raii = ImGuiRaii.DeferredEnd(ImGui.EndPopup); if (Mod == null) { _deleteIndex = null; ImGui.CloseCurrentPopup(); return; } ImGui.Text("Are you sure you want to delete the following mod:"); var halfLine = new Vector2(ImGui.GetTextLineHeight() / 2); ImGui.Dummy(halfLine); ImGui.TextColored(DeleteModNameColor, Mod.Data.Meta.Name); ImGui.Dummy(halfLine); var buttonSize = ImGuiHelpers.ScaledVector2(120, 0); if (ImGui.Button(ButtonYesDelete, buttonSize)) { ImGui.CloseCurrentPopup(); var mod = Mod; Cache.RemoveMod(mod); _modManager.DeleteMod(mod.Data.BasePath); ModFileSystem.InvokeChange(); ClearSelection(); } ImGui.SameLine(); if (ImGui.Button(ButtonNoDelete, buttonSize)) { ImGui.CloseCurrentPopup(); _deleteIndex = null; } }
private void DrawModAddPopup() { if (!ImGui.BeginPopup(LabelAddModPopup)) { return; } using var raii = ImGuiRaii.DeferredEnd(ImGui.EndPopup); if (_modAddKeyboardFocus) { ImGui.SetKeyboardFocusHere(); _modAddKeyboardFocus = false; } var newName = ""; if (ImGui.InputTextWithHint("##AddMod", "New Mod Name...", ref newName, 64, ImGuiInputTextFlags.EnterReturnsTrue)) { try { var newDir = TexToolsImport.CreateModFolder(new DirectoryInfo(Penumbra.Config !.ModDirectory), newName); var modMeta = new ModMeta { Author = "Unknown", Name = newName.Replace('/', '\\'), Description = string.Empty, }; var metaFile = new FileInfo(Path.Combine(newDir.FullName, "meta.json")); modMeta.SaveToFile(metaFile); _modManager.AddMod(newDir); ModFileSystem.InvokeChange(); SelectModOnUpdate(newDir.Name); } catch (Exception e) { PluginLog.Error($"Could not create directory for new Mod {newName}:\n{e}"); } ImGui.CloseCurrentPopup(); } if (ImGui.IsKeyPressed(ImGui.GetKeyIndex(ImGuiKey.Escape))) { ImGui.CloseCurrentPopup(); } }