aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-03-15 22:22:16 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-03-15 22:22:16 +0000
commit660ab019477f35edf7a1e52ecf7682c8a731eaf4 (patch)
treee912ba18cc553d67c54cda4fbcd50397af357f0f
parent938bbf8bb75b38f00b75f98ed89e288f2b1b9988 (diff)
downloadgnunet-gtk-660ab019477f35edf7a1e52ecf7682c8a731eaf4.tar.gz
gnunet-gtk-660ab019477f35edf7a1e52ecf7682c8a731eaf4.zip
- new functions
-rw-r--r--src/gns/gnunet-gns-gtk.c2
-rw-r--r--src/gns/gnunet-gns-gtk.h3
-rw-r--r--src/gns/gnunet-gns-gtk_zone.c88
3 files changed, 61 insertions, 32 deletions
diff --git a/src/gns/gnunet-gns-gtk.c b/src/gns/gnunet-gns-gtk.c
index 51049ad1..8915dc4a 100644
--- a/src/gns/gnunet-gns-gtk.c
+++ b/src/gns/gnunet-gns-gtk.c
@@ -348,6 +348,8 @@ run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
348 return; 348 return;
349 } 349 }
350 gns->builder = GNUNET_GTK_main_loop_get_builder(ml); 350 gns->builder = GNUNET_GTK_main_loop_get_builder(ml);
351 gns->ts = GTK_TREE_STORE (gtk_builder_get_object (gns->builder, "GNUNET_GNS_GTK_treestore"));
352 GNUNET_assert (NULL != gns->ts);
351 353
352 zone_as_string = GNUNET_strdup (GNUNET_h2s_full (&gns->zone)); 354 zone_as_string = GNUNET_strdup (GNUNET_h2s_full (&gns->zone));
353 label = g_markup_printf_escaped (_("<b>Editing zone %s</b>"), 355 label = g_markup_printf_escaped (_("<b>Editing zone %s</b>"),
diff --git a/src/gns/gnunet-gns-gtk.h b/src/gns/gnunet-gns-gtk.h
index b7165e49..012f8de3 100644
--- a/src/gns/gnunet-gns-gtk.h
+++ b/src/gns/gnunet-gns-gtk.h
@@ -36,10 +36,13 @@ struct GNUNET_GNS_Context
36 36
37 GtkBuilder *builder; 37 GtkBuilder *builder;
38 38
39 GtkTreeStore *ts;
40
39 struct GNUNET_CRYPTO_RsaPrivateKey *pkey; 41 struct GNUNET_CRYPTO_RsaPrivateKey *pkey;
40 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pubkey; 42 struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pubkey;
41 43
42 GNUNET_HashCode zone; 44 GNUNET_HashCode zone;
45
43}; 46};
44 47
45 48
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,