2025-10-11 06:21:43 +00:00
|
|
|
/* $Id$ */
|
|
|
|
|
#include <Mw/Milsko.h>
|
|
|
|
|
|
2025-10-11 07:25:16 +00:00
|
|
|
void msgbox_ok_handler(MwWidget handle, void* user, void* call) {
|
|
|
|
|
MwWidget win = user;
|
|
|
|
|
|
|
|
|
|
MwDestroyWidget(win);
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-11 06:21:43 +00:00
|
|
|
MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsigned int flag) {
|
|
|
|
|
MwWidget window, ok;
|
|
|
|
|
MwPoint p;
|
|
|
|
|
int w, h;
|
2025-10-11 07:25:16 +00:00
|
|
|
int left = 8;
|
|
|
|
|
int th;
|
2025-10-11 06:21:43 +00:00
|
|
|
|
|
|
|
|
p.x = 0;
|
|
|
|
|
p.y = 0;
|
|
|
|
|
|
|
|
|
|
window = MwVaCreateWidget(MwWindowClass, "messagebox", handle, 0, 0, (w = 512), (h = 32 * 4),
|
|
|
|
|
MwNtitle, title,
|
|
|
|
|
NULL);
|
2025-10-11 07:25:16 +00:00
|
|
|
ok = MwVaCreateWidget(MwButtonClass, "ok", window, w - 8 - 80, h - 8 - 24, 80, 24,
|
2025-10-11 06:21:43 +00:00
|
|
|
MwNtext, "OK",
|
|
|
|
|
NULL);
|
|
|
|
|
|
2025-10-11 07:25:16 +00:00
|
|
|
MwAddUserHandler(ok, MwNactivateHandler, msgbox_ok_handler, window);
|
|
|
|
|
|
2025-10-11 06:21:43 +00:00
|
|
|
if((flag & MwMB_ICONMASK) != 0) {
|
|
|
|
|
MwWidget icon;
|
|
|
|
|
MwLLPixmap px;
|
|
|
|
|
char** data = NULL;
|
|
|
|
|
|
2025-10-11 07:25:16 +00:00
|
|
|
icon = MwCreateWidget(MwImageClass, "image", window, 8, (h - 48) / 2, 48, 48);
|
2025-10-11 06:21:43 +00:00
|
|
|
|
|
|
|
|
switch(flag & MwMB_ICONMASK) {
|
|
|
|
|
case MwMB_ICONWARNING: {
|
|
|
|
|
data = MwIconWarning;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case MwMB_ICONINFO: {
|
|
|
|
|
data = MwIconInfo;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case MwMB_ICONNOTE: {
|
|
|
|
|
data = MwIconNote;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case MwMB_ICONQUESTION: {
|
|
|
|
|
data = MwIconQuestion;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
px = MwLoadXPM(icon, data);
|
|
|
|
|
|
|
|
|
|
MwSetVoid(icon, MwNpixmap, px);
|
2025-10-11 07:25:16 +00:00
|
|
|
|
|
|
|
|
left = 8 + 48 + 8;
|
2025-10-11 06:21:43 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-11 07:25:16 +00:00
|
|
|
th = MwTextHeight(handle, text);
|
|
|
|
|
(void)MwVaCreateWidget(MwLabelClass, "label", window, left, (h - th) / 2, w - left - 8, th,
|
|
|
|
|
MwNtext, text,
|
|
|
|
|
MwNalignment, MwALIGNMENT_BEGINNING,
|
|
|
|
|
NULL);
|
|
|
|
|
|
2025-10-11 06:21:43 +00:00
|
|
|
MwLLDetach(window->lowlevel, &p);
|
|
|
|
|
MwLLSetSizeHints(window->lowlevel, w, h, w, h);
|
|
|
|
|
MwLLMakePopup(window->lowlevel, handle->lowlevel);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|