[Cxplorer-cvs 01016] CVS update: libcxp/src

Back to archive index

Yasumichi Akahoshi yasum****@users*****
2005年 4月 10日 (日) 18:30:37 JST


Index: libcxp/src/cxp-about-dialog.c
diff -u libcxp/src/cxp-about-dialog.c:1.1 libcxp/src/cxp-about-dialog.c:1.2
--- libcxp/src/cxp-about-dialog.c:1.1	Sun Apr 10 04:11:49 2005
+++ libcxp/src/cxp-about-dialog.c	Sun Apr 10 18:30:37 2005
@@ -33,7 +33,7 @@
 
 typedef struct
 {
-	gchar *title;
+	gchar *appname;
 	gchar *version;
 	gchar *url;
 	gchar *copyright;
@@ -56,9 +56,9 @@
 
 static void cxp_about_dialog_class_init (gpointer g_class,
 					    gpointer g_class_data);
+static void cxp_about_dialog_init (CxpAboutDialog *dialog);
 static GObject * cxp_about_dialog_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties);
-static void cxp_about_dialog_instance_init (GTypeInstance * instance,
-					       gpointer g_class);
+static void cxp_about_dialog_construct_child (CxpAboutDialog *self);
 static void cxp_about_dialog_dispose (GObject * obj);
 static void cxp_about_dialog_finalize (GObject * obj);
 static void cxp_about_dialog_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
@@ -80,7 +80,7 @@
 	gobject_class->get_property = cxp_about_dialog_get_property;
 
 	/* install properties. */
-	pspec = g_param_spec_string ("title",
+	pspec = g_param_spec_string ("appname",
 				     "Application name",
 				     "Set application name",
 				     NULL,
@@ -123,6 +123,18 @@
 	g_type_class_add_private (dialog_class, sizeof (CxpAboutDialogPrivate));
 }
 
+static void cxp_about_dialog_init (CxpAboutDialog *dialog)
+{
+	CxpAboutDialogPrivate *private = CXP_ABOUT_DIALOG_GET_PRIVATE(dialog);
+
+	private->appname = NULL;
+	private->version = NULL;
+	private->url = NULL;
+	private->copyright = NULL;
+	private->image_file = NULL;
+	private->dispose_has_run = FALSE;
+}
+
 static GObject * cxp_about_dialog_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties)
 {
 	GObject *obj;
@@ -133,45 +145,65 @@
 			n_construct_properties,
 			construct_properties);
 
-	cxp_about_dialog_instance_init(obj, klass);
+	cxp_about_dialog_construct_child (CXP_ABOUT_DIALOG(obj));
 
 	return obj;
 }
 
-static void cxp_about_dialog_instance_init (GTypeInstance * instance,
-					       gpointer g_class)
+static void cxp_about_dialog_construct_child (CxpAboutDialog *self)
 {
-	CxpAboutDialog *self = CXP_ABOUT_DIALOG (instance);
-	CxpAboutDialogPrivate *private = CXP_ABOUT_DIALOG_GET_PRIVATE(instance);
+	CxpAboutDialogPrivate *private = CXP_ABOUT_DIALOG_GET_PRIVATE(self);
+	GtkWidget *vbox = GTK_DIALOG(self)->vbox;
 	GtkWidget *image;
 	GtkWidget *version_label;
 	GtkWidget *url_label;
 	GtkWidget *copyright_label;
 	GtkWidget *close_button;
-
-	private->dispose_has_run = FALSE;
+	gchar *version_text;
 
 	gtk_window_set_destroy_with_parent(GTK_WINDOW(self), TRUE);
 	gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_CLOSE);
-	gtk_window_set_title (GTK_WINDOW(self), private->title);
+	gtk_window_set_title (GTK_WINDOW(self), private->appname);
+
+	if (private->image_file != NULL)
+	{
+		if (g_file_test (private->image_file, G_FILE_TEST_EXISTS))
+		{
+			image = gtk_image_new_from_file (private->image_file);
+			gtk_box_pack_start (GTK_BOX(vbox), image, TRUE, TRUE, 0);
+			gtk_widget_show (image);
+		}
+		else
+		{
+			g_warning ("Couldn't find pixmap file: %s", private->image_file);
+		}
+	}
 
-	version_label = gtk_label_new (private->version);
-	gtk_box_pack_start (GTK_BOX(GTK_DIALOG(self)->vbox), version_label, TRUE, TRUE, 0);
-	gtk_label_set_justify (GTK_LABEL (version_label), GTK_JUSTIFY_LEFT);
-	gtk_widget_show (version_label);
-	gtk_widget_show (GTK_DIALOG(self)->vbox);
-
-
-	/*
-	URLLabel = gtk_label_new (_("http://cxplorer.sourceforge.jp/"));
-	gtk_box_pack_start (GTK_BOX (vbox2), URLLabel, TRUE, FALSE, 0);
-	gtk_label_set_justify (GTK_LABEL (URLLabel), GTK_JUSTIFY_LEFT);
-	gtk_widget_show (URLLabel);
-	label4 = gtk_label_new (_("Copyright 2003-2004 Cxplorer Project"));
-	gtk_box_pack_start (GTK_BOX (vbox2), label4, TRUE, FALSE, 0);
-	gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_LEFT);
-	gtk_widget_show (label4);
-	*/
+	if ((private->appname != NULL) && (private->version != NULL))
+	{
+		version_text = g_strdup_printf ("%s %s", private->appname, private->version);
+		version_label = gtk_label_new (version_text);
+		gtk_box_pack_start (GTK_BOX(vbox), version_label, TRUE, TRUE, 0);
+		gtk_label_set_justify (GTK_LABEL (version_label), GTK_JUSTIFY_LEFT);
+		gtk_widget_show (version_label);
+		g_free (version_text);
+	}
+
+	if (private->url != NULL)
+	{
+		url_label = gtk_label_new (private->url);
+		gtk_box_pack_start (GTK_BOX (vbox), url_label, TRUE, FALSE, 0);
+		gtk_label_set_justify (GTK_LABEL (url_label), GTK_JUSTIFY_LEFT);
+		gtk_widget_show (url_label);
+	}
+
+	if (private->copyright != NULL)
+	{
+		copyright_label = gtk_label_new (private->copyright);
+		gtk_box_pack_start (GTK_BOX (vbox), copyright_label, TRUE, FALSE, 0);
+		gtk_label_set_justify (GTK_LABEL (copyright_label), GTK_JUSTIFY_LEFT);
+		gtk_widget_show (copyright_label);
+	}
 
 	close_button = gtk_button_new_from_stock("gtk-close");
 	gtk_dialog_add_action_widget (GTK_DIALOG (self), close_button, GTK_RESPONSE_CLOSE);
@@ -205,7 +237,7 @@
 {
 	CxpAboutDialogPrivate *private = CXP_ABOUT_DIALOG_GET_PRIVATE(obj);
 
-	g_free (private->title);
+	g_free (private->appname);
 	g_free (private->version);
 	g_free (private->url);
 	g_free (private->copyright);
@@ -231,7 +263,7 @@
 			sizeof (CxpAboutDialog),
 			0,	/* n_preallocs */
 			//cxp_about_dialog_instance_init	/* instance_init */
-			NULL	/* instance_init */
+			(GInstanceInitFunc) cxp_about_dialog_init	/* instance_init */
 		};
 		type = g_type_register_static (GTK_TYPE_DIALOG,
 					       "CxpAboutDialogType",
@@ -240,9 +272,9 @@
 	return type;
 }
 
-GtkWidget *cxp_about_dialog_new(const gchar *title, const gchar *version, const gchar *url, const gchar *copyright, const gchar *image_file)
+GtkWidget *cxp_about_dialog_new(const gchar *appname, const gchar *version, const gchar *url, const gchar *copyright, const gchar *image_file)
 {
-	return	GTK_WIDGET(g_object_new(CXP_TYPE_ABOUT_DIALOG, "title", title, "version", version, "url", url, "copyright", copyright, "image_file", image_file, NULL)); 
+	return	GTK_WIDGET(g_object_new(CXP_TYPE_ABOUT_DIALOG, "appname", appname, "version", version, "url", url, "copyright", copyright, "image_file", image_file, NULL)); 
 }
 
 /*
@@ -258,8 +290,8 @@
 	switch (property_id)
 	{
 	case CXP_ABOUT_DIALOG_APPNAME:
-		g_free (priv->title);
-		priv->title = g_value_dup_string (value);
+		g_free (priv->appname);
+		priv->appname = g_value_dup_string (value);
 		break;
 	case CXP_ABOUT_DIALOG_VERSION:
 		g_free (priv->version);
@@ -293,7 +325,7 @@
 	switch (property_id)
 	{
 	case CXP_ABOUT_DIALOG_APPNAME:
-		g_value_set_string (value, priv->title);
+		g_value_set_string (value, priv->appname);
 		break;
 	case CXP_ABOUT_DIALOG_VERSION:
 		g_value_set_string (value, priv->version);


Cxplorer-cvs メーリングリストの案内
Back to archive index