public string Draw() { bool pOpen = true; ImGui.SetNextWindowSize(new Vector2(300, 300), ImGuiCond.FirstUseEver); if (ImGui.BeginPopupModal(ImGuiExt.IDWithExtra("File Selector", unique), ref pOpen)) { bool hasFilename = fileNameSelected >= 0 && fileNameSelected < fileNames.Length; string selected = hasFilename ? fileNames[fileNameSelected] : "None"; ImGui.Text($"Selected: {selected}"); ImGui.SameLine(); if (ImGuiExt.Button("Open", hasFilename)) { ImGui.CloseCurrentPopup(); return(BuildFullPath(fileNames[fileNameSelected])); } ImGui.SameLine(); if (ImGui.Button("Cancel")) { ImGui.CloseCurrentPopup(); } ImGui.Separator(); if (ImGui.Button("/")) { pathBar = new List <string>(); Populate(); } ImGui.SameLine(); for (int i = 0; i < pathBar.Count; i++) { if (ImGui.Button(ImGuiExt.IDWithExtra(pathBar[i], i))) { pathBar = pathBar.Take(i + 1).ToList(); Populate(); } ImGui.SameLine(); } ImGui.Dummy(new Vector2(1, 1)); ImGui.BeginChild("##currentDir", new Vector2(-1, -1), true); for (int i = 0; i < directoryNames.Length; i++) { IconSelectable( ImGuiExt.IDWithExtra(directoryNames[i], i), "folder", Color4.White, false, out bool doubleClicked ); if (doubleClicked) { pathBar.Add(directoryNames[i]); Populate(); } } for (int i = 0; i < fileNames.Length; i++) { if (IconSelectable( ImGuiExt.IDWithExtra(fileNames[i], -i), "file", Color4.White, fileNameSelected == i, out bool doubleClicked)) { fileNameSelected = i; } if (doubleClicked) { ImGui.CloseCurrentPopup(); return(BuildFullPath(fileNames[fileNameSelected])); } } ImGui.EndChild(); ImGui.EndPopup(); } return(null); }
protected override void Draw(double elapsed) { VertexBuffer.TotalDrawcalls = 0; EnableTextInput(); Viewport.Replace(0, 0, Width, Height); RenderState.ClearColor = new Color4(0.2f, 0.2f, 0.2f, 1f); RenderState.ClearAll(); // if (cutscene != null) { cutscene.Draw(); } Typewriter.Render(); // guiHelper.NewFrame(elapsed); ImGui.PushFont(ImGuiHelper.Noto); bool openLoad = false; bool openMultiple = false; isMultipleOpen = false; //Main Menu ImGui.BeginMainMenuBar(); if (ImGui.BeginMenu("File")) { if (Theme.IconMenuItem("Load Game Data", "open", Color4.White, true)) { var folder = FileDialog.ChooseFolder(); if (folder != null) { if (GameConfig.CheckFLDirectory(folder)) { openLoad = true; LoadData(folder); } else { //Error dialog } } } if (Theme.IconMenuItem("Open Thn", "open", Color4.White, GameData != null)) { var file = FileDialog.Open(); if (file != null) { Open(file); } } if (Theme.IconMenuItem("Open Multiple", "open", Color4.White, GameData != null)) { openFiles = new List <string>(); openMultiple = true; } if (Theme.IconMenuItem("Quit", "quit", Color4.White, true)) { Exit(); } ImGui.EndMenu(); } if (ImGui.BeginMenu("View")) { ImGui.MenuItem("Decompiled", "", ref decompiledOpen); ImGui.EndMenu(); } if (toReload != null && ImGui.MenuItem("Reload (F5)")) { Reload(); } var h = ImGui.GetWindowHeight(); ImGui.EndMainMenuBar(); bool popupopen = true; if (openLoad) { ImGui.OpenPopup("Loading"); openLoad = false; } popupopen = true; if (ImGui.BeginPopupModal("Loading", ref popupopen, ImGuiWindowFlags.AlwaysAutoResize)) { if (loaded) { ImGui.CloseCurrentPopup(); } ImGuiExt.Spinner("##spinner", 10, 2, ImGui.GetColorU32(ImGuiCol.ButtonHovered, 1)); ImGui.SameLine(); ImGui.Text("Loading"); ImGui.EndPopup(); } popupopen = true; if (openMultiple) { ImGui.OpenPopup("Open Multiple"); } if (ImGui.BeginPopupModal("Open Multiple", ref popupopen, ImGuiWindowFlags.AlwaysAutoResize)) { isMultipleOpen = true; if (ImGui.Button("+")) { var file = FileDialog.Open(); if (file != null) { openFiles.Add(file); } } ImGui.BeginChild("##files", new Vector2(200, 200), true, ImGuiWindowFlags.HorizontalScrollbar); int j = 0; foreach (var f in openFiles) { ImGui.Selectable(ImGuiExt.IDWithExtra(f, j++)); } ImGui.EndChild(); if (ImGuiExt.Button("Open", openFiles.Count > 0)) { ImGui.CloseCurrentPopup(); Open(openFiles.ToArray()); } } if (decompiled != null) { if (decompiledOpen) { ImGui.SetNextWindowSize(new Vector2(300, 300), ImGuiCond.FirstUseEver); int j = 0; if (ImGui.Begin("Decompiled", ref decompiledOpen)) { ImGui.BeginTabBar("##tabs", ImGuiTabBarFlags.Reorderable); foreach (var file in decompiled) { var tab = ImGuiExt.IDWithExtra(file.Name, j++); if (ImGui.BeginTabItem(tab)) { if (ImGui.Button("Copy")) { SetClipboardText(file.Text); } ImGui.SetNextItemWidth(-1); var th = ImGui.GetWindowHeight() - 100; ImGui.PushFont(ImGuiHelper.SystemMonospace); ImGui.InputTextMultiline("##src", ref file.Text, uint.MaxValue, new Vector2(0, th), ImGuiInputTextFlags.ReadOnly); ImGui.PopFont(); ImGui.EndTabItem(); } } ImGui.EndTabBar(); } } } ImGui.PopFont(); guiHelper.Render(RenderState); }