GtkWidget * about_dialog_create (GimpContext *context) { static GimpAboutDialog *dialog = NULL; g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); if (! dialog) { GtkWidget *widget; GtkWidget *container; GdkPixbuf *pixbuf; GList *children; gchar *copyright; dialog = g_new0 (GimpAboutDialog, 1); dialog->n_authors = G_N_ELEMENTS (authors) - 1; pixbuf = about_dialog_load_logo (); copyright = g_strdup_printf (GIMP_COPYRIGHT, GIMP_GIT_LAST_COMMIT_YEAR); widget = g_object_new (GTK_TYPE_ABOUT_DIALOG, "role", "gimp-about", "window-position", GTK_WIN_POS_CENTER, "title", _("About GIMP"), "program-name", GIMP_ACRONYM, "version", GIMP_VERSION, "copyright", copyright, "comments", GIMP_NAME, "license", GIMP_LICENSE, "wrap-license", TRUE, "logo", pixbuf, "website", "http://www.gimp.org/", "website-label", _("Visit the GIMP website"), "authors", authors, "artists", artists, "documenters", documenters, /* Translators: insert your names here, separated by newline */ "translator-credits", _("translator-credits"), NULL); if (pixbuf) g_object_unref (pixbuf); g_free (copyright); dialog->dialog = widget; g_object_add_weak_pointer (G_OBJECT (widget), (gpointer) &dialog); g_signal_connect (widget, "response", G_CALLBACK (gtk_widget_destroy), NULL); g_signal_connect (widget, "map", G_CALLBACK (about_dialog_map), dialog); g_signal_connect (widget, "unmap", G_CALLBACK (about_dialog_unmap), dialog); /* kids, don't try this at home! */ container = gtk_dialog_get_content_area (GTK_DIALOG (widget)); children = gtk_container_get_children (GTK_CONTAINER (container)); if (GTK_IS_VBOX (children->data)) { about_dialog_add_animation (children->data, dialog); about_dialog_add_message (children->data); } else g_warning ("%s: ooops, no vbox in this container?", G_STRLOC); g_list_free (children); } gtk_window_present (GTK_WINDOW (dialog->dialog)); return dialog->dialog; }
void about_dialog_create() { GtkStyle *style; GtkWidget *vbox; GtkWidget *aboutframe; GtkWidget *label; GtkWidget *alignment; if (!about_dialog) { about_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_wmclass(GTK_WINDOW(about_dialog), "about_dialog", "Aube"); gtk_window_set_title(GTK_WINDOW(about_dialog), "About AUBE"); gtk_window_set_policy(GTK_WINDOW(about_dialog), FALSE, FALSE, FALSE); gtk_window_position(GTK_WINDOW(about_dialog), GTK_WIN_POS_CENTER); g_signal_connect(G_OBJECT(about_dialog), "destroy", (GtkSignalFunc) about_dialog_destroy, NULL); g_signal_connect(G_OBJECT(about_dialog), "button_press_event", (GtkSignalFunc) about_dialog_button, NULL); gtk_widget_set_events(about_dialog, GDK_BUTTON_PRESS_MASK); if (!about_dialog_load_logo(about_dialog)) { gtk_widget_destroy(about_dialog); about_dialog = NULL; return; } vbox = gtk_vbox_new(FALSE, 1); gtk_container_border_width(GTK_CONTAINER(vbox), 1); gtk_container_add(GTK_CONTAINER(about_dialog), vbox); gtk_widget_show(vbox); aboutframe = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(aboutframe), GTK_SHADOW_IN); gtk_container_border_width(GTK_CONTAINER(aboutframe), 0); gtk_box_pack_start(GTK_BOX(vbox), aboutframe, TRUE, TRUE, 0); gtk_widget_show(aboutframe); logo_area = gtk_drawing_area_new(); g_signal_connect(G_OBJECT(logo_area), "expose_event", (GtkSignalFunc) about_dialog_logo_expose, NULL); gtk_drawing_area_size(GTK_DRAWING_AREA(logo_area), logo_width, logo_height); gtk_widget_set_events(logo_area, GDK_EXPOSURE_MASK); gtk_container_add(GTK_CONTAINER(aboutframe), logo_area); gtk_widget_show(logo_area); gtk_widget_realize(logo_area); gdk_window_set_background(logo_area->window, &logo_area->style->black); style = gtk_style_new(); /* FIXME: use pango or remove entirely? gdk_font_unref(style->font); style->font = gdk_font_load("-Adobe-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*"); gtk_widget_push_style(style); */ label = gtk_label_new("This is AUBE Version " VERSION); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); gtk_widget_show(label); label = gtk_label_new ("Copyright (c) 1998 - 2002 Conrad Parker, [email protected]"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); gtk_widget_show(label); /* FIXME gtk_widget_pop_style(); */ alignment = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox), alignment, FALSE, TRUE, 0); gtk_widget_show(alignment); #ifndef HAVE_LIBSNDFILE label = gtk_label_new ("This copy of AUBE was built without sample support\ndue to libsndfile being unavailable on the build host"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); gtk_widget_show(label); alignment = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); gtk_box_pack_start(GTK_BOX(vbox), alignment, FALSE, TRUE, 0); gtk_widget_show(alignment); #endif label = gtk_label_new ("Visit http://www.metadecks.org/software/aube/ for more info"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); gtk_widget_show(label); } if (!GTK_WIDGET_MAPPED(about_dialog)) { gtk_widget_show(about_dialog); } else { gdk_window_raise(about_dialog->window); } }