From 773a3640a49359305408b77cd748ca8985d8543a Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Tue, 2 Dec 2025 03:30:55 +0900 Subject: [PATCH] add menu --- mimview/ui.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/mimview/ui.c b/mimview/ui.c index 2d95081..d95bbd3 100644 --- a/mimview/ui.c +++ b/mimview/ui.c @@ -3,11 +3,56 @@ #include static void* help_about; +static void* file_open_a_file; +static void* file_open_a_directory; int current = 0; +static void file_fc_chosen(MwWidget handle, void* user, void* client) { + int i; + + for(i = 0; i < arrlen(images); i++) { + free(images[i].path); + if(images[i].data != NULL) free(images[i].data); + } + arrfree(images); + + current = 0; + image_add(client); + image_init(); + image_render(); +} + +static void file_dc_scan(const char* path, int dir, int symlink, void* uesr) { + if(dir) return; + + image_add(path); +} + +static void file_dc_chosen(MwWidget handle, void* user, void* client) { + int i; + + for(i = 0; i < arrlen(images); i++) { + free(images[i].path); + if(images[i].data != NULL) free(images[i].data); + } + arrfree(images); + + MDEDirectoryScan(client, file_dc_scan, NULL); + + current = 0; + image_init(); + image_render(); +} + static void menu_menu(MwWidget handle, void* user, void* client) { if(client == help_about) { MDEAboutDialog(window, "mimview", VERSION, pxprojector); + } else if(client == file_open_a_file) { + MwWidget fc = MwFileChooser(window, "Open a file"); + MwAddUserHandler(fc, MwNfileChosenHandler, file_fc_chosen, NULL); + } else if(client == file_open_a_directory) { + MwWidget dc = MwDirectoryChooser(window, "Open a directory"); + MwAddUserHandler(dc, MwNdirectoryChosenHandler, file_dc_chosen, NULL); } } @@ -51,6 +96,10 @@ static void bzoomout_activate(MwWidget handle, void* user, void* client) { void ui_init(void) { void* m; + m = MwMenuAdd(menu, NULL, "File"); + file_open_a_file = MwMenuAdd(menu, m, "Open a file"); + file_open_a_directory = MwMenuAdd(menu, m, "Open a directory"); + m = MwMenuAdd(menu, NULL, "?Help"); help_about = MwMenuAdd(menu, m, "About");