/* =============================================================== * * BASIC DEMO * * ===============================================================*/ static void basic_demo(struct nk_context *ctx, struct media *media) { static int image_active; static int check0 = 1; static int check1 = 0; static size_t prog = 80; static int selected_item = 0; static int selected_image = 3; static int selected_icon = 0; static const char *items[] = {"Item 0","item 1","item 2"}; static int piemenu_active = 0; static struct nk_vec2 piemenu_pos; int i = 0; nk_style_set_font(ctx, &media->font_20->handle); nk_begin(ctx, "Basic Demo", nk_rect(320, 50, 275, 610), NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_TITLE); /*------------------------------------------------ * POPUP BUTTON *------------------------------------------------*/ ui_header(ctx, media, "Popup & Scrollbar & Images"); ui_widget(ctx, media, 35); if (nk_button_image_label(ctx, media->dir, "Images", NK_TEXT_CENTERED)) image_active = !image_active; /*------------------------------------------------ * SELECTED IMAGE *------------------------------------------------*/ ui_header(ctx, media, "Selected Image"); ui_widget_centered(ctx, media, 100); nk_image(ctx, media->images[selected_image]); /*------------------------------------------------ * IMAGE POPUP *------------------------------------------------*/ if (image_active) { struct nk_panel popup; if (nk_popup_begin(ctx, NK_POPUP_STATIC, "Image Popup", 0, nk_rect(265, 0, 320, 220))) { nk_layout_row_static(ctx, 82, 82, 3); for (i = 0; i < 9; ++i) { if (nk_button_image(ctx, media->images[i])) { selected_image = i; image_active = 0; nk_popup_close(ctx); } } nk_popup_end(ctx); } } /*------------------------------------------------ * COMBOBOX *------------------------------------------------*/ ui_header(ctx, media, "Combo box"); ui_widget(ctx, media, 40); if (nk_combo_begin_label(ctx, items[selected_item], nk_vec2(nk_widget_width(ctx), 200))) { nk_layout_row_dynamic(ctx, 35, 1); for (i = 0; i < 3; ++i) if (nk_combo_item_label(ctx, items[i], NK_TEXT_LEFT)) selected_item = i; nk_combo_end(ctx); } ui_widget(ctx, media, 40); if (nk_combo_begin_image_label(ctx, items[selected_icon], media->images[selected_icon], nk_vec2(nk_widget_width(ctx), 200))) { nk_layout_row_dynamic(ctx, 35, 1); for (i = 0; i < 3; ++i) if (nk_combo_item_image_label(ctx, media->images[i], items[i], NK_TEXT_RIGHT)) selected_icon = i; nk_combo_end(ctx); } /*------------------------------------------------ * CHECKBOX *------------------------------------------------*/ ui_header(ctx, media, "Checkbox"); ui_widget(ctx, media, 30); nk_checkbox_label(ctx, "Flag 1", &check0); ui_widget(ctx, media, 30); nk_checkbox_label(ctx, "Flag 2", &check1); /*------------------------------------------------ * PROGRESSBAR *------------------------------------------------*/ ui_header(ctx, media, "Progressbar"); ui_widget(ctx, media, 35); nk_progress(ctx, &prog, 100, nk_true); /*------------------------------------------------ * PIEMENU *------------------------------------------------*/ if (nk_input_is_mouse_click_down_in_rect(&ctx->input, NK_BUTTON_RIGHT, nk_window_get_bounds(ctx),nk_true)){ piemenu_pos = ctx->input.mouse.pos; piemenu_active = 1; } if (piemenu_active) { int ret = ui_piemenu(ctx, piemenu_pos, 140, &media->menu[0], 6); if (ret == -2) piemenu_active = 0; if (ret != -1) { fprintf(stdout, "piemenu selected: %d\n", ret); piemenu_active = 0; } } nk_style_set_font(ctx, &media->font_14->handle); nk_end(ctx); }
bool nk_wnd_file_picker(nk_menu_handle_t *nk, char* title, char* in, char* out, char* filter) { struct nk_panel layout; struct nk_context *ctx = &nk->ctx; const int id = NK_WND_FILE_PICKER; int i = 0; static file_list_t *drives = NULL; static struct string_list *files = NULL; settings_t *settings = config_get_ptr(); bool ret = false; if (!drives) { drives = (file_list_t*)calloc(1, sizeof(file_list_t)); frontend_driver_parse_drive_list(drives, false); } if (!string_is_empty(in) && string_is_empty(path)) { strlcpy(path, in, sizeof(path)); files = dir_list_new(path, filter, true, settings->bools.show_hidden_files, true, false); } if (!assets_loaded) load_icons(nk); if (nk_begin(ctx, title, nk_rect(10, 10, 500, 400), NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE|NK_WINDOW_MOVABLE| NK_WINDOW_BORDER)) { nk_layout_row_dynamic(ctx, 30, 4); if (drives->size == 0) { if(nk_button_image_label(ctx, icons.disk, "/", NK_TEXT_CENTERED)) { fill_pathname_join(path, "/", "", sizeof(path)); files = dir_list_new(path, filter, true, settings->bools.show_hidden_files, true, false); } } else { for (i = 0; i < drives->size; i++) { if(nk_button_image_label(ctx, icons.disk, drives->list[i].path, NK_TEXT_CENTERED)) { fill_pathname_join(path, drives->list[i].path, "", sizeof(path)); files = dir_list_new(path, filter, true, settings->bools.show_hidden_files, true, false); } } } nk_layout_row_dynamic(ctx, 30, 1); if (files) { for (i = 0; i < files->size; i++) { if (nk_button_image_label(ctx, path_is_directory(files->elems[i].data) ? icons.folder : icons.file, path_basename(files->elems[i].data), NK_TEXT_RIGHT)) { strlcpy (path, files->elems[i].data, sizeof(path)); if (path_is_directory (path)) files = dir_list_new(path, filter, true, settings->bools.show_hidden_files, true, false); } } } nk_layout_row_dynamic(ctx, 30, 1); { if (nk_button_text(ctx, "OK", 2)) { ret = true; strlcpy(out, path, sizeof(path)); nk->window[NK_WND_FILE_PICKER].open = false; path[0] = '\0'; } } } /* sort the dir list with directories first */ dir_list_sort(files, true); /* copy the path variable to out*/ /* save position and size to restore after context reset */ nk_wnd_set_state(nk, id, nk_window_get_position(ctx), nk_window_get_size(ctx)); nk_end(ctx); return ret; }
static void button_demo(struct nk_context *ctx, struct media *media) { static int option = 1; static int toggle0 = 1; static int toggle1 = 0; static int toggle2 = 1; nk_style_set_font(ctx, &media->font_20->handle); nk_begin(ctx, "Button Demo", nk_rect(50,50,255,610), NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_TITLE); /*------------------------------------------------ * MENU *------------------------------------------------*/ nk_menubar_begin(ctx); { /* toolbar */ nk_layout_row_static(ctx, 40, 40, 4); if (nk_menu_begin_image(ctx, "Music", media->play, nk_vec2(110,120))) { /* settings */ nk_layout_row_dynamic(ctx, 25, 1); nk_menu_item_image_label(ctx, media->play, "Play", NK_TEXT_RIGHT); nk_menu_item_image_label(ctx, media->stop, "Stop", NK_TEXT_RIGHT); nk_menu_item_image_label(ctx, media->pause, "Pause", NK_TEXT_RIGHT); nk_menu_item_image_label(ctx, media->next, "Next", NK_TEXT_RIGHT); nk_menu_item_image_label(ctx, media->prev, "Prev", NK_TEXT_RIGHT); nk_menu_end(ctx); } nk_button_image(ctx, media->tools); nk_button_image(ctx, media->cloud); nk_button_image(ctx, media->pen); } nk_menubar_end(ctx); /*------------------------------------------------ * BUTTON *------------------------------------------------*/ ui_header(ctx, media, "Push buttons"); ui_widget(ctx, media, 35); if (nk_button_label(ctx, "Push me")) fprintf(stdout, "pushed!\n"); ui_widget(ctx, media, 35); if (nk_button_image_label(ctx, media->rocket, "Styled", NK_TEXT_CENTERED)) fprintf(stdout, "rocket!\n"); /*------------------------------------------------ * REPEATER *------------------------------------------------*/ ui_header(ctx, media, "Repeater"); ui_widget(ctx, media, 35); if (nk_button_label(ctx, "Press me")) fprintf(stdout, "pressed!\n"); /*------------------------------------------------ * TOGGLE *------------------------------------------------*/ ui_header(ctx, media, "Toggle buttons"); ui_widget(ctx, media, 35); if (nk_button_image_label(ctx, (toggle0) ? media->checked: media->unchecked, "Toggle", NK_TEXT_LEFT)) toggle0 = !toggle0; ui_widget(ctx, media, 35); if (nk_button_image_label(ctx, (toggle1) ? media->checked: media->unchecked, "Toggle", NK_TEXT_LEFT)) toggle1 = !toggle1; ui_widget(ctx, media, 35); if (nk_button_image_label(ctx, (toggle2) ? media->checked: media->unchecked, "Toggle", NK_TEXT_LEFT)) toggle2 = !toggle2; /*------------------------------------------------ * RADIO *------------------------------------------------*/ ui_header(ctx, media, "Radio buttons"); ui_widget(ctx, media, 35); if (nk_button_symbol_label(ctx, (option == 0)?NK_SYMBOL_CIRCLE_OUTLINE:NK_SYMBOL_CIRCLE_SOLID, "Select", NK_TEXT_LEFT)) option = 0; ui_widget(ctx, media, 35); if (nk_button_symbol_label(ctx, (option == 1)?NK_SYMBOL_CIRCLE_OUTLINE:NK_SYMBOL_CIRCLE_SOLID, "Select", NK_TEXT_LEFT)) option = 1; ui_widget(ctx, media, 35); if (nk_button_symbol_label(ctx, (option == 2)?NK_SYMBOL_CIRCLE_OUTLINE:NK_SYMBOL_CIRCLE_SOLID, "Select", NK_TEXT_LEFT)) option = 2; /*------------------------------------------------ * CONTEXTUAL *------------------------------------------------*/ nk_style_set_font(ctx, &media->font_18->handle); if (nk_contextual_begin(ctx, NK_WINDOW_NO_SCROLLBAR, nk_vec2(150, 300), nk_window_get_bounds(ctx))) { nk_layout_row_dynamic(ctx, 30, 1); if (nk_contextual_item_image_label(ctx, media->copy, "Clone", NK_TEXT_RIGHT)) fprintf(stdout, "pressed clone!\n"); if (nk_contextual_item_image_label(ctx, media->del, "Delete", NK_TEXT_RIGHT)) fprintf(stdout, "pressed delete!\n"); if (nk_contextual_item_image_label(ctx, media->convert, "Convert", NK_TEXT_RIGHT)) fprintf(stdout, "pressed convert!\n"); if (nk_contextual_item_image_label(ctx, media->edit, "Edit", NK_TEXT_RIGHT)) fprintf(stdout, "pressed edit!\n"); nk_contextual_end(ctx); } nk_style_set_font(ctx, &media->font_14->handle); nk_end(ctx); }