|
|
| version 1.8, 2007/01/23 16:24:36 | version 1.11, 2009/03/05 11:50:39 |
|---|---|
| Line 74 destroy_evhandler(GtkWidget *w, GdkEvent | Line 74 destroy_evhandler(GtkWidget *w, GdkEvent |
| UNUSED(ev); | UNUSED(ev); |
| UNUSED(p); | UNUSED(p); |
| taskmng_exit(); | |
| toolkit_widget_quit(); | toolkit_widget_quit(); |
| return TRUE; | return TRUE; |
| Line 227 motion_notify_evhandler(GtkWidget *w, Gd | Line 226 motion_notify_evhandler(GtkWidget *w, Gd |
| * misc | * misc |
| */ | */ |
| static gint | static gint |
| main_widget_quit(gpointer p) | main_loop_quit(gpointer p) |
| { | { |
| BYTE orig_scrnmode; | |
| UNUSED(p); | UNUSED(p); |
| /* change to window mode */ | scrnmng_fullscreen(0); |
| orig_scrnmode = scrnmode; | |
| xmenu_select_screen(scrnmode & ~SCRNMODE_FULLSCREEN); | |
| scrnmode = orig_scrnmode; | |
| return 0; | return 0; |
| } | } |
| Line 283 uninstall_idle_process(void) | Line 278 uninstall_idle_process(void) |
| /* | /* |
| * toolkit | * toolkit |
| */ | */ |
| const char * | |
| gui_gtk_get_toolkit(void) | |
| { | |
| return "gtk"; | |
| } | |
| BOOL | BOOL |
| gui_gtk_arginit(int *argcp, char ***argvp) | gui_gtk_arginit(int *argcp, char ***argvp) |
| { | { |
| Line 354 gui_gtk_widget_create(void) | Line 342 gui_gtk_widget_create(void) |
| set_icon_bitmap(main_window); | set_icon_bitmap(main_window); |
| g_signal_connect(GTK_OBJECT(main_window), "destroy", | g_signal_connect(GTK_OBJECT(main_window), "destroy", |
| GTK_SIGNAL_FUNC(destroy_evhandler), "WM destroy"); | G_CALLBACK(destroy_evhandler), "WM destroy"); |
| g_signal_connect(GTK_OBJECT(main_window), "key_press_event", | g_signal_connect(GTK_OBJECT(main_window), "key_press_event", |
| GTK_SIGNAL_FUNC(key_press_evhandler), NULL); | G_CALLBACK(key_press_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(main_window), "key_release_event", | g_signal_connect(GTK_OBJECT(main_window), "key_release_event", |
| GTK_SIGNAL_FUNC(key_release_evhandler), NULL); | G_CALLBACK(key_release_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(main_window), "button_press_event", | g_signal_connect(GTK_OBJECT(main_window), "button_press_event", |
| GTK_SIGNAL_FUNC(button_press_evhandler), NULL); | G_CALLBACK(button_press_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(main_window), "button_release_event", | g_signal_connect(GTK_OBJECT(main_window), "button_release_event", |
| GTK_SIGNAL_FUNC(button_release_evhandler), NULL); | G_CALLBACK(button_release_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(main_window), "motion_notify_event", | g_signal_connect(GTK_OBJECT(main_window), "motion_notify_event", |
| GTK_SIGNAL_FUNC(motion_notify_evhandler), NULL); | G_CALLBACK(motion_notify_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(drawarea), "configure_event", | g_signal_connect(GTK_OBJECT(drawarea), "configure_event", |
| GTK_SIGNAL_FUNC(configure_evhandler), NULL); | G_CALLBACK(configure_evhandler), NULL); |
| g_signal_connect(GTK_OBJECT(drawarea), "expose_event", | g_signal_connect(GTK_OBJECT(drawarea), "expose_event", |
| GTK_SIGNAL_FUNC(expose_evhandler), NULL); | G_CALLBACK(expose_evhandler), NULL); |
| } | |
| static void | |
| gui_gtk_terminate(void) | |
| { | |
| /* Nothing to do */ | |
| } | } |
| void | void |
| Line 391 gui_gtk_widget_mainloop(void) | Line 372 gui_gtk_widget_mainloop(void) |
| { | { |
| install_idle_process(); | install_idle_process(); |
| gtk_quit_add(1, main_widget_quit, NULL); | gtk_quit_add(1, main_loop_quit, NULL); |
| gtk_main(); | gtk_main(); |
| uninstall_idle_process(); | uninstall_idle_process(); |
| } | } |
| Line 420 gui_gtk_set_window_title(const char* str | Line 401 gui_gtk_set_window_title(const char* str |
| gtk_window_set_title(GTK_WINDOW(main_window), str); | gtk_window_set_title(GTK_WINDOW(main_window), str); |
| } | } |
| void | int |
| gui_gtk_messagebox(const char *title, const char *msg) | gui_gtk_msgbox(const char *title, const char *msg, UINT flags) |
| { | { |
| GtkWidget *dialog; | |
| GtkMessageType msgtype; | |
| GtkButtonsType btntype; | |
| int retval; | |
| int rv; | |
| g_message("%s:\n%s", title, msg); | uninstall_idle_process(); |
| } | |
| switch (flags & TK_MB_BTN_MASK) { | |
| default: | |
| btntype = GTK_BUTTONS_OK; | |
| break; | |
| case TK_MB_OK: | |
| btntype = GTK_BUTTONS_OK; | |
| break; | |
| case TK_MB_CANCEL: | |
| btntype = GTK_BUTTONS_CANCEL; | |
| break; | |
| case TK_MB_OKCANCEL: | |
| btntype = GTK_BUTTONS_OK_CANCEL; | |
| break; | |
| case TK_MB_YESNO: | |
| btntype = GTK_BUTTONS_YES_NO; | |
| break; | |
| } | |
| if (flags & TK_MB_ICON_INFO) { | |
| msgtype = GTK_MESSAGE_INFO; | |
| } else if (flags & TK_MB_ICON_WARNING) { | |
| msgtype = GTK_MESSAGE_WARNING; | |
| } else if (flags & TK_MB_ICON_ERROR) { | |
| msgtype = GTK_MESSAGE_ERROR; | |
| } else if (flags & TK_MB_ICON_QUESTION) { | |
| msgtype = GTK_MESSAGE_QUESTION; | |
| } else { | |
| msgtype = GTK_MESSAGE_OTHER; | |
| } | |
| dialog = gtk_message_dialog_new(GTK_WINDOW(main_window), | |
| GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_MODAL, | |
| msgtype, btntype, msg); | |
| gtk_window_set_title(GTK_WINDOW(dialog), title); | |
| gtk_widget_show_all(dialog); | |
| rv = gtk_dialog_run(GTK_DIALOG(dialog)); | |
| switch (rv) { | |
| case GTK_RESPONSE_OK: | |
| retval = TK_MB_OK; | |
| break; | |
| case GTK_RESPONSE_CANCEL: | |
| retval = TK_MB_CANCEL; | |
| break; | |
| /* toolkit data */ | case GTK_RESPONSE_YES: |
| gui_toolkit_t gtk_toolkit = { | retval = TK_MB_YES; |
| gui_gtk_get_toolkit, | break; |
| gui_gtk_arginit, | |
| gui_gtk_terminate, | case GTK_RESPONSE_NO: |
| gui_gtk_widget_create, | retval = TK_MB_NO; |
| gui_gtk_widget_show, | break; |
| gui_gtk_widget_mainloop, | |
| gui_gtk_widget_quit, | default: |
| gui_gtk_event_process, | retval = 0; /* XXX */ |
| gui_gtk_set_window_title, | break; |
| gui_gtk_messagebox, | } |
| }; | |
| gtk_widget_destroy(dialog); | |
| install_idle_process(); | |
| return retval; | |
| } |