gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r18669 - in gnunet-gtk: contrib src/fs src/lib


From: gnunet
Subject: [GNUnet-SVN] r18669 - in gnunet-gtk: contrib src/fs src/lib
Date: Sun, 18 Dec 2011 11:46:48 +0100

Author: grothoff
Date: 2011-12-18 11:46:48 +0100 (Sun, 18 Dec 2011)
New Revision: 18669

Modified:
   gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_download.c
   gnunet-gtk/src/fs/gnunet-fs-gtk.c
   gnunet-gtk/src/fs/gnunet-fs-gtk.h
   gnunet-gtk/src/lib/about.c
Log:
LRN: Make download-by-uri dialogue-less

Modified: gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2011-12-18 10:20:01 UTC 
(rev 18668)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2011-12-18 10:46:48 UTC 
(rev 18669)
@@ -677,6 +677,189 @@
       <column type="gchararray"/>
     </columns>
   </object>
+  <object class="GtkTextBuffer" 
id="GNUNET_GTK_open_url_dialog_url_textview_buffer">
+    <signal name="changed" 
handler="GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb" 
swapped="no"/>
+  </object>
+  <object class="GtkWindow" id="GNUNET_GTK_open_url_window">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Enter the URI to be 
downloaded</property>
+    <property name="modal">True</property>
+    <property name="default_width">640</property>
+    <property name="default_height">240</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="deletable">False</property>
+    <property name="transient_for">GNUNET_GTK_main_window</property>
+    <child>
+      <object class="GtkVBox" id="GNUNET_GTK_open_url_dialog_main_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="GNUNET_GTK_open_url_dialog_query_hbox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_url_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</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_textview</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkTextView" 
id="GNUNET_GTK_open_url_dialog_url_textview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_KEY_PRESS_MASK | 
GDK_STRUCTURE_MASK</property>
+                        <property name="wrap_mode">char</property>
+                        <property name="indent">20</property>
+                        <property 
name="buffer">GNUNET_GTK_open_url_dialog_url_textview_buffer</property>
+                        <property name="accepts_tab">False</property>
+                        <signal name="key-press-event" 
handler="GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb" 
swapped="no"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label_item">
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <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="can_focus">False</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_combobox</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="GtkComboBox" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property 
name="model">main_window_search_anonymity_liststore</property>
+                    <property name="active">1</property>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renderer"/>
+                      <attributes>
+                        <attribute name="foreground">2</attribute>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renerer_level"/>
+                      <attributes>
+                        <attribute name="text">1</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="padding">5</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_execute_button">
+                <property name="label">_Execute</property>
+                <property name="use_action_appearance">False</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="image">execute_stock_image2</property>
+                <property name="use_underline">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_execute_button_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="pack_type">end</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">4</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
   <object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
     <columns>
       <!-- column-name peer_identity -->
@@ -715,6 +898,21 @@
     <property name="page_increment">10</property>
     <property name="page_size">10</property>
   </object>
+  <object class="GtkImage" id="execute_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+  <object class="GtkImage" id="execute_stock_image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+  <object class="GtkImage" id="execute_stock_image2">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-execute</property>
+  </object>
   <object class="GtkImage" id="image1">
     <property name="visible">True</property>
     <property name="can_focus">False</property>

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_download.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_download.c 2011-12-18 
10:20:01 UTC (rev 18668)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_download.c 2011-12-18 
10:46:48 UTC (rev 18669)
@@ -25,82 +25,66 @@
 #include "gnunet-fs-gtk-common.h"
 #include "gnunet-fs-gtk-download.h"
 #include "gnunet-fs-gtk.h"
+#include <gdk/gdkkeysyms.h>
 
-static GtkBuilder *builder;
-
+/**
+ * User selected "Open URI" in main window.
+ */
 void
-GNUNET_GTK_open_url_dialog_url_entry_changed_cb (GtkEditable * editable,
-                                                 gpointer user_data)
+GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy,
+                                                    gpointer user_data)
 {
-  struct GNUNET_FS_Uri *uri;
-  char *perr;
-  const char *uris;
+  GtkBuilder *builder;
+  GtkWidget *dialog;
+  GtkTextBuffer *tb;
+  GtkTextIter ti_start, ti_end;
 
-  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);
+  builder = GTK_BUILDER (user_data);
+
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_window"));
+
+  tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_dialog_url_textview_buffer"));
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_start, 0);
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_end, -1);
+  gtk_text_buffer_delete (tb, &ti_start, &ti_end);
+
+  /* TODO: queue the clipboard, maybe there's valid URI in there?
+   * If so, get it. */
+
+  gtk_widget_show (dialog);
 }
 
-
-/**
- * User selected "Open URI" in main window.
- */
 void
-GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy,
-                                                    gpointer data)
+GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton *button,
+    gpointer user_data)
 {
-  GtkWidget *ad;
-  const char *uris;
-  uint32_t anonymity;
+  GtkBuilder *builder;
+  GtkWidget *dialog;
+  GtkTextBuffer *tb;
+  GtkTextIter ti_start, ti_end;
+  guint anonymity_level;
+  char *perr;
+  char *uris;
   struct GNUNET_FS_Uri *uri;
-  char *perr;
-  struct DownloadContext *dc;
 
-  GNUNET_assert (builder == NULL);
-  builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_open_url_dialog.glade");
-  if (builder == NULL)
-  {
-    GNUNET_break (0);
+  builder = GTK_BUILDER (user_data);
+
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_window"));
+
+  gtk_widget_hide (dialog);
+
+  tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_dialog_url_textview_buffer"));
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_start, 0);
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_end, -1);
+
+  uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE);
+
+  if (!GNUNET_GTK_get_selected_anonymity_level (builder,
+      "main_window_search_anonymity_combobox", &anonymity_level))
     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;
+  g_free (uris);
   if (uri == NULL)
   {
     GNUNET_free (perr);
@@ -113,16 +97,17 @@
     fprintf (stderr, "Starting search!\n");
     GNUNET_break (NULL !=
                   GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri,
-                                          anonymity,
+                                          anonymity_level,
                                           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))
   {
+    struct DownloadContext *dc;
     dc = GNUNET_malloc (sizeof (struct DownloadContext));
     dc->uri = uri;
-    dc->anonymity = anonymity;
+    dc->anonymity = anonymity_level;
     GNUNET_FS_GTK_open_download_as_dialog (dc);
     return;
   }
@@ -130,4 +115,69 @@
   GNUNET_FS_uri_destroy (uri);
 }
 
+void
+GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb (GtkButton *button,
+    gpointer user_data)
+{
+  GtkBuilder *builder;
+  builder = GTK_BUILDER (user_data);
+
+  gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_window")));
+  return;
+}
+
+gboolean
+GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb (GtkWidget *widget,
+    GdkEventKey *event, gpointer user_data)
+{
+  GtkBuilder *builder;
+  builder = GTK_BUILDER (user_data);
+
+  if (event->keyval == GDK_KEY_Return)
+  {
+    GtkWidget *execute = GTK_WIDGET (gtk_builder_get_object (builder,
+        "GNUNET_GTK_open_url_dialog_execute_button"));
+    if (gtk_widget_get_sensitive (execute))
+      GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (
+          GTK_BUTTON (execute), user_data);
+    return TRUE;
+  }
+  return FALSE;
+}
+
+void
+GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb (
+    GtkTextBuffer *textbuffer, gpointer user_data)
+{
+  struct GNUNET_FS_Uri *uri;
+  GtkTextBuffer *tb;
+  GtkTextIter ti_start, ti_end;
+  GtkBuilder *builder;
+  char *perr;
+  char *uris;
+
+  builder = GTK_BUILDER (user_data);
+
+  perr = NULL;
+  tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, 
"GNUNET_GTK_open_url_dialog_url_textview_buffer"));
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_start, 0);
+  gtk_text_buffer_get_iter_at_offset  (tb, &ti_end, -1);
+
+  uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE);
+  if (uris != NULL)
+    uri = GNUNET_FS_uri_parse (uris, &perr);
+  else
+    uri = NULL;
+  g_free (uris);
+  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);
+}
+
 /* end of gnunet-fs-gtk-main_window_file_download.c */

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.c   2011-12-18 10:20:01 UTC (rev 18668)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.c   2011-12-18 10:46:48 UTC (rev 18669)
@@ -240,15 +240,14 @@
 }
 
 gboolean
-get_selected_anonymity_level (GtkBuilder *builder, guint *p_level)
+GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar 
*combo_name, guint *p_level)
 {
   GtkComboBox *combo;
   GtkTreeIter iter;
   GtkTreeModel *model;
   guint level;
 
-  combo = GTK_COMBO_BOX(gtk_builder_get_object (builder,
-      "main_window_search_anonymity_combobox"));
+  combo = GTK_COMBO_BOX(gtk_builder_get_object (builder, combo_name));
   if (!combo)
     return FALSE;
 
@@ -447,7 +446,8 @@
   toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder,
       "main_window_search_namespace_dropdown_button"));
 
-  if (!get_selected_anonymity_level (builder, &anonymity_level))
+  if (!GNUNET_GTK_get_selected_anonymity_level (builder,
+      "main_window_search_anonymity_combobox", &anonymity_level))
     return;
 
   mime_combo = GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.h   2011-12-18 10:20:01 UTC (rev 18668)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.h   2011-12-18 10:46:48 UTC (rev 18669)
@@ -63,6 +63,18 @@
 GNUNET_FS_GTK_get_main_window_object (const char *name);
 
 
+/**
+ * Get the selected anonymity level.
+ *
+ * @param builder builder object for the window
+ * @param combo_name name of the combobox widget to get anonymity from
+ * @param p_level pointer to a guint to receive the level value
+ * @return TRUE on success, FALSE on error
+ */
+gboolean
+GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder,
+    gchar *combo_name, guint *p_level);
 
+
 #endif
 /* end of gnunet-fs-gtk.h */

Modified: gnunet-gtk/src/lib/about.c
===================================================================
--- gnunet-gtk/src/lib/about.c  2011-12-18 10:20:01 UTC (rev 18668)
+++ gnunet-gtk/src/lib/about.c  2011-12-18 10:46:48 UTC (rev 18669)
@@ -121,11 +121,6 @@
   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);
-  /*
-  gtk_dialog_run (GTK_DIALOG (ad));
-  gtk_widget_destroy (ad);
-  g_object_unref (G_OBJECT (builder));
-  */
 }
 
 




reply via email to

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