gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r11967 - in gnunet-gtk: contrib src


From: gnunet
Subject: [GNUnet-SVN] r11967 - in gnunet-gtk: contrib src
Date: Sun, 27 Jun 2010 12:02:50 +0200

Author: grothoff
Date: 2010-06-27 12:02:50 +0200 (Sun, 27 Jun 2010)
New Revision: 11967

Added:
   gnunet-gtk/contrib/open_url_dialog.glade
Modified:
   gnunet-gtk/contrib/Makefile.am
   gnunet-gtk/contrib/Makefile.in
   gnunet-gtk/contrib/main-window.glade
   gnunet-gtk/src/download.c
   gnunet-gtk/src/download.h
   gnunet-gtk/src/fs_event_handler.c
   gnunet-gtk/src/main_window_file_download.c
   gnunet-gtk/src/main_window_open_directory.c
Log:
adding open-URI support, works for search, download URIs need more work

Modified: gnunet-gtk/contrib/Makefile.am
===================================================================
--- gnunet-gtk/contrib/Makefile.am      2010-06-26 17:17:07 UTC (rev 11966)
+++ gnunet-gtk/contrib/Makefile.am      2010-06-27 10:02:50 UTC (rev 11967)
@@ -13,6 +13,7 @@
   main_tab_new_frame.glade \
   main-window.glade \
   open_directory_dialog.glade \
+  open_url_dialog.glade \
   publish_dialog.glade \
   publish-directory-dialog.glade \
   publish_edit_dialog.glade \

Modified: gnunet-gtk/contrib/Makefile.in
===================================================================
--- gnunet-gtk/contrib/Makefile.in      2010-06-26 17:17:07 UTC (rev 11966)
+++ gnunet-gtk/contrib/Makefile.in      2010-06-27 10:02:50 UTC (rev 11967)
@@ -264,6 +264,7 @@
   main_tab_new_frame.glade \
   main-window.glade \
   open_directory_dialog.glade \
+  open_url_dialog.glade \
   publish_dialog.glade \
   publish-directory-dialog.glade \
   publish_edit_dialog.glade \

Modified: gnunet-gtk/contrib/main-window.glade
===================================================================
--- gnunet-gtk/contrib/main-window.glade        2010-06-26 17:17:07 UTC (rev 
11966)
+++ gnunet-gtk/contrib/main-window.glade        2010-06-27 10:02:50 UTC (rev 
11967)
@@ -2,26 +2,34 @@
 <interface>
   <requires lib="gtk+" version="2.20"/>
   <!-- interface-naming-policy project-wide -->
-  <object class="GtkImage" id="image5">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-down</property>
+  <object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
+    <columns>
+      <!-- column-name peer_identity -->
+      <column type="gchararray"/>
+      <!-- column-name trust -->
+      <column type="guint"/>
+      <!-- column-name number_of_known_addresses -->
+      <column type="guint"/>
+      <!-- column-name country_name -->
+      <column type="gchararray"/>
+      <!-- column-name country_flag -->
+      <column type="GdkPixbuf"/>
+      <!-- column-name bandwidth -->
+      <column type="guint64"/>
+    </columns>
   </object>
-  <object class="GtkImage" id="image4">
-    <property name="visible">True</property>
-    <property name="stock">gtk-find</property>
+  <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
+    <columns>
+      <!-- column-name extractor_meta_type -->
+      <column type="guint"/>
+      <!-- column-name extractor_meta_format -->
+      <column type="guint"/>
+      <!-- column-name extractor_meta_type_string -->
+      <column type="gchararray"/>
+      <!-- column-name extracotr_meta_value -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkImage" id="image1">
-    <property name="visible">True</property>
-    <property name="stock">gtk-open</property>
-  </object>
-  <object class="GtkImage" id="image3">
-    <property name="visible">True</property>
-    <property name="stock">gtk-new</property>
-  </object>
-  <object class="GtkImage" id="image2">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-up</property>
-  </object>
   <object class="GtkWindow" id="GNUNET_GTK_main_window">
     <property name="title" translatable="yes">gnunet-gtk</property>
     <property name="window_position">center</property>
@@ -47,7 +55,6 @@
                     <child>
                       <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_create_pseudonym">
                         <property name="label" translatable="yes">_Create 
pseudonym</property>
-                        <property name="visible">True</property>
                         <property name="tooltip_text" 
translatable="yes">Create a pseudonym for publishing content.  Note that you 
can also publish content anonymously (without using a pseudonym).</property>
                         <property name="use_action_appearance">False</property>
                         <property name="accel_path">&lt;gnunet-gtk&gt;/File 
sharing/Create pseudonym</property>
@@ -351,7 +358,6 @@
                 </child>
                 <child>
                   <object class="GtkNotebook" 
id="GNUNET_GTK_statistics_notebook">
-                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="scrollable">True</property>
                   </object>
@@ -465,32 +471,24 @@
       </object>
     </child>
   </object>
-  <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
-    <columns>
-      <!-- column-name extractor_meta_type -->
-      <column type="guint"/>
-      <!-- column-name extractor_meta_format -->
-      <column type="guint"/>
-      <!-- column-name extractor_meta_type_string -->
-      <column type="gchararray"/>
-      <!-- column-name extracotr_meta_value -->
-      <column type="gchararray"/>
-    </columns>
+  <object class="GtkImage" id="image2">
+    <property name="visible">True</property>
+    <property name="stock">gtk-go-up</property>
   </object>
-  <object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
-    <columns>
-      <!-- column-name peer_identity -->
-      <column type="gchararray"/>
-      <!-- column-name trust -->
-      <column type="guint"/>
-      <!-- column-name number_of_known_addresses -->
-      <column type="guint"/>
-      <!-- column-name country_name -->
-      <column type="gchararray"/>
-      <!-- column-name country_flag -->
-      <column type="GdkPixbuf"/>
-      <!-- column-name bandwidth -->
-      <column type="guint64"/>
-    </columns>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="stock">gtk-new</property>
   </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="stock">gtk-open</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="stock">gtk-find</property>
+  </object>
+  <object class="GtkImage" id="image5">
+    <property name="visible">True</property>
+    <property name="stock">gtk-go-down</property>
+  </object>
 </interface>

Added: gnunet-gtk/contrib/open_url_dialog.glade
===================================================================
--- gnunet-gtk/contrib/open_url_dialog.glade                            (rev 0)
+++ gnunet-gtk/contrib/open_url_dialog.glade    2010-06-27 10:02:50 UTC (rev 
11967)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.20"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkDialog" id="GNUNET_GTK_open_url_dialog">
+    <property name="width_request">500</property>
+    <property name="height_request">350</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Download from URI</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="icon_name">dialog-password</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="GNUNET_GTK_open_url_dialog_main_vbox">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="GNUNET_GTK_open_url_dialog_query_hbox">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_url_label">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_URI:</property>
+                <property name="use_underline">True</property>
+                <property name="selectable">True</property>
+                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_url_entry</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" 
id="GNUNET_GTK_open_url_dialog_url_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="activates_default">True</property>
+                <property name="caps_lock_warning">False</property>
+                <property 
name="primary_icon_stock">gtk-dialog-authentication</property>
+                <property name="primary_icon_tooltip_text" 
translatable="yes">Separate multiple keywords with spaces, prefix mandatory 
keywords with "+"</property>
+                <signal name="changed" 
handler="GNUNET_GTK_open_url_dialog_url_entry_changed_cb" swapped="no"/>
+                <signal name="activate" 
handler="GNUNET_GTK_search_dialog_search_button_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_anonymity_label">
+                <property name="visible">True</property>
+                <property name="label" 
translatable="yes">_Anonymity:</property>
+                <property name="use_underline">True</property>
+                <property name="selectable">True</property>
+                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_anonymity_spin_button</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" 
id="GNUNET_GTK_open_url_dialog_anonymity_spin_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="caps_lock_warning">False</property>
+                <property 
name="adjustment">GNUNET_GTK_open_url_anonymity_adjustment</property>
+                <property name="climb_rate">1</property>
+                <property name="numeric">True</property>
+                <signal name="value-changed" 
handler="GNUNET_GTK_anonymity_spin_button_value_changed_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" 
id="GNUNET_GTK_open_url_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_execute_button">
+                <property name="label">_Execute</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="image">execute_stock_image</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget 
response="-6">GNUNET_GTK_open_url_dialog_cancel_button</action-widget>
+      <action-widget 
response="-5">GNUNET_GTK_open_url_dialog_execute_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkAdjustment" id="GNUNET_GTK_open_url_anonymity_adjustment">
+    <property name="upper">100000</property>
+    <property name="value">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkImage" id="execute_stock_image">
+    <property name="visible">True</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+</interface>

Modified: gnunet-gtk/src/download.c
===================================================================
--- gnunet-gtk/src/download.c   2010-06-26 17:17:07 UTC (rev 11966)
+++ gnunet-gtk/src/download.c   2010-06-27 10:02:50 UTC (rev 11967)
@@ -88,15 +88,31 @@
   len = GNUNET_FS_uri_chk_get_file_size (dc->uri);
   gtk_widget_destroy (ad);
   g_object_unref (G_OBJECT (builder));
-  GNUNET_FS_download_start_from_search (fs,
-                                       dc->sr,
-                                       dc->filename,
-                                       NULL /* tempname */,
-                                       0 /* offset */,
-                                       len,
-                                       anonymity,
-                                       opt,
-                                       dc);
+  if (dc->sr != NULL)
+    GNUNET_break (NULL !=
+                 GNUNET_FS_download_start_from_search (fs,
+                                                       dc->sr,
+                                                       dc->filename,
+                                                       NULL /* tempname */,
+                                                       0 /* offset */,
+                                                       len,
+                                                       anonymity,
+                                                       opt,
+                                                       dc));
+  else
+    GNUNET_break (NULL !=
+                 GNUNET_FS_download_start (fs,
+                                           dc->uri,
+                                           NULL,
+                                           dc->filename,
+                                           NULL /* tempname */,
+                                           0 /* offset */,
+                                           len,
+                                           anonymity,
+                                           opt,
+                                           dc,
+                                           NULL));
+
 }
 
 /* end of download.c */

Modified: gnunet-gtk/src/download.h
===================================================================
--- gnunet-gtk/src/download.h   2010-06-26 17:17:07 UTC (rev 11966)
+++ gnunet-gtk/src/download.h   2010-06-27 10:02:50 UTC (rev 11967)
@@ -63,6 +63,10 @@
    */
   int is_recursive;
 
+  /**
+   * Desired (default) anonymity level.
+   */
+  int anonymity;
 };
 
 

Modified: gnunet-gtk/src/fs_event_handler.c
===================================================================
--- gnunet-gtk/src/fs_event_handler.c   2010-06-26 17:17:07 UTC (rev 11966)
+++ gnunet-gtk/src/fs_event_handler.c   2010-06-27 10:02:50 UTC (rev 11967)
@@ -259,9 +259,10 @@
     }
   else
     {
-      /* find or create tab with just download results and
+      /* FIXME: find or create tab with just download results and
         create new entry! */
       GNUNET_break (0);
+      return de;
     }
   path = gtk_tree_row_reference_get_path (de->rr);
   if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), 
@@ -318,6 +319,7 @@
   dlc->filename = GNUNET_FS_meta_data_suggest_filename (meta);
   dlc->rr = gtk_tree_row_reference_new (tm, path);
   dlc->sr = sr->result;
+  dlc->anonymity = 1; /* FIXME: grab from search? */
   GNUNET_GTK_open_download_as_dialog (dlc);
 }
 
@@ -1115,6 +1117,8 @@
                     GNUNET_YES);
       break;
     case GNUNET_FS_STATUS_SEARCH_START: 
+      fprintf (stderr,
+              "Search started!\n");
       if (info->value.search.pctx != NULL)
        {
          GNUNET_break (0); 

Modified: gnunet-gtk/src/main_window_file_download.c
===================================================================
--- gnunet-gtk/src/main_window_file_download.c  2010-06-26 17:17:07 UTC (rev 
11966)
+++ gnunet-gtk/src/main_window_file_download.c  2010-06-27 10:02:50 UTC (rev 
11967)
@@ -23,16 +23,108 @@
  * @author Christian Grothoff
  */
 #include "common.h"
+#include "download.h"
 
+
+static GtkBuilder *builder;
+
+void
+GNUNET_GTK_open_url_dialog_url_entry_changed_cb (GtkEditable *editable,
+                                                gpointer user_data)
+{
+  struct GNUNET_FS_Uri *uri;
+  char *perr;
+  const char *uris;
+  
+  perr = NULL;
+  uris = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder,
+                                                               
"GNUNET_GTK_open_url_dialog_url_entry")));
+  if (uris != NULL)
+    uri = GNUNET_FS_uri_parse (uris, &perr);
+  else
+    uri = NULL;
+  gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder,
+                                                               
"GNUNET_GTK_open_url_dialog_execute_button")),
+                           (uri == NULL) ? FALSE : TRUE);
+  if (uri != NULL)
+    GNUNET_FS_uri_destroy (uri);
+  else
+    GNUNET_free_non_null (perr);   
+}
+
+
 /**
- * Thumbnail view is toggled.
+ * User selected "Open URI" in main window.
  */
 void
 GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy, 
                                                    gpointer data)
 {
-  /* not implemented */
+  GtkWidget *ad;
+  const char *uris;
+  uint32_t anonymity;
+  struct GNUNET_FS_Uri *uri;
+  char *perr;
+  struct DownloadContext *dc;
+
+  GNUNET_assert (builder == NULL);
+  builder = GNUNET_GTK_get_new_builder ("open_url_dialog.glade");
+  if (builder == NULL)
+    {
+      GNUNET_break (0);
+      return;
+    }
+  ad = GTK_WIDGET (gtk_builder_get_object (builder,
+                                          "GNUNET_GTK_open_url_dialog"));
+  if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
+    {
+      gtk_widget_destroy (ad);
+      g_object_unref (G_OBJECT (builder));
+      builder = NULL;
+      fprintf (stderr,
+              "Dialog closed!\n");
+      return;
+    }
+  uris = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder,
+                                                               
"GNUNET_GTK_open_url_dialog_url_entry")));
+  anonymity = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (builder,
+                                                                               
  "GNUNET_GTK_open_url_dialog_anonymity_spin_button")));
+  uri = GNUNET_FS_uri_parse (uris, &perr);
+  gtk_widget_destroy (ad);
+  g_object_unref (G_OBJECT (builder));
+  builder = NULL;
+  if (uri == NULL)
+    {
+      GNUNET_free (perr);
+      /* Why was "execute" button sensitive!? */     
+      GNUNET_break (0);
+      return;
+    }
+  if (GNUNET_FS_uri_test_sks (uri) ||
+      GNUNET_FS_uri_test_ksk (uri))
+    {
+      fprintf (stderr,
+              "Starting search!\n");
+      GNUNET_break (NULL !=
+                   GNUNET_FS_search_start (GNUNET_GTK_get_fs_handle (),
+                                           uri,
+                                           anonymity,
+                                           GNUNET_FS_SEARCH_OPTION_NONE,
+                                           NULL));
+      GNUNET_FS_uri_destroy (uri);
+      return;
+    }
+  if (GNUNET_FS_uri_test_chk (uri) ||
+          GNUNET_FS_uri_test_loc (uri))
+    {
+      dc = GNUNET_malloc (sizeof (struct DownloadContext));
+      dc->uri = uri;
+      dc->anonymity = anonymity;
+      GNUNET_GTK_open_download_as_dialog (dc);
+      return;
+    }
   GNUNET_break (0);
+  GNUNET_FS_uri_destroy (uri);
 }
 
 /* end of main_window_file_download.c */

Modified: gnunet-gtk/src/main_window_open_directory.c
===================================================================
--- gnunet-gtk/src/main_window_open_directory.c 2010-06-26 17:17:07 UTC (rev 
11966)
+++ gnunet-gtk/src/main_window_open_directory.c 2010-06-27 10:02:50 UTC (rev 
11967)
@@ -25,14 +25,37 @@
 #include "common.h"
 
 /**
- * Thumbnail view is toggled.
+ * User selected "Open directory" in menu.  Display dialog, open
+ * file and then display a new tab with its contents.
  */
 void
 GNUNET_GTK_main_menu_file_open_gnunet_directory_activate_cb (GtkWidget * 
dummy, 
                                                             gpointer data)
 {
-  /* not implemented */
+  GtkWidget *ad;
+  GtkBuilder *builder;
+  char *filename;
+
+  builder = GNUNET_GTK_get_new_builder ("open_directory_dialog.glade");
+  if (builder == NULL)
+    {
+      GNUNET_break (0);
+      return;
+    }
+  ad = GTK_WIDGET (gtk_builder_get_object (builder,
+                                          "GNUNET_GTK_open_directory_dialog"));
+  if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
+    {
+      gtk_widget_destroy (ad);
+      g_object_unref (G_OBJECT (builder));
+      return;
+    }
+  filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(ad));
+  gtk_widget_destroy (ad);
+  g_object_unref (G_OBJECT (builder));
+
   GNUNET_break (0);
+  g_free (filename);
 }
 
 /* end of main_window_open_directory.c */




reply via email to

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