aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-03-16 18:25:36 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-03-16 18:25:36 +0000
commitb628f20c4833b178031834864402d8958a632da3 (patch)
tree3b07119f93860495c0a77eda9138310252ee08fe
parent59498b0d3a3370b440d7e6a499fc2d3219d9fc54 (diff)
downloadgnunet-gtk-b628f20c4833b178031834864402d8958a632da3.tar.gz
gnunet-gtk-b628f20c4833b178031834864402d8958a632da3.zip
- changes
-rw-r--r--contrib/gnunet_gns_gtk_main_window.glade15
-rw-r--r--src/gns/gnunet-gns-gtk_zone.c73
2 files changed, 82 insertions, 6 deletions
diff --git a/contrib/gnunet_gns_gtk_main_window.glade b/contrib/gnunet_gns_gtk_main_window.glade
index 079c9966..9699deb3 100644
--- a/contrib/gnunet_gns_gtk_main_window.glade
+++ b/contrib/gnunet_gns_gtk_main_window.glade
@@ -2,6 +2,19 @@
2<interface> 2<interface>
3 <requires lib="gtk+" version="2.20"/> 3 <requires lib="gtk+" version="2.20"/>
4 <!-- interface-naming-policy project-wide --> 4 <!-- interface-naming-policy project-wide -->
5 <object class="GtkMenu" id="GNUNET_GNS_GTK_delete_popup_menu">
6 <property name="visible">True</property>
7 <property name="can_focus">False</property>
8 <child>
9 <object class="GtkMenuItem" id="GNUNET_GNS_GTK_delete_button">
10 <property name="visible">True</property>
11 <property name="can_focus">False</property>
12 <property name="use_action_appearance">False</property>
13 <property name="label" translatable="yes">Delete Record</property>
14 <signal name="activate" handler="GNUNET_GNS_GTK_delete_popup_menu_delete_cb" swapped="no"/>
15 </object>
16 </child>
17 </object>
5 <object class="GtkWindow" id="GNUNET_GNS_GTK_main_window"> 18 <object class="GtkWindow" id="GNUNET_GNS_GTK_main_window">
6 <property name="can_focus">False</property> 19 <property name="can_focus">False</property>
7 <property name="default_height">500</property> 20 <property name="default_height">500</property>
@@ -223,6 +236,8 @@
223 <property name="visible">True</property> 236 <property name="visible">True</property>
224 <property name="can_focus">True</property> 237 <property name="can_focus">True</property>
225 <property name="model">GNUNET_GNS_GTK_treestore</property> 238 <property name="model">GNUNET_GNS_GTK_treestore</property>
239 <signal name="button-press-event" handler="GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb" swapped="no"/>
240 <signal name="key-press-event" handler="GNUNET_GNS_GTK_main_treeview_key_press_popup_menu_cb" after="yes" swapped="no"/>
226 <signal name="realize" handler="GNUNET_GNS_GTK_main_treeview_realize_cb" swapped="no"/> 241 <signal name="realize" handler="GNUNET_GNS_GTK_main_treeview_realize_cb" swapped="no"/>
227 <signal name="popup-menu" handler="GNUNET_GNS_GTK_main_treeview_popup_menu_cb" swapped="no"/> 242 <signal name="popup-menu" handler="GNUNET_GNS_GTK_main_treeview_popup_menu_cb" swapped="no"/>
228 <child> 243 <child>
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,