aboutsummaryrefslogtreecommitdiff
path: root/src/identity/gnunet-identity-gtk_namespace_manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/identity/gnunet-identity-gtk_namespace_manager.c')
-rw-r--r--src/identity/gnunet-identity-gtk_namespace_manager.c300
1 files changed, 253 insertions, 47 deletions
diff --git a/src/identity/gnunet-identity-gtk_namespace_manager.c b/src/identity/gnunet-identity-gtk_namespace_manager.c
index ca4a14c5..788c18a3 100644
--- a/src/identity/gnunet-identity-gtk_namespace_manager.c
+++ b/src/identity/gnunet-identity-gtk_namespace_manager.c
@@ -19,60 +19,266 @@
19*/ 19*/
20 20
21/** 21/**
22 * @file src/fs/gnunet-fs-gtk_namespace_manager.c 22 * @file src/identity/gnunet-identity-gtk_namespace_manager.c
23 * @author LRN 23 * @author LRN
24 * @author Christian Grothoff
24 */ 25 */
25#include "gnunet-fs-gtk_common.h" 26#include "gnunet-identity-gtk_namespace_manager.h"
26#include "gnunet-fs-gtk.h"
27#include <gnunet/gnunet_util_lib.h>
28#include <gnunet/gnunet_fs_service.h> 27#include <gnunet/gnunet_fs_service.h>
29 28
30struct GNUNET_GTK_NamespaceManagerContext 29/**
30 * Types of metadata we offer for namespaces.
31 */
32static gint types[] = {
33 EXTRACTOR_METATYPE_TITLE,
34 EXTRACTOR_METATYPE_KEYWORDS,
35 EXTRACTOR_METATYPE_SUBJECT,
36 EXTRACTOR_METATYPE_DESCRIPTION,
37 EXTRACTOR_METATYPE_COMMENT,
38 EXTRACTOR_METATYPE_COPYRIGHT,
39 EXTRACTOR_METATYPE_URI,
40 EXTRACTOR_METATYPE_CREATOR,
41 EXTRACTOR_METATYPE_CREATION_DATE,
42 EXTRACTOR_METATYPE_RESERVED
43};
44
45
46/**
47 * Columns in the metadata list store.
48 */
49enum METADATA_ModelColumns
50 {
51 /**
52 * A guint
53 */
54 METADATA_MC_TYPE_AS_ENUM = 0,
55
56 /**
57 * A gchararray
58 */
59 METADATA_MC_TYPE_AS_STRING = 1,
60
61 /**
62 * A gchararray
63 */
64 METADATA_MC_VALUE = 2
65
66 };
67
68
69/**
70 * Columns in the keyword list tree store.
71 */
72enum KEYWORDS_ModelColumns
73 {
74
75 /**
76 * A gchararray
77 */
78 KEYWORDS_MC_KEYWORD = 0
79
80 };
81
82
83/**
84 * Columns in the meta types list tree store.
85 */
86enum METATYPES_ModelColumns
87 {
88
89 /**
90 * A gchararray
91 */
92 METATYPES_MC_TYPE_AS_STRING = 0,
93
94 /**
95 * A guint
96 */
97 METATYPES_MC_TYPE_AS_ENUM = 1
98
99 };
100
101
102/**
103 * Context for advertisement operations.
104 */
105struct AdvertiseContext
31{ 106{
107 /**
108 * Builder for accessing objects in the dialog.
109 */
32 GtkBuilder *builder; 110 GtkBuilder *builder;
33 GtkWidget *known_ns; 111
34 GtkWidget *ns_order; 112 /**
35 GtkWidget *ns_details; 113 * Private key of the namespace we will be advertising.
36 GtkTreeSelection *known_ns_sel; 114 */
37 GtkTreeSelection *ns_order_sel; 115 struct GNUNET_CRYPTO_EccPrivateKey priv;
38 GtkTreeSelection *ns_details_sel; 116
39 GtkListStore *ns_order_store; 117 /**
40 GtkListStore *known_ns_store; 118 * Main dialog object.
41 GtkListStore *ns_details_store; 119 */
42 GtkWindow *namespace_manager; 120 GtkWidget *dialog;
43 GtkTreeViewColumn *order_rank; 121
44 GtkTreeViewColumn *order_name; 122 /**
45 GtkTreeViewColumn *order_id; 123 * List of keywords to advertise under.
46 GtkWidget *details_apply_button; 124 */
47 GtkWidget *details_delete_button; 125 GtkListStore *keywords;
48 int sort_direction; 126
49 GList *deleted_namespaces; 127 /**
50 struct GNUNET_CONTAINER_MetaData *uneditable_md; 128 * Metadata to include in the advertisement.
51 struct GNUNET_GTK_MainWindowContext *main_ctx; 129 */
130 GtkListStore *metadata;
131
132 /**
133 * Model with the meta types.
134 */
135 GtkListStore *meta_types;
136
52}; 137};
53 138
54#define GNUNET_GTK_KNOWN_NAMESPACES_IS_MINE_COLUMN 0
55#define GNUNET_GTK_KNOWN_NAMESPACES_RANK_COLUMN 1
56#define GNUNET_GTK_KNOWN_NAMESPACES_NAME_COLUMN 2
57#define GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_COLUMN 3
58#define GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_BIN_COLUMN 4
59#define GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN 5
60#define GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN 6
61#define GNUNET_GTK_KNOWN_NAMESPACES_NON_UNIQUE_NAME_COLUMN 7
62
63#define GNUNET_GTK_NAMESPACE_ORDER_RANK_COLUMN 0
64#define GNUNET_GTK_NAMESPACE_ORDER_NAME_COLUMN 1
65#define GNUNET_GTK_NAMESPACE_ORDER_IDENTIFIER_COLUMN 2
66#define GNUNET_GTK_NAMESPACE_ORDER_IDENTIFIER_BIN_COLUMN 3
67#define GNUNET_GTK_NAMESPACE_ORDER_KNOWN_ROW_REFERENCE_COLUMN 4
68
69#define GNUNET_GTK_NAMESPACE_DETAILS_PLUGIN_NAME_COLUMN 0
70#define GNUNET_GTK_NAMESPACE_DETAILS_TYPE_BIN_COLUMN 1
71#define GNUNET_GTK_NAMESPACE_DETAILS_TYPE_COLUMN 2
72#define GNUNET_GTK_NAMESPACE_DETAILS_FORMAT_COLUMN 3
73#define GNUNET_GTK_NAMESPACE_DETAILS_DATA_MIME_COLUMN 4
74#define GNUNET_GTK_NAMESPACE_DETAILS_VALUE_COLUMN 5
75 139
140/**
141 * The user terminated the dialog. Perform the appropriate action.
142 *
143 * @param dialog the advertisement dialog
144 * @param response_id action selected by the user
145 * @param user_data our 'struct AdvertiseContext' (to be cleaned up)
146 */
147void
148GNUNET_GTK_identity_advertise_dialog_response_cb (GtkDialog *dialog,
149 gint response_id,
150 gpointer user_data)
151{
152 struct AdvertiseContext *ac = user_data;
153
154 if (GTK_RESPONSE_OK == response_id)
155 {
156 GNUNET_break (0); // FIXME: not implemented
157 }
158
159 gtk_widget_destroy (ac->dialog);
160 g_object_unref (G_OBJECT (ac->builder));
161 GNUNET_free (ac);
162}
163
164
165/**
166 * FIXME: do we need this event? If so, what do we do?
167 */
168void
169GNUNET_GTK_identity_advertise_keywords_column_clicked_cb ()
170{
171 GNUNET_break (0);
172}
173
174
175/**
176 * User edited keywords in the keyword tree view. Update
177 * the model accordingly.
178 */
179void
180GNUNET_GTK_identity_advertise_keywords_text_edited_cb ()
181{
182 GNUNET_break (0);
183}
184
185
186/**
187 * User pushed a key in the metadata tree view. Check if it was
188 * "DEL" and if so, remove the selected values.
189 */
190void
191GNUNET_GTK_identity_advertise_metadata_treeview_key_press_event_cb ()
192{
193 GNUNET_break (0);
194}
195
196
197/**
198 * FIXME: how is this event triggered exactly?
199 */
200void
201GNUNET_GTK_identity_advertise_metadata_treeview_delete_event_cb ()
202{
203 GNUNET_break (0);
204}
205
206
207/**
208 * User edited metadata value. Update sensitivity of the 'add' button.
209 */
210void
211GNUNET_GTK_identity_advertise_metadata_value_text_edited_cb ()
212{
213 GNUNET_break (0);
214}
215
216
217/**
218 * User edited metadata type. Not sure we need to do something here...
219 */
220void
221GNUNET_GTK_identity_advertise_metadata_type_text_edited_cb ()
222{
223 GNUNET_break (0);
224}
225
226
227/**
228 * User clicked the 'add' button, get the type and value and update
229 * the metadata model.
230 */
231void
232GNUNET_GTK_identity_advertise_metadata_add_button_clicked_cb ()
233{
234 GNUNET_break (0);
235}
236
237
238/**
239 * Run the dialog for advertising a namespace.
240 *
241 * @param priv private key of the namespace to advertise
242 */
243void
244GNUNET_IDENTITY_advertise_dialog_start_ (const struct GNUNET_CRYPTO_EccPrivateKey *priv)
245{
246 struct AdvertiseContext *ac;
247 gint i;
248 GtkTreeIter iter;
249
250 ac = GNUNET_new (struct AdvertiseContext);
251 ac->priv = *priv;
252 ac->builder =
253 GNUNET_GTK_get_new_builder ("gnunet_identity_gtk_advertise_dialog.glade",
254 ac);
255 if (NULL == ac->builder)
256 {
257 GNUNET_break (0);
258 GNUNET_free (ac);
259 return;
260 }
261 ac->dialog = GTK_WIDGET (gtk_builder_get_object
262 (ac->builder, "GNUNET_GTK_identity_advertise_dialog"));
263 ac->keywords = GTK_LIST_STORE (gtk_builder_get_object
264 (ac->builder, "GNUNET_GTK_identity_advertise_keywords_liststore"));
265 ac->metadata = GTK_LIST_STORE (gtk_builder_get_object
266 (ac->builder, "GNUNET_GTK_identity_advertise_metadata_liststore"));
267 ac->meta_types = GTK_LIST_STORE (gtk_builder_get_object
268 (ac->builder, "GNUNET_GTK_identity_metadata_types_liststore"));
269 for (i = 0; EXTRACTOR_METATYPE_RESERVED != types[i]; i++)
270 gtk_list_store_insert_with_values (ac->meta_types,
271 &iter, G_MAXINT,
272 METATYPES_MC_TYPE_AS_STRING,
273 EXTRACTOR_metatype_to_string (types[i]),
274 METATYPES_MC_TYPE_AS_ENUM,
275 types[i],
276 -1);
277 gtk_window_present (GTK_WINDOW (ac->dialog));
278}
279
280
281#if 0
76 282
77static void 283static void
78sort_order_list (struct GNUNET_GTK_NamespaceManagerContext *ctx, 284sort_order_list (struct GNUNET_GTK_NamespaceManagerContext *ctx,
@@ -1064,6 +1270,6 @@ namespace_selector_manage_namespaces_button_clicked_cb (GtkButton *button, gpoin
1064{ 1270{
1065 GNUNET_GTK_open_ns_manager (user_data); 1271 GNUNET_GTK_open_ns_manager (user_data);
1066} 1272}
1273#endif
1067 1274
1068 1275/* end of gnunet-identity-gtk_namespace_manager.c */
1069/* end of gnunet-fs-gtk_namespace_manager.c */