void about_dialog (GtkWidget *widget, gpointer data) { GtkWidget* aboutwindow = NULL; GtkWidget* w = NULL, *w2 = NULL; char *intro = _("XQF Game Server Browser"); char *version = g_strdup_printf(_("Version %s"),XQF_VERSION); /* translators can use the copyright symbol instead of (C) */ char *author = _("Copyright (C) 1998-2002 Roman Pozlevich"); char *urls = "http://www.linuxgames.com/xqf\n" "http://sourceforge.net/projects/xqf\n"; char *contrib1 = _("Maintainers:"); char *contrib2 = "Thomas Debesse <*****@*****.**>\n" "Ludwig Nussel <*****@*****.**>\n" "Alex Burger <*****@*****.**>\n" "Jordi Mallach <*****@*****.**>\n" "Bill Adams <*****@*****.**>\n"; char *contrib3 = _("Contributors:"); char *contrib4 = "Jochen Baier <*****@*****.**>\n" "Luca Camillo <*****@*****.**>\n"; char *bugs1 = _("Bug reports and feature requests:"); char *bugs2 = "http://sourceforge.net/projects/xqf\n" "[email protected]\n"; char *text = NULL;// dialog_ok (_("About XQF"), "%s", text); aboutwindow = create_AboutWindow(); w2 = load_pixmap(aboutwindow, "splash.png"); w = gtk_object_get_data(GTK_OBJECT(aboutwindow),"AboutVBox"); gtk_box_pack_start (GTK_BOX (w), w2, FALSE, FALSE, 0); gtk_box_reorder_child(GTK_BOX(w), w2, 0); gtk_widget_show(w2); w = gtk_object_get_data(GTK_OBJECT(aboutwindow),"AboutLabel"); text = g_strjoin("\n", intro, version, author, urls, contrib1, contrib2, contrib3, contrib4, bugs1, bugs2, NULL); g_free(version); gtk_label_set_text(GTK_LABEL(w), text); g_free(text); gtk_window_set_transient_for (GTK_WINDOW (aboutwindow), GTK_WINDOW (top_window())); register_window(aboutwindow); gtk_widget_show(aboutwindow); }
GtkWidget *dialog_create_modal_transient_window (const char *title, int close_on_esc, int allow_resize, GtkSignalFunc on_destroy) { GtkWidget *window; GtkWidget *parent; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER); gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (window_delete_event_callback), NULL); if (on_destroy) { gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (on_destroy), NULL); } gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); if (close_on_esc) { gtk_signal_connect (GTK_OBJECT (window), "key_press_event", GTK_SIGNAL_FUNC (destroy_on_escape), NULL); } if (title) gtk_window_set_title (GTK_WINDOW (window), title); gtk_widget_realize (window); gdk_window_set_decorations (window->window, (allow_resize)? GDK_DECOR_BORDER | GDK_DECOR_TITLE | GDK_DECOR_RESIZEH : GDK_DECOR_BORDER | GDK_DECOR_TITLE); gdk_window_set_functions (window->window, (allow_resize)? GDK_FUNC_MOVE | GDK_FUNC_CLOSE | GDK_FUNC_RESIZE : GDK_FUNC_MOVE | GDK_FUNC_CLOSE); gtk_window_set_modal (GTK_WINDOW (window), TRUE); parent = top_window (); if (parent) gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (parent)); register_window (window); return window; }
void handle_msg(int *msg) { WINDOWP window; wake_mouse(); window= get_window(msg[3]); /* Zugeh�riges Fenster */ switch (msg[0]) /* Art der Nachricht */ { case MN_SELECTED: if (makro_rec) /* Makro wird Tastendruck vorgegaukelt */ { int kstate, kreturn; char str[50]; get_string(menu, msg[4], str); if (str_to_key(str, &kstate, &kreturn)) { kstate |= (kstate & 3); to_makro(kstate, kreturn); } } handle_menu(msg[3], msg[4], menu_ctrl); menu_ctrl = FALSE; break; case WM_REDRAW : if (msg[3] == akt_handle) redraw_aktion(); else redraw_window (window, (GRECT*)(msg+4)); break; case WM_CLOSED : do_icon(window->handle, DO_DELETE); break; case WM_FULLED : full_window (window); break; case WM_ARROWED : arrow_window (window, msg[4], 1); break; case WM_HSLID : h_slider (window, msg[4]); break; case WM_VSLID : v_slider (window, msg[4]); break; case WM_SIZED : size_window (window, (GRECT*)(msg+4), TRUE); break; case WM_MOVED : move_window (window, (GRECT*)(msg+4)); break; case WM_NEWTOP : /* Fenster von qed ist irgendwie nach oben gekommen */ case WM_ONTOP : ontop_window(window); break; case WM_TOPPED : top_window (window); break; case WM_UNTOPPED: /* qed hat jetzt nicht mehr das Top-Fenster */ untop_window (window); break; case WM_BOTTOMED: /* AES 4.00 MagiC 3 : Fenster nach hinten */ case WM_M_BDROPPED : /* Magic 2 */ bottom_window (window, msg[0]); break; case WM_ICONIFY: iconify_window(window, (GRECT*)(msg+4)); break; case WM_ALLICONIFY: all_iconify(window, (GRECT*)(msg+4)); break; case WM_UNICONIFY: if (all_iconified) all_uniconify(NULL, (GRECT*)(msg+4)); else uniconify_window(window, (GRECT*)(msg+4)); break; case WM_SHADED : case WM_UNSHADED : shade_window(window, msg[0]); break; case AP_TERM: if (all_iconified) all_uniconify(NULL, NULL); quick_close = TRUE; if (prepare_quit()) do_quit(); break; case AP_DRAGDROP : if (all_iconified) Bconout(2, 7); else handle_dd(msg); break; case SC_CHANGED : /* * Ignorieren, da wir vor dem Paste sowieso neu laden. */ break; case VA_START : case VA_PROTOSTATUS : case VA_DRAG_COMPLETE : case VA_DRAGACCWIND : case AV_SENDKEY : handle_av(msg); break; case SE_INIT: case SE_OK: case SE_ACK: case SE_OPEN: case SE_ERROR: case SE_ERRFILE: case SE_PROJECT: case SE_QUIT: case SE_TERMINATE: case SE_CLOSE : case SE_MENU : if (all_iconified) all_uniconify(NULL, NULL); handle_se(msg); break; case OLGA_INIT : case OLE_NEW : case OLGA_ACK : case OLE_EXIT : handle_olga(msg); break; case SH_WDRAW: /* schickt Freedom st�ndig */ case DHST_ACK: /* SMU antwortet */ /* ignore */ break; case FONT_CHANGED : if (msg[4] != 0) font_id = msg[4]; if (msg[5] != 0) font_pts = msg[5]; font_change(); break; default: if (debug_level) { char str[12]; int d, i, id; if ((appl_xgetinfo(4, &d, &d, &i, &d)) && (i == 1)) /* gibts appl_search? */ { i = appl_search(0, str, &d, &id); while (i != 0) { if (id == msg[1]) break; i = appl_search( 1, str, &d, &id); } } else { strcpy(str, ""); id = msg[1]; } debug("Unbekannte Msg %d (0x%X) von %s (%d)\n", msg[0], msg[0], str, id); } break; } }