-
Notifications
You must be signed in to change notification settings - Fork 581
Menu
A menu is a simple clickable dropdown with components. A few variations exist:
-
nk_menu_begin_label(...)
A menu with a text label -
nk_menu_begin_image(...)
A menu with an image -
nk_menu_begin_image_label(...)
A menu with an image and a text label -
nk_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(...)
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:
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
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.
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.