[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:
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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user