gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r18881 - in gnunet-gtk/src: fs include lib


From: gnunet
Subject: [GNUnet-SVN] r18881 - in gnunet-gtk/src: fs include lib
Date: Sun, 1 Jan 2012 20:55:57 +0100

Author: grothoff
Date: 2012-01-01 20:55:56 +0100 (Sun, 01 Jan 2012)
New Revision: 18881

Modified:
   gnunet-gtk/src/fs/gnunet-fs-gtk-download.c
   gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_open_directory.c
   gnunet-gtk/src/include/gnunet_gtk.h
   gnunet-gtk/src/lib/about.c
   gnunet-gtk/src/lib/eventloop.c
   gnunet-gtk/src/lib/glade.c
   gnunet-gtk/src/lib/nls.c
   gnunet-gtk/src/lib/trayicon.c
Log:
-some work towards 2041, fixing some memory leaks, dead code limination in 
nls.c, some renaming to fix naming conventions, some API changes to allow nicer 
connecting of signal handlers to custom closures

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-download.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-download.c  2012-01-01 19:09:58 UTC (rev 
18880)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-download.c  2012-01-01 19:55:56 UTC (rev 
18881)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     (C) 2010, 2011, 2012 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -27,7 +27,7 @@
 #include "gnunet-fs-gtk.h"
 #include "gnunet-fs-gtk-event_handler.h"
 
-struct dialog_context
+struct DownloadAsDialogContext
 {
   GtkBuilder *builder;
   GtkWidget *dialog;
@@ -36,12 +36,27 @@
 };
 
 
+static void
+free_download_context (struct DownloadContext *dc)
+{
+  if (NULL != dc->rr)
+    gtk_tree_row_reference_free (dc->rr);
+  GNUNET_free_non_null (dc->mime);
+  GNUNET_free_non_null (dc->filename);
+  if (NULL != dc->meta)
+    GNUNET_CONTAINER_meta_data_destroy (dc->meta);
+  if (NULL != dc->uri)
+    GNUNET_FS_uri_destroy (dc->uri);
+  GNUNET_free (dc);  
+}
+
+
 gboolean
 GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget * widget, GdkEvent * 
event,
                                            gpointer user_data)
 {
+  struct DownloadAsDialogContext *dlc = user_data;
   GtkBuilder *builder;
-  struct dialog_context *dlc;
   struct DownloadContext *dc;
   enum GNUNET_FS_DownloadOptions opt;
   struct GNUNET_FS_Handle *fs;
@@ -50,26 +65,20 @@
   uint32_t anonymity;
   uint64_t len;
 
-  builder = GTK_BUILDER (user_data);
-  dlc = g_object_get_data (G_OBJECT (widget), "dialog-context");
   if (dlc == NULL)
   {
-    g_object_unref (G_OBJECT (builder));
+    GNUNET_break (0);
     return FALSE;
   }
+  builder = dlc->builder;
   dc = dlc->dc;
   cb = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_save_as_recursive_check_button"));
   if (GTK_RESPONSE_OK != dlc->response)
   {
+    free_download_context (dc);
     g_object_unref (G_OBJECT (dlc->builder));
-    if (dc->rr != NULL)
-      gtk_tree_row_reference_free (dc->rr);
-    GNUNET_free_non_null (dc->mime);
-    GNUNET_free_non_null (dc->filename);
-    GNUNET_FS_uri_destroy (dc->uri);
-    GNUNET_free (dc);
-    g_free (dlc);
+    GNUNET_free (dlc);
     return FALSE;
   }
   GNUNET_free_non_null (dc->filename);
@@ -90,9 +99,12 @@
                                    
"GNUNET_GTK_save_as_dialog_anonymity_spin_button")));
   len = GNUNET_FS_uri_chk_get_file_size (dc->uri);
   g_object_unref (G_OBJECT (builder));
+
   de = GNUNET_malloc (sizeof (struct DownloadEntry));
   de->uri = dc->uri;
+  dc->uri = NULL;
   de->meta = dc->meta;
+  dc->meta = NULL;
   if (dc->rr != NULL)
   {
     de->rr = dc->rr;
@@ -117,18 +129,18 @@
                                             len, anonymity, opt, de,
                                             NULL /* parent download ctx */ ));
   }
-  GNUNET_free (dc);
+  free_download_context (dc);
   GNUNET_free (dlc);
   return FALSE;
 }
 
+
 void
 GNUNET_GTK_save_as_dialog_response_cb (GtkDialog * dialog, gint response_id,
                                        gpointer user_data)
 {
-  struct dialog_context *dlc;
+  struct DownloadAsDialogContext *dlc = user_data;
 
-  dlc = g_object_get_data (G_OBJECT (dialog), "dialog-context");
   if (dlc != NULL)
     dlc->response = response_id;
   /* dialogs don't get delete-event the way normal windows do,
@@ -139,24 +151,24 @@
   gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
+
 void
 GNUNET_FS_GTK_open_download_as_dialog (struct DownloadContext *dc)
 {
   GtkWidget *ad;
   GtkBuilder *builder;
   GtkWidget *cb;
-  struct dialog_context *dlc;
+  struct DownloadAsDialogContext *dlc;
 
+  dlc = GNUNET_malloc (sizeof (struct DownloadAsDialogContext));
   builder =
-      GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_download_as_dialog.glade");
+    GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_download_as_dialog.glade",
+                               dlc);
   if (builder == NULL)
   {
-    if (dc->rr != NULL)
-      gtk_tree_row_reference_free (dc->rr);
-    GNUNET_free_non_null (dc->mime);
-    GNUNET_free_non_null (dc->filename);
-    GNUNET_FS_uri_destroy (dc->uri);
-    GNUNET_free (dc);
+    GNUNET_break (0);
+    free_download_context (dc);
+    GNUNET_free (dlc);
     return;
   }
   cb = GTK_WIDGET (gtk_builder_get_object
@@ -166,26 +178,11 @@
   ad = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_save_as_dialog"));
   if (dc->filename != NULL)
-  {
-    char buf[FILENAME_MAX];
-
-    if (NULL != getcwd (buf, sizeof (buf)))
-    {
-      if (strlen (buf) + strlen (dc->filename) + 2 < sizeof (buf))
-      {
-        strcat (buf, DIR_SEPARATOR_STR);
-        strcat (buf, dc->filename);
-      }
-      gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), buf);
-    }
-  }
-  dlc = g_new0 (struct dialog_context, 1);
-
+    gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), dc->filename);
   dlc->builder = builder;
   dlc->dialog = ad;
   dlc->response = 0;
   dlc->dc = dc;
-  g_object_set_data (G_OBJECT (ad), "dialog-context", dlc);
   gtk_window_present (GTK_WINDOW (ad));
 }
 

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c     2012-01-01 19:09:58 UTC 
(rev 18880)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c     2012-01-01 19:55:56 UTC 
(rev 18881)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     (C) 2010, 2011, 2012 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -627,6 +627,11 @@
   struct SearchResult *sr;
   gchar *mime;
   struct DownloadContext *dlc;
+  char *buf;
+  char *tmp;
+  size_t tmplen;
+  char cwd[FILENAME_MAX];
+  char *filename;
 
   GNUNET_assert (tab != NULL);
   tm = gtk_tree_view_get_model (tree_view);
@@ -642,10 +647,52 @@
     g_free (mime);
     return;
   }
+
+
+  /* FIXME: we should check if this download is a file in some directory
+     (gtk_tree_model_iter_get_parent) and if so obtain the name under which
+     the directory was stored! */
+  /* Calculate suggested filename; first, pre-pend current working directory */
+  filename = GNUNET_FS_meta_data_suggest_filename (meta);
+  if (NULL != getcwd (cwd, sizeof (cwd)))
+  {
+    if (NULL == filename)
+    {
+      buf = GNUNET_strdup (cwd);
+    }
+    else
+    {
+      GNUNET_asprintf (&tmp, "%s%s%s",
+                      cwd,
+                      DIR_SEPARATOR_STR,
+                      filename);
+      tmplen = strlen (tmp);
+      /* now, if we have a directory, replace trailing '/' with ".gnd" */
+      if (GNUNET_YES ==
+         GNUNET_FS_meta_data_test_for_directory (meta))
+      {
+       if ( (tmp[tmplen-1] == '/') ||
+            (tmp[tmplen-1] == '\\') )
+         tmp[tmplen-1] = '\0';
+       GNUNET_asprintf (&buf,
+                        "%s%s",
+                        tmp,
+                        GNUNET_FS_DIRECTORY_EXT);
+       GNUNET_free (tmp);           
+      }
+      else
+      {
+       buf = tmp;
+      }
+    }
+  }
+  GNUNET_free_non_null (filename);
+
+  /* now setup everything for the save-as dialog */
   dlc = GNUNET_malloc (sizeof (struct DownloadContext));
   dlc->uri = GNUNET_FS_uri_dup (uri);
   dlc->mime = (NULL != mime) ? GNUNET_strdup (mime) : NULL;
-  dlc->filename = GNUNET_FS_meta_data_suggest_filename (meta);
+  dlc->filename = buf;
   dlc->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
   dlc->rr = gtk_tree_row_reference_new (tm, path);
   dlc->sr = sr->result;
@@ -1129,7 +1176,8 @@
     else
       tab->query_txt = GNUNET_FS_uri_to_string (query);
   }
-  tab->builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_search_tab.glade");
+  tab->builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_search_tab.glade",
+                                            tab);
   tab->ts =
       GTK_TREE_STORE (gtk_builder_get_object
                       (tab->builder,
@@ -1154,7 +1202,7 @@
   tab->label =
       GTK_LABEL (gtk_builder_get_object
                  (tab->builder, "_search_result_label_window_label"));
-
+  /* FIXME: connect these signals using glade!!! */
   tab->close_button =
       GTK_WIDGET (gtk_builder_get_object
                   (tab->builder, "_search_result_label_close_button"));
@@ -1660,7 +1708,8 @@
       /* create new tab */
       publish_tab = GNUNET_malloc (sizeof (struct PublishTab));
       publish_tab->builder =
-          GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_tab.glade");
+       GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_tab.glade",
+                                   publish_tab);
       df = GTK_WINDOW (gtk_builder_get_object
                        (publish_tab->builder, "_publish_frame_window"));
       publish_tab->frame = gtk_bin_get_child (GTK_BIN (df));
@@ -1676,6 +1725,7 @@
       gtk_container_remove (GTK_CONTAINER (df), tab_label);
       gtk_widget_destroy (GTK_WIDGET (df));
 
+      /* FIXME: connect these signals using GLADE!!! */
       /* get refs to widgets */
       close_button =
           GTK_WIDGET (gtk_builder_get_object

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c      
2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c      
2012-01-01 19:55:56 UTC (rev 18881)
@@ -73,7 +73,7 @@
 
   builder =
       GNUNET_GTK_get_new_builder
-      ("gnunet_fs_gtk_create_namespace_dialog.glade");
+    ("gnunet_fs_gtk_create_namespace_dialog.glade", NULL);
   if (builder == NULL)
   {
     GNUNET_break (0);

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_open_directory.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_open_directory.c        
2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_open_directory.c        
2012-01-01 19:55:56 UTC (rev 18881)
@@ -130,7 +130,7 @@
 
 
   builder =
-      GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_open_directory_dialog.glade");
+    GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_open_directory_dialog.glade", 
NULL);
   if (builder == NULL)
   {
     GNUNET_break (0);

Modified: gnunet-gtk/src/include/gnunet_gtk.h
===================================================================
--- gnunet-gtk/src/include/gnunet_gtk.h 2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/include/gnunet_gtk.h 2012-01-01 19:55:56 UTC (rev 18881)
@@ -57,7 +57,7 @@
  * Initialize GTK search path for icons.
  */
 void
-GNUNET_GTK_set_icon_search_path ();
+GNUNET_GTK_set_icon_search_path (void);
 
 
 /**
@@ -87,10 +87,13 @@
  * file.
  *
  * @param filename name of the resource file to load
+ * @param user_data user_data to pass to signal handlers,
+ *        use "NULL" to pass the GtkBuilder itself.
  * @return NULL on error
  */
 GtkBuilder *
-GNUNET_GTK_get_new_builder (const char *filename);
+GNUNET_GTK_get_new_builder (const char *filename,
+                           void *user_data);
 
 
 /**
@@ -121,31 +124,24 @@
 void
 GNUNET_GTK_tray_icon_destroy (void);
 
-char *
-GNUNET_GTK_from_utf8_to_loc (gchar * str_utf8);
 
+/**
+ * Convert a string from the current locale to UTF-8.
+ *
+ * @param str_loc string in current locale
+ * @return string in UTF-8, NULL if str_loc was NULL
+ */
 char *
-GNUNET_GTK_from_loc_to_utf8 (gchar * str_loc);
+GNUNET_GTK_from_loc_to_utf8 (const char * str_loc);
 
-char *
-GNUNET_GTK_from_filename_to_utf8 (gchar * filename);
 
-char *
-GNUNET_GTK_from_utf8_to_filename (gchar * str_utf8);
-
-char *
-GNUNET_GTK_from_loc_to_filename (gchar * str_loc);
-
-char *
-GNUNET_GTK_from_filename_to_loc (gchar * filename);
-
-/* Returns filename form filechooser, encoded in locale-dependent
- * encoding, suitable to be given to CRT and/or GNUnet
+/**
+ * Returns filename form filechooser, encoded in UTF-8.
+ *
+ * @param fc file chooser to inspect
+ * @return selected filename as UTF-8, NULL on errors
  */
 char *
-GNUNET_GTK_filechooser_get_filename_loc (GtkFileChooser * fc);
-
-gchar *
 GNUNET_GTK_filechooser_get_filename_utf8 (GtkFileChooser * fc);
 
 

Modified: gnunet-gtk/src/lib/about.c
===================================================================
--- gnunet-gtk/src/lib/about.c  2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/lib/about.c  2012-01-01 19:55:56 UTC (rev 18881)
@@ -141,7 +141,7 @@
   GtkBuilder *builder;
   GtkWidget *ad;
 
-  builder = GNUNET_GTK_get_new_builder (dialogfile);
+  builder = GNUNET_GTK_get_new_builder (dialogfile, NULL);
   if (builder == NULL)
     return;
   ad = GTK_WIDGET (gtk_builder_get_object (builder, "about_window"));

Modified: gnunet-gtk/src/lib/eventloop.c
===================================================================
--- gnunet-gtk/src/lib/eventloop.c      2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/lib/eventloop.c      2012-01-01 19:55:56 UTC (rev 18881)
@@ -844,7 +844,7 @@
   gtk_init (&argc, (char ***) &args);
 
   /* setup main context */
-  ml->builder = GNUNET_GTK_get_new_builder (ml->main_window_file);
+  ml->builder = GNUNET_GTK_get_new_builder (ml->main_window_file, ml);
   if (ml->builder == NULL)
     return;
   ml->rs = GNUNET_NETWORK_fdset_create ();

Modified: gnunet-gtk/src/lib/glade.c
===================================================================
--- gnunet-gtk/src/lib/glade.c  2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/lib/glade.c  2012-01-01 19:55:56 UTC (rev 18881)
@@ -63,10 +63,13 @@
  * GNUnet-GTK glade file.
  *
  * @param filename name of the resource file to load
+ * @param user_data user_data to pass to signal handlers,
+ *        use "NULL" to pass the GtkBuilder itself.
  * @return NULL on error
  */
 GtkBuilder *
-GNUNET_GTK_get_new_builder (const char *filename)
+GNUNET_GTK_get_new_builder (const char *filename,
+                           void *user_data)
 {
   char *glade_path;
   GtkBuilder *ret;
@@ -84,7 +87,7 @@
     GNUNET_free (glade_path);
     return NULL;
   }
-  gtk_builder_connect_signals (ret, ret);
+  gtk_builder_connect_signals (ret, (user_data == NULL) ? ret : user_data);
   GNUNET_free (glade_path);
   return ret;
 }

Modified: gnunet-gtk/src/lib/nls.c
===================================================================
--- gnunet-gtk/src/lib/nls.c    2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/lib/nls.c    2012-01-01 19:55:56 UTC (rev 18881)
@@ -54,28 +54,36 @@
 }
 
 
-char *
-GNUNET_GTK_from_utf8_to_loc (gchar * str_utf8)
+/* This is copied from GLib */
+/**
+ * Obtain character set used for filenames on this system.
+ *
+ * @param filename_charset set to the character set used for filenames
+ * @return TRUE if the locale is utf-8
+ */
+static gboolean
+get_filename_charset (const gchar ** filename_charset)
 {
-  char *str_loc;
-  const char *loc_charset;
-  gboolean is_UTF8;
+  const gchar **charsets;
+  gboolean is_utf8;
 
-  if (NULL == str_utf8)
-    return NULL;
+  is_utf8 = g_get_filename_charsets (&charsets);
 
-  is_UTF8 = g_get_charset (&loc_charset);
-  if (is_UTF8)
-    str_loc = GNUNET_strdup (str_utf8);
-  else
-    str_loc =
-        GNUNET_STRINGS_from_utf8 (str_utf8, strlen (str_utf8), loc_charset);
+  if (filename_charset)
+    *filename_charset = charsets[0];
 
-  return str_loc;
+  return is_utf8;
 }
 
+
+/**
+ * Convert a string from the current locale to UTF-8.
+ *
+ * @param str_loc string in current locale
+ * @return string in UTF-8, NULL if str_loc was NULL
+ */
 char *
-GNUNET_GTK_from_loc_to_utf8 (gchar * str_loc)
+GNUNET_GTK_from_loc_to_utf8 (const char * str_loc)
 {
   char *str_utf8;
   const char *loc_charset;
@@ -89,27 +97,18 @@
     str_utf8 = GNUNET_strdup (str_loc);
   else
     str_utf8 = GNUNET_STRINGS_to_utf8 (str_loc, strlen (str_loc), loc_charset);
-
   return str_utf8;
 }
 
-/* This is copied from GLib */
-static gboolean
-get_filename_charset (const gchar ** filename_charset)
-{
-  const gchar **charsets;
-  gboolean is_utf8;
 
-  is_utf8 = g_get_filename_charsets (&charsets);
-
-  if (filename_charset)
-    *filename_charset = charsets[0];
-
-  return is_utf8;
-}
-
-char *
-GNUNET_GTK_from_filename_to_utf8 (gchar * filename)
+/**
+ * Convert from locale used for filenames to UTF-8.
+ *
+ * @param filename filename in locale encoding
+ * @return filename in utf-8 encoding
+ */
+static char *
+from_filename_to_utf8 (gchar * filename)
 {
   char *str_utf8;
   const char *filename_charset;
@@ -128,107 +127,22 @@
   return str_utf8;
 }
 
-char *
-GNUNET_GTK_from_utf8_to_filename (gchar * str_utf8)
-{
-  char *filename;
-  const char *filename_charset;
-  gboolean is_UTF8;
 
-  if (NULL == str_utf8)
-    return NULL;
-
-  is_UTF8 = get_filename_charset (&filename_charset);
-  if (is_UTF8)
-    filename = GNUNET_strdup (str_utf8);
-  else
-    filename =
-        GNUNET_STRINGS_from_utf8 (str_utf8, strlen (str_utf8),
-                                  filename_charset);
-
-  return filename;
-}
-
-char *
-GNUNET_GTK_from_loc_to_filename (gchar * str_loc)
-{
-  char *filename;
-  const char *filename_charset;
-  const char *loc_charset;
-  gboolean is_filename_UTF8, is_loc_UTF8;
-
-  if (NULL == str_loc)
-    return NULL;
-
-  is_filename_UTF8 = get_filename_charset (&filename_charset);
-  is_loc_UTF8 = g_get_charset (&loc_charset);
-  if (is_filename_UTF8 && is_loc_UTF8)
-    filename = GNUNET_strdup (str_loc);
-  else if (is_filename_UTF8)
-    filename = GNUNET_STRINGS_to_utf8 (str_loc, strlen (str_loc), loc_charset);
-  else if (is_loc_UTF8)
-    filename =
-        GNUNET_STRINGS_from_utf8 (str_loc, strlen (str_loc), filename_charset);
-  else
-    /* Pray that iconv() knows these charsets */
-    filename =
-        GNUNET_STRINGS_conv (str_loc, strlen (str_loc), loc_charset,
-                             filename_charset);
-
-  return filename;
-}
-
-char *
-GNUNET_GTK_from_filename_to_loc (gchar * filename)
-{
-  char *str_loc;
-  const char *loc_charset;
-  const char *filename_charset;
-  gboolean is_loc_UTF8, is_filename_UTF8;
-
-  if (NULL == filename)
-    return NULL;
-
-  is_filename_UTF8 = get_filename_charset (&filename_charset);
-  is_loc_UTF8 = g_get_charset (&loc_charset);
-  if (is_loc_UTF8 && is_filename_UTF8)
-    str_loc = GNUNET_strdup (filename);
-  else if (is_loc_UTF8)
-    str_loc =
-        GNUNET_STRINGS_to_utf8 (filename, strlen (filename), filename_charset);
-  else if (is_filename_UTF8)
-    str_loc =
-        GNUNET_STRINGS_from_utf8 (filename, strlen (filename), loc_charset);
-  else
-    /* Pray that iconv() knows these charsets */
-    str_loc =
-        GNUNET_STRINGS_conv (filename, strlen (filename), filename_charset,
-                             loc_charset);
-
-  return str_loc;
-}
-
-/* Returns filename form filechooser, encoded in locale-dependent
- * encoding, suitable to be given to CRT and/or GNUnet
+/**
+ * Returns filename form filechooser, encoded in UTF-8.
+ *
+ * @param fc file chooser to inspect
+ * @return selected filename as UTF-8, NULL on errors
  */
 char *
-GNUNET_GTK_filechooser_get_filename_loc (GtkFileChooser * fc)
-{
-  char *filename_loc;
-  gchar *filename = gtk_file_chooser_get_filename (fc);
-
-  filename_loc = GNUNET_GTK_from_filename_to_loc (filename);
-  g_free (filename);
-  return filename_loc;
-}
-
-gchar *
 GNUNET_GTK_filechooser_get_filename_utf8 (GtkFileChooser * fc)
 {
   char *filename_utf8;
   gchar *filename = gtk_file_chooser_get_filename (fc);
 
-  filename_utf8 = GNUNET_GTK_from_filename_to_utf8 (filename);
+  if (NULL == filename)
+    return NULL;
+  filename_utf8 = from_filename_to_utf8 (filename);
   g_free (filename);
   return filename_utf8;
 }

Modified: gnunet-gtk/src/lib/trayicon.c
===================================================================
--- gnunet-gtk/src/lib/trayicon.c       2012-01-01 19:09:58 UTC (rev 18880)
+++ gnunet-gtk/src/lib/trayicon.c       2012-01-01 19:55:56 UTC (rev 18881)
@@ -68,7 +68,7 @@
     event_button = (GdkEventButton *) event;
     if (event_button->button == 3)
     {
-      builder = GNUNET_GTK_get_new_builder 
("gnunet_gtk_status_bar_menu.glade");
+      builder = GNUNET_GTK_get_new_builder 
("gnunet_gtk_status_bar_menu.glade", NULL);
       tray_menu =
           GTK_MENU (gtk_builder_get_object
                     (builder, "GNUNET_GTK_status_bar_popup_menu"));




reply via email to

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