[API] Implement ImGuiFileDialog extension (#89)

* Initial setup for ImGuiFileDialog extension

* Need to resolve linker errors. Working on PaneFun callback.

* Remove jni callback code that is not compiling to expose linker error.

* Callbacks for paneFun not yet implemented. Linker error still present, seems that some header is being included multiple times.

* Fixed linker errors. Added example for demo.

* Add support for multiple callbacks

* Callbacks work
This commit is contained in:
Trevor Flynn authored and GitHub committed 2021-11-16 13:07:13 +02:00
1 parent ec68f20e0c
commit 0bbbc2e037
11 files changed
+444 -1

No files matched your search

@@ -0,0 +1,61 @@
import imgui.extension.imguifiledialog.ImGuiFileDialog;
import imgui.extension.imguifiledialog.callback.ImGuiFileDialogPaneFun;
import imgui.extension.imguifiledialog.flag.ImGuiFileDialogFlags;
import imgui.flag.ImGuiCond;
import imgui.internal.ImGui;
import imgui.type.ImBoolean;
import java.awt.*;
import java.net.URI;
import java.util.Map;
public class ExampleImGuiFileDialog {
private static final String URL = "https://github.com/aiekick/ImGuiFileDialog";
private static Map<String, String> selection = null;
private static long userData = 0;
private static ImGuiFileDialogPaneFun callback = new ImGuiFileDialogPaneFun() {
@Override
public void paneFun(String filter, long userDatas, boolean canContinue) {
ImGui.text("Filter: " + filter);
}
};
public static void show(ImBoolean showImGuiFileDialogDemo) {
ImGui.setNextWindowSize(800, 200, ImGuiCond.Once);
ImGui.setNextWindowPos(ImGui.getMainViewport().getPosX() + 100, ImGui.getMainViewport().getPosY() + 100, ImGuiCond.Once);
if (ImGui.begin("ImGuiFileDialogDemo Demo", showImGuiFileDialogDemo)) {
ImGui.text("This a demo for ImGuiFileDialog");
ImGui.alignTextToFramePadding();
ImGui.text("Repo:");
ImGui.sameLine();
if (ImGui.button(URL)) {
try {
Desktop.getDesktop().browse(new URI(URL));
} catch (Exception e) {
e.printStackTrace();
}
}
if (ImGui.button("Browse File")) {
ImGuiFileDialog.openModal("browse-key", "Choose File", ".java", ".", callback, 250, 1, 42, ImGuiFileDialogFlags.None);
}
if (ImGuiFileDialog.display("browse-key", ImGuiFileDialogFlags.None, 200, 400, 800, 600)) {
if (ImGuiFileDialog.isOk()) {
selection = ImGuiFileDialog.getSelection();
userData = ImGuiFileDialog.getUserDatas();
}
ImGuiFileDialog.close();
}
}
if (selection != null && !selection.isEmpty()) {
ImGui.text("Selected: " + selection.values().stream().findFirst().get());
ImGui.text("User Data: " + userData);
}
ImGui.end();
}
}
+6
View File
@@ -10,6 +10,7 @@ public class Extra {
private static final ImBoolean SHOW_IMPLOT_DEMO_WINDOW = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUIZMO_DEMO = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUI_COLOR_TEXT_EDIT_WINDOW = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUI_FILE_DIALOG_WINDOW = new ImBoolean(false);
private static final Graph GRAPH = new Graph();
@@ -22,6 +23,7 @@ public class Extra {
ImGui.checkbox("Show ImPlot Demo Window", SHOW_IMPLOT_DEMO_WINDOW);
ImGui.checkbox("Show ImGuizmo Demo Window", SHOW_IMGUIZMO_DEMO);
ImGui.checkbox("Show ImGuiColorTextEdit Demo Window", SHOW_IMGUI_COLOR_TEXT_EDIT_WINDOW);
ImGui.checkbox("Show ImGuiFileDialog Demo Window", SHOW_IMGUI_FILE_DIALOG_WINDOW);
if (SHOW_DEMO_WINDOW.get()) {
ImGui.showDemoWindow(SHOW_DEMO_WINDOW);
@@ -50,5 +52,9 @@ public class Extra {
if (SHOW_IMGUI_COLOR_TEXT_EDIT_WINDOW.get()) {
ExampleImGuiColorTextEdit.show(SHOW_IMGUI_COLOR_TEXT_EDIT_WINDOW);
}
if (SHOW_IMGUI_FILE_DIALOG_WINDOW.get()) {
ExampleImGuiFileDialog.show(SHOW_IMGUI_FILE_DIALOG_WINDOW);
}
}
}