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 }