diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-03-15 22:22:16 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-03-15 22:22:16 +0000 |
commit | 660ab019477f35edf7a1e52ecf7682c8a731eaf4 (patch) | |
tree | e912ba18cc553d67c54cda4fbcd50397af357f0f | |
parent | 938bbf8bb75b38f00b75f98ed89e288f2b1b9988 (diff) | |
download | gnunet-gtk-660ab019477f35edf7a1e52ecf7682c8a731eaf4.tar.gz gnunet-gtk-660ab019477f35edf7a1e52ecf7682c8a731eaf4.zip |
- new functions
-rw-r--r-- | src/gns/gnunet-gns-gtk.c | 2 | ||||
-rw-r--r-- | src/gns/gnunet-gns-gtk.h | 3 | ||||
-rw-r--r-- | src/gns/gnunet-gns-gtk_zone.c | 88 |
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 | ||
31 | enum | ||
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 | ||
143 | enum | ||
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 | |||
157 | struct ZoneIteration_Context | 190 | struct 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 | |||
165 | void zone_iteration_proc (void *cls, | 198 | void 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, |