[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 */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r28493 - gnunet-gtk/src/identity,
gnunet <=