1 2 static float ratio[] = {0.25f, NK_UNDEFINED}; 3 float spacing_x = ctx->style.window.spacing.x; 4 5 /* output path directory selector in the menubar */ 6 ctx->style.window.spacing.x = 0; 7 nk_menubar_begin(ctx); 8 { 9 char *d = browser->directory; 10 char *begin = d + 1; 11 nk_layout_row_dynamic(ctx, 16, 6); 12 13 while (*d++) { 14 if (*d == '/') { 15 *d = '\0'; 16 if (nk_button_label(ctx, begin)) { 17 *d++ = '/'; *d = '\0'; 18 file_browser_reload_directory_content(browser, browser->directory); 19 break; 20 } 21 *d = '/'; 22 begin = d + 1; 23 } 24 } 25 } 26 nk_menubar_end(ctx); 27 ctx->style.window.spacing.x = spacing_x; 28 29 /* window layout */ 30 total_space = nk_window_get_content_region(ctx); 31 nk_layout_row(ctx, NK_DYNAMIC, total_space.h, 2, ratio); 32 nk_group_begin(ctx,"Special", NK_WINDOW_NO_SCROLLBAR); 33 { 34 35 nk_layout_row_dynamic(ctx, 16, 1); 36 if (nk_button_label(ctx, "Home")) 37 file_browser_reload_directory_content(browser, browser->home); 38 if (nk_button_label(ctx,"Desktop")) 39 file_browser_reload_directory_content(browser, browser->desktop); 40 if (nk_button_label(ctx,"/")) 41 file_browser_reload_directory_content(browser, "/"); 42 if (nk_button_label(ctx,"Cancel")) 43 LOADCONTENT=-1; 44 nk_group_end(ctx); 45 } 46 47 /* output directory content window */ 48 nk_group_begin(ctx, "Content", 0); 49 { 50 int index = -1; 51 size_t i = 0, j = 0, k = 0; 52 size_t rows = 0, cols = 0; 53 size_t count = browser->dir_count + browser->file_count; 54 55 cols = 1; 56 rows = count / cols; 57 for (i = 0; i <= rows; i += 1) { 58 59 {size_t n = j + cols; 60 nk_layout_row_dynamic(ctx, 16, (int)cols); 61 for (; j < count && j < n; ++j) { 62 /* draw one row of icons */ 63 if (j < browser->dir_count) { 64 /* draw and execute directory buttons */ 65 if (nk_button_label(ctx,browser->directories[j])) 66 index = (int)j; 67 } else { 68 /* draw and execute files buttons */ 69 70 size_t fileIndex = ((size_t)j - browser->dir_count); 71 72 if (nk_button_label(ctx, browser->files[fileIndex])) { 73 strncpy(browser->file, browser->directory, MAX_PATH_LEN); 74 n = strlen(browser->file); 75 strncpy(browser->file + n, browser->files[fileIndex], MAX_PATH_LEN - n); 76 //ret = 1; 77 sprintf(LCONTENT,"%s",browser->file); 78 LOADCONTENT=2; 79 } 80 } 81 }} 82 83 } 84 85 if (index != -1) { 86 size_t n = strlen(browser->directory); 87 strncpy(browser->directory + n, browser->directories[index], MAX_PATH_LEN - n); 88 n = strlen(browser->directory); 89 if (n < MAX_PATH_LEN - 1) { 90 browser->directory[n] = '/'; 91 browser->directory[n+1] = '\0'; 92 } 93 file_browser_reload_directory_content(browser, browser->directory); 94 95 } 96 nk_group_end(ctx); 97 } 98 99 100