Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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);
	}
}