gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r28493 - gnunet-gtk/src/identity


From: gnunet
Subject: [GNUnet-SVN] r28493 - gnunet-gtk/src/identity
Date: Sun, 11 Aug 2013 14:32:24 +0200

Author: grothoff
Date: 2013-08-11 14:32:23 +0200 (Sun, 11 Aug 2013)
New Revision: 28493

Modified:
   gnunet-gtk/src/identity/Makefile.am
   gnunet-gtk/src/identity/gnunet-identity-gtk.c
   gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.c
   gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.h
Log:
-towards advertisement handling

Modified: gnunet-gtk/src/identity/Makefile.am
===================================================================
--- gnunet-gtk/src/identity/Makefile.am 2013-08-11 12:31:49 UTC (rev 28492)
+++ gnunet-gtk/src/identity/Makefile.am 2013-08-11 12:32:23 UTC (rev 28493)
@@ -11,7 +11,8 @@
 
 gnunet_identity_gtk_SOURCES = \
   gnunet-identity-gtk.c \
-  gnunet-identity-gtk_about.c 
+  gnunet-identity-gtk_about.c \
+  gnunet-identity-gtk_namespace_manager.c 
gnunet-identity-gtk_namespace_manager.h 
 gnunet_identity_gtk_LDADD = \
   $(top_builddir)/src/lib/libgnunetgtk.la \
   @GTK_LIBS@ \

Modified: gnunet-gtk/src/identity/gnunet-identity-gtk.c
===================================================================
--- gnunet-gtk/src/identity/gnunet-identity-gtk.c       2013-08-11 12:31:49 UTC 
(rev 28492)
+++ gnunet-gtk/src/identity/gnunet-identity-gtk.c       2013-08-11 12:32:23 UTC 
(rev 28493)
@@ -25,6 +25,7 @@
  */
 #include "gnunet_gtk.h"
 #include <gnunet/gnunet_identity_service.h>
+#include "gnunet-identity-gtk_namespace_manager.h"
 
 
 /**
@@ -159,11 +160,6 @@
    * Ego to advertise.
    */
   struct GNUNET_IDENTITY_Ego *ego;
-                 
-  /**
-   * Row where the search list popup was created.
-   */
-  GtkTreeRowReference *rr;
 
 };
 
@@ -176,11 +172,13 @@
  */
 static void
 advertise_ctx_menu (GtkMenuItem *item, 
-                         gpointer user_data)
+                   gpointer user_data)
 {
   struct AdvertisePopupContext *apc = user_data;
+  const struct GNUNET_CRYPTO_EccPrivateKey *priv;
 
-  fprintf (stderr, "ADVERTISE TIME!\n");
+  priv = GNUNET_IDENTITY_ego_get_private_key (apc->ego);
+  GNUNET_IDENTITY_advertise_dialog_start_ (priv);  
 }
 
 
@@ -197,7 +195,6 @@
   struct AdvertisePopupContext *apc = user_data;
 
   gtk_widget_destroy (GTK_WIDGET (menushell));
-  gtk_tree_row_reference_free (apc->rr);
   GNUNET_free (apc);
 }
 
@@ -240,6 +237,7 @@
       gtk_tree_path_free (path);
       return FALSE; /* not sure how we got a path but no iter... */  
     }
+  gtk_tree_path_free (path);
   gtk_tree_model_get (GTK_TREE_MODEL (ls), &iter,
                       IDENTITY_MC_EGO, &ego,
                       -1);
@@ -247,8 +245,6 @@
     return FALSE;
   apc = GNUNET_new (struct AdvertisePopupContext);
   apc->ego = ego;
-  apc->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (ls), path);
-  gtk_tree_path_free (path);
   menu = GTK_MENU (gtk_menu_new ());
   child = gtk_menu_item_new_with_label (_("_Advertise"));
   g_signal_connect (child, "activate",

Modified: gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.c
===================================================================
--- gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.c     
2013-08-11 12:31:49 UTC (rev 28492)
+++ gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.c     
2013-08-11 12:32:23 UTC (rev 28493)
@@ -19,61 +19,267 @@
 */
 
 /**
- * @file src/fs/gnunet-fs-gtk_namespace_manager.c
+ * @file src/identity/gnunet-identity-gtk_namespace_manager.c
  * @author LRN
+ * @author Christian Grothoff
  */
-#include "gnunet-fs-gtk_common.h"
-#include "gnunet-fs-gtk.h"
-#include <gnunet/gnunet_util_lib.h>
+#include "gnunet-identity-gtk_namespace_manager.h"
 #include <gnunet/gnunet_fs_service.h>
 
-struct GNUNET_GTK_NamespaceManagerContext
+/**
+ * Types of metadata we offer for namespaces.
+ */
+static gint types[] = {
+  EXTRACTOR_METATYPE_TITLE,
+  EXTRACTOR_METATYPE_KEYWORDS, 
+  EXTRACTOR_METATYPE_SUBJECT,
+  EXTRACTOR_METATYPE_DESCRIPTION,
+  EXTRACTOR_METATYPE_COMMENT, 
+  EXTRACTOR_METATYPE_COPYRIGHT,
+  EXTRACTOR_METATYPE_URI, 
+  EXTRACTOR_METATYPE_CREATOR, 
+  EXTRACTOR_METATYPE_CREATION_DATE,
+  EXTRACTOR_METATYPE_RESERVED
+};
+
+
+/**
+ * Columns in the metadata list store.
+ */
+enum METADATA_ModelColumns
+  {
+    /**
+     * A guint
+     */
+    METADATA_MC_TYPE_AS_ENUM = 0,
+
+    /**
+     * A gchararray 
+     */
+    METADATA_MC_TYPE_AS_STRING = 1,
+
+    /**
+     * A gchararray 
+     */
+    METADATA_MC_VALUE = 2
+
+  };
+
+
+/**
+ * Columns in the keyword list tree store.
+ */
+enum KEYWORDS_ModelColumns
+  {
+
+    /**
+     * A gchararray 
+     */
+    KEYWORDS_MC_KEYWORD = 0
+
+  };
+
+
+/**
+ * Columns in the meta types list tree store.
+ */
+enum METATYPES_ModelColumns
+  {
+
+    /**
+     * A gchararray 
+     */
+    METATYPES_MC_TYPE_AS_STRING = 0,
+
+    /**
+     * A guint
+     */
+    METATYPES_MC_TYPE_AS_ENUM = 1
+
+  };
+
+
+/**
+ * Context for advertisement operations.
+ */
+struct AdvertiseContext
 {
+  /**
+   * Builder for accessing objects in the dialog.
+   */
   GtkBuilder *builder;
-  GtkWidget *known_ns;
-  GtkWidget *ns_order;
-  GtkWidget *ns_details;
-  GtkTreeSelection *known_ns_sel;
-  GtkTreeSelection *ns_order_sel;
-  GtkTreeSelection *ns_details_sel;
-  GtkListStore *ns_order_store;
-  GtkListStore *known_ns_store;
-  GtkListStore *ns_details_store;
-  GtkWindow *namespace_manager;
-  GtkTreeViewColumn *order_rank;
-  GtkTreeViewColumn *order_name;
-  GtkTreeViewColumn *order_id;
-  GtkWidget *details_apply_button;
-  GtkWidget *details_delete_button;
-  int sort_direction;
-  GList *deleted_namespaces;
-  struct GNUNET_CONTAINER_MetaData *uneditable_md;
-  struct GNUNET_GTK_MainWindowContext *main_ctx;
+  
+  /** 
+   * Private key of the namespace we will be advertising.
+   */
+  struct GNUNET_CRYPTO_EccPrivateKey priv;
+
+  /**
+   * Main dialog object.
+   */
+  GtkWidget *dialog;
+  
+  /**
+   * List of keywords to advertise under.
+   */
+  GtkListStore *keywords;
+
+  /**
+   * Metadata to include in the advertisement.
+   */
+  GtkListStore *metadata;
+
+  /**
+   * Model with the meta types.
+   */
+  GtkListStore *meta_types;
+
 };
 
-#define GNUNET_GTK_KNOWN_NAMESPACES_IS_MINE_COLUMN 0
-#define GNUNET_GTK_KNOWN_NAMESPACES_RANK_COLUMN 1
-#define GNUNET_GTK_KNOWN_NAMESPACES_NAME_COLUMN 2
-#define GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_COLUMN 3
-#define GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_BIN_COLUMN 4
-#define GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN 5
-#define GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN 6
-#define GNUNET_GTK_KNOWN_NAMESPACES_NON_UNIQUE_NAME_COLUMN 7
 
-#define GNUNET_GTK_NAMESPACE_ORDER_RANK_COLUMN 0
-#define GNUNET_GTK_NAMESPACE_ORDER_NAME_COLUMN 1
-#define GNUNET_GTK_NAMESPACE_ORDER_IDENTIFIER_COLUMN 2
-#define GNUNET_GTK_NAMESPACE_ORDER_IDENTIFIER_BIN_COLUMN 3
-#define GNUNET_GTK_NAMESPACE_ORDER_KNOWN_ROW_REFERENCE_COLUMN 4
+/**
+ * The user terminated the dialog.  Perform the appropriate action.
+ *
+ * @param dialog the advertisement dialog
+ * @param response_id action selected by the user
+ * @param user_data our 'struct AdvertiseContext' (to be cleaned up)
+ */
+void
+GNUNET_GTK_identity_advertise_dialog_response_cb (GtkDialog *dialog,
+                                                 gint response_id,
+                                                 gpointer user_data)
+{
+  struct AdvertiseContext *ac = user_data;
 
-#define GNUNET_GTK_NAMESPACE_DETAILS_PLUGIN_NAME_COLUMN 0
-#define GNUNET_GTK_NAMESPACE_DETAILS_TYPE_BIN_COLUMN 1
-#define GNUNET_GTK_NAMESPACE_DETAILS_TYPE_COLUMN 2
-#define GNUNET_GTK_NAMESPACE_DETAILS_FORMAT_COLUMN 3
-#define GNUNET_GTK_NAMESPACE_DETAILS_DATA_MIME_COLUMN 4
-#define GNUNET_GTK_NAMESPACE_DETAILS_VALUE_COLUMN 5
+  if (GTK_RESPONSE_OK == response_id)
+    {
+      GNUNET_break (0); // FIXME: not implemented
+    }
 
+  gtk_widget_destroy (ac->dialog);
+  g_object_unref (G_OBJECT (ac->builder));
+  GNUNET_free (ac);
+}
 
+
+/**
+ * FIXME: do we need this event? If so, what do we do?
+ */
+void
+GNUNET_GTK_identity_advertise_keywords_column_clicked_cb ()
+{
+  GNUNET_break (0);
+}
+
+ 
+/**
+ * User edited keywords in the keyword tree view.  Update
+ * the model accordingly.
+ */ 
+void
+GNUNET_GTK_identity_advertise_keywords_text_edited_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * User pushed a key in the metadata tree view.  Check if it was
+ * "DEL" and if so, remove the selected values.
+ */
+void
+GNUNET_GTK_identity_advertise_metadata_treeview_key_press_event_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * FIXME: how is this event triggered exactly?
+ */
+void
+GNUNET_GTK_identity_advertise_metadata_treeview_delete_event_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * User edited metadata value.  Update sensitivity of the 'add' button.
+ */
+void
+GNUNET_GTK_identity_advertise_metadata_value_text_edited_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * User edited metadata type.  Not sure we need to do something here...
+ */
+void
+GNUNET_GTK_identity_advertise_metadata_type_text_edited_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * User clicked the 'add' button, get the type and value and update
+ * the metadata model.
+ */
+void
+GNUNET_GTK_identity_advertise_metadata_add_button_clicked_cb ()
+{
+  GNUNET_break (0);
+}
+
+
+/**
+ * Run the dialog for advertising a namespace.
+ *
+ * @param priv private key of the namespace to advertise
+ */
+void
+GNUNET_IDENTITY_advertise_dialog_start_ (const struct 
GNUNET_CRYPTO_EccPrivateKey *priv)
+{
+  struct AdvertiseContext *ac;
+  gint i;
+  GtkTreeIter iter;
+
+  ac = GNUNET_new (struct AdvertiseContext);
+  ac->priv = *priv;
+  ac->builder =
+    GNUNET_GTK_get_new_builder ("gnunet_identity_gtk_advertise_dialog.glade",
+                               ac);
+  if (NULL == ac->builder)
+  {
+    GNUNET_break (0);
+    GNUNET_free (ac);
+    return;
+  }
+  ac->dialog = GTK_WIDGET (gtk_builder_get_object
+                          (ac->builder, 
"GNUNET_GTK_identity_advertise_dialog"));
+  ac->keywords = GTK_LIST_STORE (gtk_builder_get_object
+                               (ac->builder, 
"GNUNET_GTK_identity_advertise_keywords_liststore"));
+  ac->metadata = GTK_LIST_STORE (gtk_builder_get_object
+                            (ac->builder, 
"GNUNET_GTK_identity_advertise_metadata_liststore"));
+  ac->meta_types = GTK_LIST_STORE (gtk_builder_get_object
+                                  (ac->builder, 
"GNUNET_GTK_identity_metadata_types_liststore"));
+  for (i = 0; EXTRACTOR_METATYPE_RESERVED != types[i]; i++)  
+    gtk_list_store_insert_with_values (ac->meta_types,
+                                      &iter, G_MAXINT, 
+                                      METATYPES_MC_TYPE_AS_STRING,
+                                      EXTRACTOR_metatype_to_string (types[i]),
+                                      METATYPES_MC_TYPE_AS_ENUM,
+                                      types[i],
+                                      -1);
+  gtk_window_present (GTK_WINDOW (ac->dialog));
+}
+
+
+#if 0
+
 static void
 sort_order_list (struct GNUNET_GTK_NamespaceManagerContext *ctx,
     int sort_column)
@@ -1064,6 +1270,6 @@
 {
   GNUNET_GTK_open_ns_manager (user_data);
 }
+#endif
 
-
-/* end of gnunet-fs-gtk_namespace_manager.c */
+/* end of gnunet-identity-gtk_namespace_manager.c */

Modified: gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.h
===================================================================
--- gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.h     
2013-08-11 12:31:49 UTC (rev 28492)
+++ gnunet-gtk/src/identity/gnunet-identity-gtk_namespace_manager.h     
2013-08-11 12:32:23 UTC (rev 28493)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet
-     (C) 2005, 2006, 2010, 2012 Christian Grothoff (and other contributing 
authors)
+     (C) 2005-2013 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
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -19,18 +19,25 @@
 */
 
 /**
- * @file src/fs/gnunet-fs-gtk_namespace_manager.h
+ * @file src/identity/gnunet-identity-gtk_namespace_manager.h
  * @author LRN
+ * @author Christian Grothoff
  */
 
-#ifndef GNUNET_FS_GTK_NAMESPACE_MANAGER_H
-#define GNUNET_FS_GTK_NAMESPACE_MANAGER_H
+#ifndef GNUNET_IDENTITY_GTK_NAMESPACE_MANAGER_H
+#define GNUNET_IDENTITY_GTK_NAMESPACE_MANAGER_H
 
-#include "gnunet-fs-gtk_common.h"
-#include "gnunet-fs-gtk.h"
+#include "gnunet_gtk.h"
 
-GtkObject *
-GNUNET_GTK_namespace_manager_open (struct GNUNET_GTK_MainWindowContext 
*main_ctx);
+/**
+ * Run the dialog for advertising a namespace.
+ *
+ * @param priv private key of the namespace to advertise
+ */
+void
+GNUNET_IDENTITY_advertise_dialog_start_ (const struct 
GNUNET_CRYPTO_EccPrivateKey *priv);
 
-#endif /* GNUNET_FS_GTK_NAMESPACE_MANAGER_H */
-/* end of gnunet-fs-gtk_namespace_manager.c */
+#endif 
+/* GNUNET_FS_GTK_NAMESPACE_MANAGER_H */
+
+/* end of gnunet-identity-gtk_namespace_manager.h */




reply via email to

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