gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20580 - in gnunet-gtk: contrib src/gns


From: gnunet
Subject: [GNUnet-SVN] r20580 - in gnunet-gtk: contrib src/gns
Date: Fri, 16 Mar 2012 19:25:36 +0100

Author: wachs
Date: 2012-03-16 19:25:36 +0100 (Fri, 16 Mar 2012)
New Revision: 20580

Modified:
   gnunet-gtk/contrib/gnunet_gns_gtk_main_window.glade
   gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
Log:
- changes


Modified: gnunet-gtk/contrib/gnunet_gns_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_gns_gtk_main_window.glade 2012-03-16 18:01:12 UTC 
(rev 20579)
+++ gnunet-gtk/contrib/gnunet_gns_gtk_main_window.glade 2012-03-16 18:25:36 UTC 
(rev 20580)
@@ -2,6 +2,19 @@
 <interface>
   <requires lib="gtk+" version="2.20"/>
   <!-- interface-naming-policy project-wide -->
+  <object class="GtkMenu" id="GNUNET_GNS_GTK_delete_popup_menu">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkMenuItem" id="GNUNET_GNS_GTK_delete_button">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="use_action_appearance">False</property>
+        <property name="label" translatable="yes">Delete Record</property>
+        <signal name="activate" 
handler="GNUNET_GNS_GTK_delete_popup_menu_delete_cb" swapped="no"/>
+      </object>
+    </child>
+  </object>
   <object class="GtkWindow" id="GNUNET_GNS_GTK_main_window">
     <property name="can_focus">False</property>
     <property name="default_height">500</property>
@@ -223,6 +236,8 @@
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="model">GNUNET_GNS_GTK_treestore</property>
+                <signal name="button-press-event" 
handler="GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb" swapped="no"/>
+                <signal name="key-press-event" 
handler="GNUNET_GNS_GTK_main_treeview_key_press_popup_menu_cb" after="yes" 
swapped="no"/>
                 <signal name="realize" 
handler="GNUNET_GNS_GTK_main_treeview_realize_cb" swapped="no"/>
                 <signal name="popup-menu" 
handler="GNUNET_GNS_GTK_main_treeview_popup_menu_cb" swapped="no"/>
                 <child>

Modified: gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-16 18:01:12 UTC (rev 
20579)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-16 18:25:36 UTC (rev 
20580)
@@ -244,13 +244,17 @@
   struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
+  int not_dummy;
 
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path, 
new_text);
-  if ((0 == strcmp (path, "0")) && (0 != strcmp (new_text, NEW_NAME_STR)) )
+  if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
+    return;
+  gtk_tree_model_get_iter_from_string(tm, &it, path);
+  gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
+
+  if (not_dummy == GNUNET_NO)
   {
-    GNUNET_break (0);
     /* update name */
-    gtk_tree_model_get_iter_from_string(tm, &it, path);
     gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
     gtk_tree_store_set (gns->ts, &it, TREE_COL_RECORD_TYPE_AS_STR, 
_(NEW_RECORD_STR), -1);
     gtk_tree_store_set (gns->ts, &it, TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, -1);
@@ -267,12 +271,10 @@
   else
   {
     /* update name */
-    gtk_tree_model_get_iter_from_string(tm, &it, path);
     gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
   }
 }
 
-
 /**
  * The zone treeview pop up menu is supposed to be created.
  * (Note: this is not the only method that might need to be
@@ -287,10 +289,53 @@
 GNUNET_GNS_GTK_main_treeview_popup_menu_cb (GtkWidget *widget,
                                            gpointer user_data)
 {  
-  GNUNET_break (0); // FIXME, not implemented
+  struct GNUNET_GNS_Context *gns = user_data;
+  GtkTreeView *tv;
+  GtkTreeModel *tm;
+  GtkTreeIter it;
+  GtkMenu *popup;
+  GtkTreeSelection * ts;
+  int not_dummy;
+
+
+
+  tv = GTK_TREE_VIEW(gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_main_treeview"));
+  ts = gtk_tree_view_get_selection(tv);
+  gtk_tree_selection_get_selected (ts, &tm, &it);
+  gtk_tree_model_get(GTK_TREE_MODEL(gns->ts), &it, TREE_COL_NOT_DUMMY_ROW, 
&not_dummy, -1);
+  if (GNUNET_NO == not_dummy)
+    return TRUE;
+
+  popup  = GTK_MENU(gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_delete_popup_menu"));
+  gtk_widget_show_all (GTK_WIDGET(popup));
+  gtk_menu_popup(popup, NULL, NULL, NULL, NULL, 0, 0);
+  return TRUE;
+}
+
+gboolean
+GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb (GtkWidget *widget, 
GdkEventButton *event, gpointer user_data)
+{
+  /* Check for right click*/
+  if (event->type == GDK_BUTTON_PRESS  &&  event->button == 3)
+  {
+    GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
+
+  }
   return FALSE;
 }
 
+gboolean
+GNUNET_GNS_GTK_main_treeview_key_press_popup_menu_cb (GtkWidget *widget, 
GdkEventKey  *event, gpointer user_data)
+{
+  /* Check for delete key */
+  if ((event->type == GDK_KEY_PRESS) && (GDK_Delete == event->keyval))
+  {
+    GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
+
+  }
+  return FALSE;
+}
+
 struct ZoneIteration_Context
 {
   struct GNUNET_GNS_Context *gns;
@@ -298,7 +343,23 @@
   struct GNUNET_NAMESTORE_ZoneIterator * it;
 };
 
+void GNUNET_GNS_GTK_delete_popup_menu_delete_cb (GtkMenuItem *menuitem,
+                                                 gpointer user_data)
+{
+  struct GNUNET_GNS_Context *gns = user_data;
+  GtkTreeIter it;
+  int not_dummy;
 
+  GtkTreeView *tv = GTK_TREE_VIEW(gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_main_treeview"));
+  GtkTreeModel *tm;
+  GtkTreeSelection * ts = gtk_tree_view_get_selection(tv);
+
+  gtk_tree_selection_get_selected (ts, &tm, &it);
+  gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
+  if (GNUNET_YES == not_dummy)
+    gtk_tree_store_remove (gns->ts, &it);
+}
+
 void zone_iteration_proc (void *cls,
                           const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded 
*zone_key,
                           struct GNUNET_TIME_Absolute expire,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]