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.c73
1 files changed, 67 insertions, 6 deletions
diff --git a/src/gns/gnunet-gns-gtk_zone.c b/src/gns/gnunet-gns-gtk_zone.c
index 39f6f6ef..f0630ed2 100644
--- a/src/gns/gnunet-gns-gtk_zone.c
+++ b/src/gns/gnunet-gns-gtk_zone.c
@@ -244,13 +244,17 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
244 struct GNUNET_GNS_Context *gns = user_data; 244 struct GNUNET_GNS_Context *gns = user_data;
245 GtkTreeIter it; 245 GtkTreeIter it;
246 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts); 246 GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
247 int not_dummy;
247 248
248 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path, new_text); 249 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path, new_text);
249 if ((0 == strcmp (path, "0")) && (0 != strcmp (new_text, NEW_NAME_STR)) ) 250 if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
251 return;
252 gtk_tree_model_get_iter_from_string(tm, &it, path);
253 gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
254
255 if (not_dummy == GNUNET_NO)
250 { 256 {
251 GNUNET_break (0);
252 /* update name */ 257 /* update name */
253 gtk_tree_model_get_iter_from_string(tm, &it, path);
254 gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1); 258 gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
255 gtk_tree_store_set (gns->ts, &it, TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR), -1); 259 gtk_tree_store_set (gns->ts, &it, TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR), -1);
256 gtk_tree_store_set (gns->ts, &it, TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, -1); 260 gtk_tree_store_set (gns->ts, &it, TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, -1);
@@ -267,12 +271,10 @@ GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
267 else 271 else
268 { 272 {
269 /* update name */ 273 /* update name */
270 gtk_tree_model_get_iter_from_string(tm, &it, path);
271 gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1); 274 gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
272 } 275 }
273} 276}
274 277
275
276/** 278/**
277 * The zone treeview pop up menu is supposed to be created. 279 * The zone treeview pop up menu is supposed to be created.
278 * (Note: this is not the only method that might need to be 280 * (Note: this is not the only method that might need to be
@@ -287,7 +289,50 @@ gboolean
287GNUNET_GNS_GTK_main_treeview_popup_menu_cb (GtkWidget *widget, 289GNUNET_GNS_GTK_main_treeview_popup_menu_cb (GtkWidget *widget,
288 gpointer user_data) 290 gpointer user_data)
289{ 291{
290 GNUNET_break (0); // FIXME, not implemented 292 struct GNUNET_GNS_Context *gns = user_data;
293 GtkTreeView *tv;
294 GtkTreeModel *tm;
295 GtkTreeIter it;
296 GtkMenu *popup;
297 GtkTreeSelection * ts;
298 int not_dummy;
299
300
301
302 tv = GTK_TREE_VIEW(gtk_builder_get_object (gns->builder, "GNUNET_GNS_GTK_main_treeview"));
303 ts = gtk_tree_view_get_selection(tv);
304 gtk_tree_selection_get_selected (ts, &tm, &it);
305 gtk_tree_model_get(GTK_TREE_MODEL(gns->ts), &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
306 if (GNUNET_NO == not_dummy)
307 return TRUE;
308
309 popup = GTK_MENU(gtk_builder_get_object (gns->builder, "GNUNET_GNS_GTK_delete_popup_menu"));
310 gtk_widget_show_all (GTK_WIDGET(popup));
311 gtk_menu_popup(popup, NULL, NULL, NULL, NULL, 0, 0);
312 return TRUE;
313}
314
315gboolean
316GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
317{
318 /* Check for right click*/
319 if (event->type == GDK_BUTTON_PRESS && event->button == 3)
320 {
321 GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
322
323 }
324 return FALSE;
325}
326
327gboolean
328GNUNET_GNS_GTK_main_treeview_key_press_popup_menu_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
329{
330 /* Check for delete key */
331 if ((event->type == GDK_KEY_PRESS) && (GDK_Delete == event->keyval))
332 {
333 GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
334
335 }
291 return FALSE; 336 return FALSE;
292} 337}
293 338
@@ -298,6 +343,22 @@ struct ZoneIteration_Context
298 struct GNUNET_NAMESTORE_ZoneIterator * it; 343 struct GNUNET_NAMESTORE_ZoneIterator * it;
299}; 344};
300 345
346void GNUNET_GNS_GTK_delete_popup_menu_delete_cb (GtkMenuItem *menuitem,
347 gpointer user_data)
348{
349 struct GNUNET_GNS_Context *gns = user_data;
350 GtkTreeIter it;
351 int not_dummy;
352
353 GtkTreeView *tv = GTK_TREE_VIEW(gtk_builder_get_object (gns->builder, "GNUNET_GNS_GTK_main_treeview"));
354 GtkTreeModel *tm;
355 GtkTreeSelection * ts = gtk_tree_view_get_selection(tv);
356
357 gtk_tree_selection_get_selected (ts, &tm, &it);
358 gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
359 if (GNUNET_YES == not_dummy)
360 gtk_tree_store_remove (gns->ts, &it);
361}
301 362
302void zone_iteration_proc (void *cls, 363void zone_iteration_proc (void *cls,
303 const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key, 364 const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key,