milsko/examples/basic/filechooser.c

78 lines
1.6 KiB
C
Raw Permalink Normal View History

2026-04-28 00:31:21 -07:00
#include <Mw/Milsko.h>
MwWidget fpicker;
MwWidget window;
MwWidget button;
MwWidget mb;
2026-09-12 04:15:02 +09:00
#ifdef BUG
2026-04-28 00:31:21 -07:00
MwBool fpicker_wait = MwFALSE;
MwBool msgbox_wait = MwFALSE;
2026-09-12 04:15:02 +09:00
#endif
2026-04-28 00:31:21 -07:00
void MWAPI ok(MwWidget handle, void* user, void* call) {
(void)handle;
(void)call;
2026-09-12 04:15:02 +09:00
#ifdef BUG
2026-04-28 00:31:21 -07:00
msgbox_wait = MwFALSE;
2026-09-12 04:15:02 +09:00
#endif
2026-09-13 12:21:05 +09:00
MwDestroyWidget(mb);
2026-04-28 00:31:21 -07:00
}
void MWAPI file_callback(MwWidget handle, void* user_data, void* call_data) {
2026-09-13 12:21:05 +09:00
mb = MwMessageBox(window, call_data, "File chosen", MwMB_ICONERROR | MwMB_BUTTONOK);
2026-04-28 00:31:21 -07:00
(void)user_data;
MwAddUserHandler(MwMessageBoxGetChild(mb, MwMB_BUTTONOK), MwNactivateHandler, ok, mb);
MwAddUserHandler(mb, MwNcloseHandler, ok, mb);
2026-09-12 04:15:02 +09:00
#ifdef BUG
2026-04-28 00:31:21 -07:00
msgbox_wait = MwTRUE;
while(msgbox_wait) {
MwStep(mb);
}
fpicker_wait = MwFALSE;
2026-09-12 04:15:02 +09:00
#endif
2026-04-28 00:31:21 -07:00
}
void MWAPI file_picker(MwWidget handle, void* user_data, void* call_data) {
fpicker = MwFileChooserEx(handle, "file chooser", 0);
(void)handle;
(void)user_data;
(void)call_data;
MwAddUserHandler(fpicker, MwNfileChosenHandler, file_callback, NULL);
MwSetText(fpicker, MwNbackground, MwGetInteger(fpicker, MwNdarkTheme) ? MwDefaultDarkBackground : MwDefaultBackground);
2026-09-12 04:15:02 +09:00
#ifdef BUG
2026-04-28 00:31:21 -07:00
fpicker_wait = MwTRUE;
while(fpicker_wait) {
MwStep(fpicker);
}
MwDestroyWidget(fpicker);
MwDestroyWidget(mb);
2026-09-12 04:15:02 +09:00
#endif
2026-04-28 00:31:21 -07:00
}
int main() {
MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT,
2026-09-12 04:53:02 +09:00
MwDEFAULT, 640, 480, MwNtitle, "file chooser", NULL);
2026-04-28 00:31:21 -07:00
button = MwVaCreateWidget(MwButtonClass, "button", window, 160, 180, 320, 120,
MwNtext, "select file",
NULL);
MwAddUserHandler(button, MwNactivateHandler, file_picker, NULL);
MwLoop(window);
}