예제 #1
0
            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;
                }
            }
예제 #2
0
            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();
                }
            }