[API] Added callback binding for InputText (#156)

* Added callback binding for InputText

* Add JavaDoc

* Change

* Add Javadoc

* Fix Import

* Teaks and improvements

- Extended example;
- Added input text callback ImGuiInputTextFlags#CallbackEdit;
- Minor code improvements.

---------

Co-authored-by: SpaiR <klimbetoo@gmail.com>
This commit is contained in:
墨恒andSpaiR authored and GitHub committed 2023-02-07 13:13:02 +02:00
1 parent f3c971ca60
commit 986aa532ff
6 files changed
+296 -6

No files matched your search

@@ -0,0 +1,44 @@
import imgui.ImGui;
import imgui.ImGuiInputTextCallbackData;
import imgui.callback.ImGuiInputTextCallback;
import imgui.flag.ImGuiCond;
import imgui.flag.ImGuiInputTextFlags;
import imgui.type.ImBoolean;
import imgui.type.ImString;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class ExampleInputTextCallback {
private static final ImString STR = new ImString();
private static final StringBuilder OUTPUT = new StringBuilder();
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
private static final ImGuiInputTextCallback CALLBACK = new ImGuiInputTextCallback() {
@Override
public void accept(final ImGuiInputTextCallbackData data) {
final char c = (char) data.getEventChar();
if (c == 'h' || c == 'H') {
data.setEventChar('!');
OUTPUT.append(DATE_FORMAT.format(LocalDateTime.now())).append(" :: Replaced!\n");
} else if (c == 'w' || c == 'W') {
data.setEventChar(0);
OUTPUT.append(DATE_FORMAT.format(LocalDateTime.now())).append(" :: Discarded!\n");
} else {
OUTPUT.append(DATE_FORMAT.format(LocalDateTime.now())).append(" :: Typed: ").append(c).append('\n');
}
}
};
public static void show(final ImBoolean showInputTextCallback) {
ImGui.setNextWindowSize(400, 300, ImGuiCond.Once);
if (ImGui.begin("Input Text Callback Demo", showInputTextCallback)) {
ImGui.alignTextToFramePadding();
ImGui.text("Try to input \"Hello World!\":");
ImGui.sameLine();
ImGui.inputText("##input", STR, ImGuiInputTextFlags.CallbackCharFilter, CALLBACK);
ImGui.text(OUTPUT.toString());
}
ImGui.end();
}
}
+6
View File
@@ -13,6 +13,7 @@ public class Extra {
private static final ImBoolean SHOW_IMGUI_FILE_DIALOG_WINDOW = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUI_MEMORY_EDITOR_WINDOW = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUI_CANVAS_EDITOR_WINDOW = new ImBoolean(false);
private static final ImBoolean SHOW_IMGUI_INPUT_CALLBACK_WINDOW = new ImBoolean(false);
private static final Graph GRAPH = new Graph();
@@ -28,6 +29,7 @@ public class Extra {
ImGui.checkbox("Show ImGuiFileDialog Demo Window", SHOW_IMGUI_FILE_DIALOG_WINDOW);
ImGui.checkbox("Show ImGui MemoryEditor Demo Window", SHOW_IMGUI_MEMORY_EDITOR_WINDOW);
ImGui.checkbox("Show ImGui Canvas Demo Window", SHOW_IMGUI_CANVAS_EDITOR_WINDOW);
ImGui.checkbox("Show Imgui InputText Callback Window", SHOW_IMGUI_INPUT_CALLBACK_WINDOW);
if (SHOW_DEMO_WINDOW.get()) {
ImGui.showDemoWindow(SHOW_DEMO_WINDOW);
@@ -68,5 +70,9 @@ public class Extra {
if (SHOW_IMGUI_CANVAS_EDITOR_WINDOW.get()) {
ExampleCanvasEditor.show(SHOW_IMGUI_CANVAS_EDITOR_WINDOW);
}
if (SHOW_IMGUI_INPUT_CALLBACK_WINDOW.get()) {
ExampleInputTextCallback.show(SHOW_IMGUI_INPUT_CALLBACK_WINDOW);
}
}
}