anastasis-gtk_handle-continent-selected.c (2454B)
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 "anastasis-gtk_rows.h" 30 #include <jansson.h> 31 32 33 /** 34 * Callback invoked if a continent is selected. 35 * 36 * @param selection the selection of the continent list 37 * @param pspec unused 38 * @param user_data user data set when the signal handler was connected. 39 */ 40 void 41 anastasis_gtk_continent_selection_changed_cb (GtkSingleSelection *selection, 42 GParamSpec *pspec, 43 gpointer user_data) 44 { 45 AGRow *row; 46 json_t *arguments; 47 48 (void) pspec; 49 (void) user_data; 50 if (AG_in_action) 51 return; 52 row = AG_selected (selection); 53 if (NULL == row) 54 { 55 AG_freeze (); 56 AG_ra = ANASTASIS_redux_action (AG_redux_state, 57 "unselect_continent", 58 NULL, 59 &AG_action_cb, 60 NULL); 61 return; 62 } 63 arguments = GNUNET_JSON_PACK ( 64 GNUNET_JSON_pack_string ("continent", 65 AG_row_string (row, 66 "name"))); 67 AG_freeze (); 68 AG_ra = ANASTASIS_redux_action (AG_redux_state, 69 "select_continent", 70 arguments, 71 &AG_action_cb, 72 NULL); 73 json_decref (arguments); 74 }