Menu - Immediate-Mode-UI/Nuklear GitHub Wiki
The menu
Description
A menu is a simple clickable dropdown with components. A few variations exist:
nk_menu_begin_label(...)
A menu with a text labelnk_menu_begin_image(...)
A menu with an imagenk_menu_begin_image_label(...)
A menu with an image and a text labelnk_menu_begin_symbol(...)
A menu with an nk_symbol_type (See nk_symbol_type for symbols)nk_menu_begin_symbol_label(...)
A menu with an nk_symbol_type and a text label
Basic usage:
if (nk_menu_begin_label(...)) {
/// Draw whatever you like!
nk_menu_end(...);
}
We must also end all menu types with nk_menu_end(...)
Examples
Heres an example of a window with the common "file" menu:
static void scratchpad(struct nk_context *ctx, struct media *media) {
nk_style_set_font(ctx, &media->font_20->handle);
struct nk_vec2 size = nk_vec2(150, 200);
nk_begin(ctx, "Nuklear Menu example", nk_rect(50,50, 255, 340), NK_WINDOW_TITLE | NK_WINDOW_MOVABLE);
nk_layout_row_dynamic(ctx, 20, 1);
if (nk_menu_begin_label(ctx, "File", NK_TEXT_LEFT, size)) {
nk_layout_row_dynamic(ctx, 20, 1);
nk_button_label(ctx, "New");
nk_button_image_label(ctx, media->dir, "Open...", NK_TEXT_LEFT);
nk_button_label(ctx, "Save");
nk_menu_end(ctx);
}
nk_end(ctx);
}
Results in:
menu label
nk_menu_begin_label
displays as text. It takes the following parameters:
- the nk_context
- The display text
- Aligment flag ( see nk_flags )
- a vec2 that defines the size of the menu dropdown
menu image
nk_menu_begin_image(...)
displays as an arbitrary nk_image. Here we replaced the File text from the previous example with a play icon. It takes the following parameters:
- the nk_context
- the id (Text)
- the nk_image to display
- a vec2 that defines the size of the menu dropdown
There is also an nk_menu_begin_image_label(...)
variant, which also takes in text to display next to the image.
menu symbol
nk_menu_begin_symbol(...)
displays a symbol (nk_symbol_type). It works just like the image variant, but instead of an image it takes in a symbol. In the image above we've changed the play image for a plus symbol (NK_SYMBOL_PLUS). Just like the image variant there is also an nk_menu_begin_symbol_label(...)
which takes in extra text to display.