[Top][All Lists]
[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, ¬_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,
¬_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, ¬_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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20580 - in gnunet-gtk: contrib src/gns,
gnunet <=