| version 1.8, 2007/01/23 16:24:36 | version 1.10, 2008/03/13 16:27: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 372  gui_gtk_widget_create(void) | Line 360  gui_gtk_widget_create(void) | 
 | GTK_SIGNAL_FUNC(expose_evhandler), NULL); | GTK_SIGNAL_FUNC(expose_evhandler), NULL); | 
 | } | } | 
 |  |  | 
 | static void |  | 
 | gui_gtk_terminate(void) |  | 
 | { |  | 
 |  |  | 
 | /* Nothing to do */ |  | 
 | } |  | 
 |  |  | 
 | void | void | 
 | gui_gtk_widget_show(void) | gui_gtk_widget_show(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; | 
|  | } |