mirror of
https://github.com/xemu-project/imgui.git
synced 2024-11-23 18:29:51 +00:00
Demo: BeginCombo() demo code
This commit is contained in:
parent
3849bb4470
commit
3d48f5b8c2
1
imgui.h
1
imgui.h
@ -300,6 +300,7 @@ namespace ImGui
|
|||||||
|
|
||||||
// Widgets: Combo Box
|
// Widgets: Combo Box
|
||||||
// The new BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it.
|
// The new BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it.
|
||||||
|
// The old Combo() api are helpers over BeginCombo()/EndCombo() which are kept available for convenience purpose.
|
||||||
IMGUI_API bool BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags = 0);
|
IMGUI_API bool BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags = 0);
|
||||||
IMGUI_API void EndCombo();
|
IMGUI_API void EndCombo();
|
||||||
IMGUI_API bool Combo(const char* label, int* current_item, const char* const items[], int items_count, int popup_max_height_in_items = -1);
|
IMGUI_API bool Combo(const char* label, int* current_item, const char* const items[], int items_count, int popup_max_height_in_items = -1);
|
||||||
|
@ -322,12 +322,28 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|||||||
|
|
||||||
ImGui::LabelText("label", "Value");
|
ImGui::LabelText("label", "Value");
|
||||||
|
|
||||||
static int item = 1;
|
{
|
||||||
ImGui::Combo("combo", &item, "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0"); // Combo using values packed in a single constant string (for really quick combo)
|
// Simplified one-liner Combo() API, using values packed in a single constant string
|
||||||
|
static int current_item_1 = 1;
|
||||||
|
ImGui::Combo("combo", ¤t_item_1, "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0");
|
||||||
|
//ImGui::Combo("combo w/ array of char*", ¤t_item_2_idx, items, IM_ARRAYSIZE(items)); // Combo using proper array. You can also pass a callback to retrieve array value, no need to create/copy an array just for that.
|
||||||
|
|
||||||
const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO", "PPPP", "QQQQQQQQQQ", "RRR", "SSSS" };
|
// General BeginCombo() API, you have full control over your selection data and display type
|
||||||
static int item2 = -1;
|
const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO", "PPPP", "QQQQQQQQQQ", "RRR", "SSSS" };
|
||||||
ImGui::Combo("combo scroll", &item2, items, IM_ARRAYSIZE(items)); // Combo using proper array. You can also pass a callback to retrieve array value, no need to create/copy an array just for that.
|
static const char* current_item_2 = NULL;
|
||||||
|
if (ImGui::BeginCombo("combo 2", current_item_2)) // The second parameter is the label previewed before opening the combo.
|
||||||
|
{
|
||||||
|
for (int n = 0; n < IM_ARRAYSIZE(items); n++)
|
||||||
|
{
|
||||||
|
bool is_selected = (current_item_2 == items[n]); // You can store your selection however you want, outside or inside your objects
|
||||||
|
if (ImGui::Selectable(items[n], is_selected))
|
||||||
|
current_item_2 = items[n];
|
||||||
|
if (is_selected)
|
||||||
|
ImGui::SetItemDefaultFocus(); // Set the initial focus when opening the combo (scrolling + for keyboard navigation support in the upcoming navigation branch)
|
||||||
|
}
|
||||||
|
ImGui::EndCombo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
static char str0[128] = "Hello, world!";
|
static char str0[128] = "Hello, world!";
|
||||||
|
Loading…
Reference in New Issue
Block a user