Esempio n. 1
0
    public override void Draw()
    {
        base.Draw();

        if (!Program.CompatibilityTools.IsToolDownloaded)
        {
            ImGui.BeginDisabled();
            ImGui.Text("Compatibility tool isn't set up. Please start the game at least once.");

            ImGui.Dummy(new Vector2(10));
        }

        if (ImGui.Button("Open prefix"))
        {
            Util.OpenBrowser(Program.CompatibilityTools.Settings.Prefix.FullName);
        }

        ImGui.SameLine();

        if (ImGui.Button("Open Wine configuration"))
        {
            Program.CompatibilityTools.RunInPrefix("winecfg");
        }

        ImGui.SameLine();

        if (ImGui.Button("Open Wine explorer (run apps in prefix)"))
        {
            Program.CompatibilityTools.RunInPrefix("explorer");
        }

        if (ImGui.Button("Kill all wine processes"))
        {
            Program.CompatibilityTools.Kill();
        }

        if (!Program.CompatibilityTools.IsToolDownloaded)
        {
            ImGui.EndDisabled();
        }
    }
    public override void Draw()
    {
        if (ImGui.BeginTabBar("###settingsTabs"))
        {
            if (string.IsNullOrEmpty(this.searchInput))
            {
                foreach (SettingsTab settingsTab in this.tabs)
                {
                    if (settingsTab.IsUnixExclusive && Environment.OSVersion.Platform != PlatformID.Unix)
                    {
                        continue;
                    }

                    if (ImGui.BeginTabItem(settingsTab.Title))
                    {
                        if (ImGui.BeginChild($"###settings_scrolling_{settingsTab.Title}", new Vector2(-1, -1), false))
                        {
                            settingsTab.Draw();
                        }

                        ImGui.EndChild();
                        ImGui.EndTabItem();
                    }
                }
            }
            else
            {
                if (ImGui.BeginTabItem("Search Results"))
                {
                    var any = false;

                    foreach (SettingsTab settingsTab in this.tabs)
                    {
                        if (settingsTab.IsUnixExclusive && Environment.OSVersion.Platform != PlatformID.Unix)
                        {
                            continue;
                        }

                        var eligible = settingsTab.Entries.Where(x => x.Name.ToLower().Contains(this.searchInput.ToLower())).ToArray();

                        if (!eligible.Any())
                        {
                            continue;
                        }

                        any = true;

                        ImGui.TextColored(ImGuiColors.DalamudGrey, settingsTab.Title);
                        ImGui.Dummy(new Vector2(5));

                        foreach (SettingsEntry settingsTabEntry in settingsTab.Entries)
                        {
                            if (!settingsTabEntry.Name.ToLower().Contains(this.searchInput.ToLower()))
                            {
                                continue;
                            }

                            settingsTabEntry.Draw();
                        }

                        ImGui.Separator();

                        ImGui.Dummy(new Vector2(10));
                    }

                    if (!any)
                    {
                        ImGui.TextColored(ImGuiColors.DalamudGrey, "No results found...");
                    }

                    ImGui.EndTabItem();
                }
            }
        }

        ImGui.SetCursorPos(ImGuiHelpers.ViewportSize - new Vector2(60));

        if (ImGui.BeginChild("###settingsFinishButton"))
        {
            ImGui.PushStyleVar(ImGuiStyleVar.FrameRounding, 100f);
            ImGui.PushFont(FontManager.IconFont);

            var invalid = this.tabs.Any(x => x.Entries.Any(y => !y.IsValid));
            if (invalid)
            {
                ImGui.BeginDisabled();
            }

            if (ImGui.Button(FontAwesomeIcon.Check.ToIconString(), new Vector2(40)))
            {
                foreach (var settingsTab in this.tabs)
                {
                    settingsTab.Save();
                }

                this.App.State = LauncherApp.LauncherState.Main;
            }

            if (invalid)
            {
                ImGui.EndDisabled();
            }
        }

        ImGui.EndChild();

        ImGui.PopStyleVar();
        ImGui.PopFont();

        var vpSize = ImGuiHelpers.ViewportSize;

        ImGui.SetCursorPos(new Vector2(vpSize.X - 250, 4));
        ImGui.SetNextItemWidth(240);
        ImGui.InputTextWithHint("###searchInput", "Search for settings...", ref this.searchInput, 100);

        base.Draw();
    }