anastasis-gtk_handle-policy-button.c (2411B)
1 /* 2 This file is part of anastasis-gtk. 3 Copyright (C) 2021 Anastasis SARL 4 5 Anastasis is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published 7 by the Free Software Foundation; either version 3, or (at your 8 option) any later version. 9 10 Anastasis is distributed in the hope that it will be useful, but 11 WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with Anastasis; see the file COPYING. If not, write to the 17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18 Boston, MA 02110-1301, USA. 19 */ 20 21 /** 22 * @file src/anastasis/anastasis-gtk_handle-policy-button.c 23 * @brief Handle right-click context menu in policy review 24 * @author Christian Grothoff 25 */ 26 #include <gnunet/gnunet_util_lib.h> 27 #include "anastasis-gtk_action.h" 28 #include "anastasis-gtk_helper.h" 29 #include "anastasis-gtk_pe.h" 30 #include <jansson.h> 31 32 33 gboolean 34 anastasis_gtk_review_policy_treeview_key_press_event_cb ( 35 GtkWidget *widget, 36 GdkEvent *event, 37 gpointer user_data) 38 { 39 GtkTreeView *tv; 40 GtkTreeSelection *ts; 41 GtkTreeModel *tm; 42 GtkTreeIter iter; 43 guint pindex; 44 gboolean is_challenge; 45 guint mindex; 46 47 if ( (GDK_KEY_PRESS != event->type) || 48 (GDK_KEY_Delete != ((GdkEventKey *) event)->keyval) ) 49 return FALSE; 50 tv = GTK_TREE_VIEW (GCG_get_main_window_object ( 51 "anastasis_gtk_review_policy_treeview")); 52 ts = gtk_tree_view_get_selection (tv); 53 if (! gtk_tree_selection_get_selected (ts, 54 &tm, 55 &iter)) 56 { 57 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 58 "Nothing selected, cannot delete\n"); 59 return FALSE; 60 } 61 gtk_tree_model_get (tm, 62 &iter, 63 AG_PRMC_POLICY_INDEX, 64 &pindex, 65 AG_PRMC_IS_CHALLENGE, 66 &is_challenge, 67 AG_PRMC_METHOD_INDEX, 68 &mindex, 69 -1); 70 if (is_challenge) 71 AG_delete_challenge (pindex, 72 mindex); 73 else 74 AG_delete_policy (pindex); 75 return TRUE; 76 }