anastasis-gtk

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

anastasis-gtk_handle-continent-selected.c (2557B)


      1 /*
      2      This file is part of anastasis-gtk.
      3      Copyright (C) 2020 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  * @file src/anastasis/anastasis-gtk_handle-continent-selected.c
     22  * @brief
     23  * @author Christian Grothoff
     24  * @author Dennis Neufeld
     25  */
     26 #include <gnunet/gnunet_util_lib.h>
     27 #include "anastasis-gtk_helper.h"
     28 #include "anastasis-gtk_action.h"
     29 #include <jansson.h>
     30 
     31 
     32 /**
     33  * Callback invoked if a continent is selected.
     34  *
     35  * @param selection A GtkTreeSelection.
     36  * @param user_data user data set when the signal handler was connected.
     37  */
     38 void
     39 anastasis_gtk_continent_selection_changed_cb (GtkTreeSelection *treeselection,
     40                                               gpointer user_data)
     41 {
     42   GtkTreeModel *model;
     43   GtkTreeIter iter;
     44   gchar *continent_name;
     45   json_t *arguments;
     46 
     47   if (AG_in_action)
     48     return;
     49   if (! gtk_tree_selection_get_selected (treeselection,
     50                                          &model,
     51                                          &iter))
     52   {
     53     AG_freeze ();
     54     AG_ra = ANASTASIS_redux_action (AG_redux_state,
     55                                     "unselect_continent",
     56                                     NULL,
     57                                     &AG_action_cb,
     58                                     NULL);
     59     return;
     60   }
     61   gtk_tree_model_get (model,
     62                       &iter,
     63                       AG_CMC_CONTINENT_NAME, &continent_name,
     64                       -1);
     65   arguments = GNUNET_JSON_PACK (
     66     GNUNET_JSON_pack_string ("continent",
     67                              continent_name));
     68   g_free (continent_name);
     69   AG_freeze ();
     70   AG_ra = ANASTASIS_redux_action (AG_redux_state,
     71                                   "select_continent",
     72                                   arguments,
     73                                   &AG_action_cb,
     74                                   NULL);
     75   json_decref (arguments);
     76 }