aboutsummaryrefslogtreecommitdiff
path: root/src/gns/gnunet-gns-gtk_zone.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gns/gnunet-gns-gtk_zone.c')
-rw-r--r--src/gns/gnunet-gns-gtk_zone.c88
1 files changed, 56 insertions, 32 deletions
diff --git a/src/gns/gnunet-gns-gtk_zone.c b/src/gns/gnunet-gns-gtk_zone.c
index b80a22e9..fe7919df 100644
--- a/src/gns/gnunet-gns-gtk_zone.c
+++ b/src/gns/gnunet-gns-gtk_zone.c
@@ -26,7 +26,20 @@
26#include "gnunet_gtk.h" 26#include "gnunet_gtk.h"
27#include "gnunet-gns-gtk.h" 27#include "gnunet-gns-gtk.h"
28 28
29#define NEW_RECORD_STR "<new record>"
29 30
31enum
32{
33 TREE_COL_NAME = 0,
34 TREE_COL_IS_PUBLIC,
35 TREE_COL_RECORD_TYPE,
36 TREE_COL_RECORD_TYPE_AS_STR,
37 TREE_COL_EXP_TIME,
38 TREE_COL_EXP_TIME_IS_REL,
39 TREE_COL_EXP_TIME_AS_STR,
40 TREE_COL_VAL_AS_STR,
41 TREE_COL_VAL_COLOR,
42};
30 43
31/** 44/**
32 * The user has selected a new record type. Update the 45 * The user has selected a new record type. Update the
@@ -61,6 +74,15 @@ GNUNET_GNS_GTK_ispublic_cellrenderertoggle_toggled_cb (GtkCellRendererToggle *ce
61 gchar *path, 74 gchar *path,
62 gpointer user_data) 75 gpointer user_data)
63{ 76{
77 struct GNUNET_GNS_Context *gns = user_data;
78 GtkTreeIter it;
79 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
80 int value;
81
82 gtk_tree_model_get_iter_from_string(tm, &it, path);
83 gtk_tree_model_get(tm, &it, TREE_COL_IS_PUBLIC, &value, -1);
84 gtk_tree_store_set(gns->ts, &it, TREE_COL_IS_PUBLIC, !value, -1);
85
64 GNUNET_break (0); // FIXME, not implemented 86 GNUNET_break (0); // FIXME, not implemented
65} 87}
66 88
@@ -118,7 +140,32 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
118 gchar *new_text, 140 gchar *new_text,
119 gpointer user_data) 141 gpointer user_data)
120{ 142{
121 GNUNET_break (0); // FIXME, not implemented 143 struct GNUNET_GNS_Context *gns = user_data;
144 GtkTreeIter it;
145 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
146
147 gtk_tree_model_get_iter_from_string(tm, &it, path);
148 gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
149
150 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path, new_text);
151 if ((0 == strcmp (path, "0")) && (0 != strcmp (new_text, NEW_RECORD_STR)) )
152 {
153 GNUNET_break (0);
154 /* add a new dummy line */
155
156 gtk_tree_store_append(gns->ts, &it, NULL);
157 gtk_tree_store_set(gns->ts, &it,
158 TREE_COL_NAME, _(NEW_RECORD_STR),
159 TREE_COL_RECORD_TYPE, 1,
160 -1);
161 /* add a new name */
162
163 }
164 else
165 {
166 /* update name */
167
168 }
122} 169}
123 170
124 171
@@ -140,28 +187,14 @@ GNUNET_GNS_GTK_main_treeview_popup_menu_cb (GtkWidget *widget,
140 return FALSE; 187 return FALSE;
141} 188}
142 189
143enum
144{
145 TREE_COL_NAME = 0,
146 TREE_COL_IS_PUBLIC,
147 TREE_COL_RECORD_TYPE,
148 TREE_COL_RECORD_TYPE_AS_STR,
149 TREE_COL_EXP_TIME,
150 TREE_COL_EXP_TIME_IS_REL,
151 TREE_COL_EXP_TIME_AS_STR,
152 TREE_COL_VAL_AS_STR,
153 TREE_COL_VAL_COLOR,
154
155};
156
157struct ZoneIteration_Context 190struct ZoneIteration_Context
158{ 191{
159 struct GNUNET_GNS_Context *gns; 192 struct GNUNET_GNS_Context *gns;
160 GNUNET_HashCode zone; 193 GNUNET_HashCode zone;
161 struct GNUNET_NAMESTORE_ZoneIterator * it; 194 struct GNUNET_NAMESTORE_ZoneIterator * it;
162 GtkTreeStore *ts;
163}; 195};
164 196
197
165void zone_iteration_proc (void *cls, 198void zone_iteration_proc (void *cls,
166 const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key, 199 const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key,
167 struct GNUNET_TIME_Absolute expire, 200 struct GNUNET_TIME_Absolute expire,
@@ -185,17 +218,17 @@ void zone_iteration_proc (void *cls,
185 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Zone `%s' iteration result `%s', %u records\n", 218 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Zone `%s' iteration result `%s', %u records\n",
186 GNUNET_h2s(&zc_ctx->zone), name, rd_count); 219 GNUNET_h2s(&zc_ctx->zone), name, rd_count);
187 220
188 GNUNET_assert(GTK_IS_TREE_STORE(zc_ctx->ts)); 221 GNUNET_assert(GTK_IS_TREE_STORE(zc_ctx->gns->ts));
189 gtk_tree_store_append(zc_ctx->ts, &toplevel, NULL); 222 gtk_tree_store_append(zc_ctx->gns->ts, &toplevel, NULL);
190 223
191 gtk_tree_store_set(zc_ctx->ts, &toplevel, 224 gtk_tree_store_set(zc_ctx->gns->ts, &toplevel,
192 TREE_COL_NAME, name, 225 TREE_COL_NAME, name,
193 -1); 226 -1);
194 227
195 /* Append elements for records */ 228 /* Append elements for records */
196 for (c = 0; c < rd_count; c ++) 229 for (c = 0; c < rd_count; c ++)
197 { 230 {
198 gtk_tree_store_append(zc_ctx->ts, &child, &toplevel); 231 gtk_tree_store_append(zc_ctx->gns->ts, &child, &toplevel);
199 } 232 }
200 233
201 GNUNET_NAMESTORE_zone_iterator_next(zc_ctx->it); 234 GNUNET_NAMESTORE_zone_iterator_next(zc_ctx->it);
@@ -212,28 +245,19 @@ GNUNET_GNS_GTK_main_treeview_realize_cb (GtkWidget *widget,
212 gpointer user_data) 245 gpointer user_data)
213{ 246{
214 struct GNUNET_GNS_Context *gns = user_data; 247 struct GNUNET_GNS_Context *gns = user_data;
215 GtkBuilder *builder = gns->builder;
216 struct ZoneIteration_Context *zc_ctx; 248 struct ZoneIteration_Context *zc_ctx;
217 GtkTreeStore *ts;
218 GtkTreeIter toplevel; 249 GtkTreeIter toplevel;
219 250
220 GNUNET_assert (GTK_IS_BUILDER(builder));
221
222 ts = GTK_TREE_STORE (gtk_builder_get_object (builder, "GNUNET_GNS_GTK_treestore"));
223 GNUNET_assert (GTK_IS_TREE_STORE(ts));
224 GNUNET_assert (ts != NULL);
225
226 /* Append a top level row and leave it empty */ 251 /* Append a top level row and leave it empty */
227 gtk_tree_store_append(ts, &toplevel, NULL); 252 gtk_tree_store_append(gns->ts, &toplevel, NULL);
228 gtk_tree_store_set(ts, &toplevel, 253 gtk_tree_store_set(gns->ts, &toplevel,
229 TREE_COL_NAME, _("<new record>"), 254 TREE_COL_NAME, _(NEW_RECORD_STR),
230 TREE_COL_RECORD_TYPE, 1, 255 TREE_COL_RECORD_TYPE, 1,
231 -1); 256 -1);
232 257
233 zc_ctx = GNUNET_malloc (sizeof (struct ZoneIteration_Context)); 258 zc_ctx = GNUNET_malloc (sizeof (struct ZoneIteration_Context));
234 zc_ctx->gns = user_data; 259 zc_ctx->gns = user_data;
235 zc_ctx->zone = gns->zone; 260 zc_ctx->zone = gns->zone;
236 zc_ctx->ts = ts;
237 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Starting one `%s' iteration\n", GNUNET_h2s(&zc_ctx->zone)); 261 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Starting one `%s' iteration\n", GNUNET_h2s(&zc_ctx->zone));
238 262
239 zc_ctx->it = GNUNET_NAMESTORE_zone_iteration_start(gns->ns, &gns->zone, 263 zc_ctx->it = GNUNET_NAMESTORE_zone_iteration_start(gns->ns, &gns->zone,