gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18963 - gnunet-gtk/src/lib


From: gnunet
Subject: [GNUnet-SVN] r18963 - gnunet-gtk/src/lib
Date: Wed, 4 Jan 2012 02:11:41 +0100

Author: grothoff
Date: 2012-01-04 02:11:41 +0100 (Wed, 04 Jan 2012)
New Revision: 18963

Modified:
   gnunet-gtk/src/lib/about.c
Log:
-LRN: unbuildering about dialog

Modified: gnunet-gtk/src/lib/about.c
===================================================================
--- gnunet-gtk/src/lib/about.c  2012-01-04 00:59:15 UTC (rev 18962)
+++ gnunet-gtk/src/lib/about.c  2012-01-04 01:11:41 UTC (rev 18963)
@@ -26,57 +26,52 @@
  */
 #include "gnunet_gtk.h"
 
-
-static void
-destroy_about_dialog (GtkBuilder * builder)
+struct AboutDialogContext
 {
+  GtkBuilder *builder;
   GtkWidget *ad;
+  GtkWidget *about_credits_notebook;
+  GtkWidget *about_license_scroller;
+  GtkTextBuffer *license_contents;
+};
 
-  ad = GTK_WIDGET (gtk_builder_get_object (builder, "about_window"));
-  gtk_widget_destroy (ad);
-  g_object_unref (G_OBJECT (builder));
+static void
+destroy_about_dialog (struct AboutDialogContext *ctx)
+{
+  gtk_widget_destroy (ctx->ad);
+  g_object_unref (G_OBJECT (ctx->builder));
+  GNUNET_free (ctx);
 }
 
 
 static void
-about_window_show_exclusively (GtkBuilder * builder, gchar * name)
+about_window_show_exclusively (struct AboutDialogContext *ctx, gchar * name)
 {
-  GtkWidget *about_credits_notebook;
-  GtkWidget *about_license_scroller;
-
-  about_credits_notebook =
-      GTK_WIDGET (gtk_builder_get_object (builder, "about_credits_notebook"));
-  about_license_scroller =
-      GTK_WIDGET (gtk_builder_get_object (builder, "about_license_scroller"));
   if (name == NULL)
   {
-    gtk_widget_hide (about_credits_notebook);
-    gtk_widget_hide (about_license_scroller);
+    gtk_widget_hide (ctx->about_credits_notebook);
+    gtk_widget_hide (ctx->about_license_scroller);
   }
   else if (strcmp ("about_credits_notebook", name) == 0)
   {
-    gtk_widget_show (about_credits_notebook);
-    gtk_widget_hide (about_license_scroller);
+    gtk_widget_show (ctx->about_credits_notebook);
+    gtk_widget_hide (ctx->about_license_scroller);
   }
   else if (strcmp ("about_license_scroller", name) == 0)
   {
-    gtk_widget_show (about_license_scroller);
-    gtk_widget_hide (about_credits_notebook);
+    gtk_widget_show (ctx->about_license_scroller);
+    gtk_widget_hide (ctx->about_credits_notebook);
   }
 }
 
 
 G_MODULE_EXPORT void
-GNUNET_GTK_about_window_realized (GtkWidget * widget, gpointer user_data)
+GNUNET_GTK_about_window_realized (GtkWidget * widget, struct 
AboutDialogContext *ctx)
 {
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-  GtkTextBuffer *license_contents;
   gchar *license = NULL;
   const char *path;
   char *license_path;
 
-  license_contents =
-      GTK_TEXT_BUFFER (gtk_builder_get_object (builder, "license_contents"));
   path = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DOCDIR);
   if (path != NULL)
     GNUNET_asprintf (&license_path, "%s%s", path, "COPYING");
@@ -85,7 +80,7 @@
   if (g_file_get_contents (license_path, &license, NULL, NULL) &&
       (license != NULL))
   {
-    gtk_text_buffer_set_text (license_contents, license, -1);
+    gtk_text_buffer_set_text (ctx->license_contents, license, -1);
     g_free (license);
   }
   GNUNET_free_non_null (license_path);
@@ -93,39 +88,31 @@
 
 
 G_MODULE_EXPORT void
-GNUNET_GTK_about_close_button_clicked (GtkButton * widget, gpointer user_data)
+GNUNET_GTK_about_close_button_clicked (GtkButton * widget, struct 
AboutDialogContext *ctx)
 {
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-
-  destroy_about_dialog (builder);
+  destroy_about_dialog (ctx);
 }
 
 
 G_MODULE_EXPORT gboolean
 GNUNET_GTK_about_window_got_delete_event (GtkWidget * widget, GdkEvent * event,
-                                          gpointer user_data)
+                                          struct AboutDialogContext *ctx)
 {
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-
-  destroy_about_dialog (builder);
+  destroy_about_dialog (ctx);
   return FALSE;
 }
 
 
 G_MODULE_EXPORT void
-GNUNET_GTK_about_credits_button_clicked (GtkButton * widget, gpointer 
user_data)
+GNUNET_GTK_about_credits_button_clicked (GtkButton * widget, struct 
AboutDialogContext *ctx)
 {
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-
-  about_window_show_exclusively (builder, "about_credits_notebook");
+  about_window_show_exclusively (ctx, "about_credits_notebook");
 }
 
 G_MODULE_EXPORT void
-GNUNET_GTK_about_license_button_clicked (GtkButton * widget, gpointer 
user_data)
+GNUNET_GTK_about_license_button_clicked (GtkButton * widget, struct 
AboutDialogContext *ctx)
 {
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-
-  about_window_show_exclusively (builder, "about_license_scroller");
+  about_window_show_exclusively (ctx, "about_license_scroller");
 }
 
 
@@ -138,15 +125,24 @@
 void
 GNUNET_GTK_display_about (const char *dialogfile)
 {
-  GtkBuilder *builder;
-  GtkWidget *ad;
+  struct AboutDialogContext *ctx;
+  ctx = GNUNET_malloc (sizeof (struct AboutDialogContext));
+  ctx->builder = GNUNET_GTK_get_new_builder (dialogfile, ctx);
 
-  builder = GNUNET_GTK_get_new_builder (dialogfile, NULL);
-  if (builder == NULL)
+  if (ctx->builder == NULL)
+  {
+    GNUNET_free (ctx);
     return;
-  ad = GTK_WIDGET (gtk_builder_get_object (builder, "about_window"));
-  g_object_set_data (G_OBJECT (ad), "gnunet-gtk-builder", builder);
-  gtk_widget_show (ad);
+  }
+  ctx->about_credits_notebook =
+      GTK_WIDGET (gtk_builder_get_object (ctx->builder, 
"about_credits_notebook"));
+  ctx->about_license_scroller =
+      GTK_WIDGET (gtk_builder_get_object (ctx->builder, 
"about_license_scroller"));
+  ctx->ad = GTK_WIDGET (gtk_builder_get_object (ctx->builder, "about_window"));
+  ctx->license_contents =
+      GTK_TEXT_BUFFER (gtk_builder_get_object (ctx->builder, 
"license_contents"));
+  g_object_set_data (G_OBJECT (ctx->ad), "gnunet-gtk-builder", ctx->builder);
+  gtk_widget_show (ctx->ad);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]