From 234d726e3f2a92ef758b142ae3063e927ecf5720 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Wed, 15 Oct 2025 10:32:40 +0000 Subject: [PATCH] add messagebox git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@338 b9cfdab3-6d41-4d17-bbe4-086880011989 --- examples/listbox.c | 33 +++++++++++++++++++++++++-------- include/Mw/TypeDefs.h | 2 +- src/widget/listbox.c | 6 +++--- tools/harvard.pl | 10 +++++----- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/examples/listbox.c b/examples/listbox.c index ec0ae89..776597c 100644 --- a/examples/listbox.c +++ b/examples/listbox.c @@ -3,13 +3,30 @@ #include "../resource/harvard.c" -int main(){ - MwWidget w = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 640, 480, - MwNtitle, "test", - NULL); - MwWidget lb = MwCreateWidget(MwListBoxClass, "listbox", w, 5, 5, 630, 470); +MwWidget wmain; - MwListBoxInsertMultiple(lb, -1, (char**)harvard, sizeof(harvard) / sizeof(harvard[0]) - 1); - - MwLoop(w); +void destroy(MwWidget handle, void* user, void* call) { + MwDestroyWidget(user); +} + +void activate(MwWidget handle, void* user, void* call) { + char msg[256]; + MwWidget msgbox; + sprintf(msg, "You pressed: %s", MwListBoxGet(handle, *(int*)call)); + + msgbox = MwMessageBox(wmain, msg, "wow", MwMB_ICONINFO | MwMB_BUTTONOK); + MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, destroy, msgbox); +} + +int main() { + MwWidget lb; + wmain = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 640, 480, + MwNtitle, "test", + NULL); + lb = MwCreateWidget(MwListBoxClass, "listbox", wmain, 5, 5, 630, 470); + + MwAddUserHandler(lb, MwNactivateHandler, activate, NULL); + MwListBoxInsertMultiple(lb, -1, (char**)harvard, sizeof(harvard) / sizeof(harvard[0]) - 1); + + MwLoop(wmain); } diff --git a/include/Mw/TypeDefs.h b/include/Mw/TypeDefs.h index 59cd8c1..6abee25 100644 --- a/include/Mw/TypeDefs.h +++ b/include/Mw/TypeDefs.h @@ -126,7 +126,7 @@ struct _MwListBox { char** list; int selected; unsigned long click_time; - int pressed; + int pressed; }; struct _MwSizeHints { diff --git a/src/widget/listbox.c b/src/widget/listbox.c index 5aa61c6..2eee743 100644 --- a/src/widget/listbox.c +++ b/src/widget/listbox.c @@ -53,8 +53,8 @@ static void frame_mouse_up(MwWidget handle, void* user, void* call) { } static void frame_mouse_move(MwWidget handle, void* user, void* call) { - MwListBox lb = handle->parent->internal; - MwPoint* p = call; + MwListBox lb = handle->parent->internal; + MwPoint* p = call; if(lb->pressed) { int st = 0; int i; @@ -64,7 +64,7 @@ static void frame_mouse_move(MwWidget handle, void* user, void* call) { st = get_first_entry(lb); for(i = 0; i < (h - MwDefaultBorderWidth * 2) / MwTextHeight(handle, "M"); i++) { if(y <= p->y && p->y <= (y + MwTextHeight(handle, "M"))) { - lb->selected = st + i; + lb->selected = st + i; } y += MwTextHeight(handle, "M"); } diff --git a/tools/harvard.pl b/tools/harvard.pl index f45a7c5..be58077 100755 --- a/tools/harvard.pl +++ b/tools/harvard.pl @@ -3,11 +3,11 @@ open(IN, "<", "resource/harvard.txt"); print("const char* harvard[] = {\n"); -while(my $l = ){ - $l =~ s/\r?\n$//; - if($l =~ /^[ \t]*[0-9]+\. (.+)$/){ - print(" \"" . $1 . "\",\n"); - } +while (my $l = ) { + $l =~ s/\r?\n$//; + if ($l =~ /^[ \t]*[0-9]+\. (.+)$/) { + print(" \"" . $1 . "\",\n"); + } } print(" NULL\n"); print("};\n");