anastasis-gtk

Demonstrator GUI for Anastasis
Log | Files | Refs | README | LICENSE

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 }