rem: append_currency_to_currency_list ( currency_list_model, devise );
add: append_currency_to_currency_list ( GTK_TREE_STORE ( currency_list_model ), devise );
context: gboolean ajout_devise ( GtkWidget *widget ){    GtkWidget *dialog, *label, *table;    GtkWidget *list, *paddingbox;    struct struct_devise *devise;    gchar *nom_devise, *code_devise, *code_iso4217_devise;    gint resultat;    dialog = gtk_dialog_new_with_buttons ( _("Add a currency"),					   GTK_WINDOW (window),					   GTK_DIALOG_MODAL,					   GTK_STOCK_CANCEL,0,					   GTK_STOCK_OK,1,					   NULL );    gtk_container_set_border_width ( GTK_CONTAINER ( dialog ), 10 );    gtk_signal_connect ( GTK_OBJECT ( dialog ),			 "destroy",			 GTK_SIGNAL_FUNC ( gtk_signal_emit_stop_by_name ),			 "destroy" );    gtk_signal_connect ( GTK_OBJECT ( dialog ),			 "key-press-event",			 GTK_SIGNAL_FUNC ( bloque_echap_choix_devise ),			 NULL );    paddingbox = 	new_paddingbox_with_title (GTK_WIDGET ( GTK_DIALOG ( dialog ) -> vbox ),				   TRUE, _("ISO 4217 currencies"));    list = new_currency_vbox ();    gtk_box_pack_start ( GTK_BOX(paddingbox) , list, TRUE, TRUE, 5 );    paddingbox = 	new_paddingbox_with_title (GTK_WIDGET ( GTK_DIALOG ( dialog ) -> vbox ),				   FALSE, _("Currency details"));    /* Create table */    table = gtk_table_new ( 2, 2, FALSE );    gtk_table_set_col_spacings ( GTK_TABLE ( table ), 5 );    gtk_table_set_row_spacings ( GTK_TABLE ( table ), 5 );    gtk_box_pack_start ( GTK_BOX ( paddingbox ), table, TRUE, TRUE, 0 );    /* Currency name */    label = gtk_label_new (COLON(_("Currency name")));    gtk_misc_set_alignment (GTK_MISC (label), 0, 1);    gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT );    gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 0, 1,		       GTK_SHRINK | GTK_FILL, 0, 0, 0 );    entree_nom = gtk_entry_new ();    gtk_entry_set_activates_default ( GTK_ENTRY ( entree_nom ), TRUE );    gtk_table_attach ( GTK_TABLE ( table ), entree_nom, 1, 2, 0, 1,		       GTK_EXPAND|GTK_FILL, 0, 0, 0 );    g_object_set_data ( G_OBJECT(model), "entry_name", entree_nom );    /* Currency ISO code */    label = gtk_label_new (COLON(_("Currency ISO 4217 code")));    gtk_misc_set_alignment (GTK_MISC (label), 0, 1);    gtk_label_set_justify ( GTK_LABEL (label), GTK_JUSTIFY_LEFT );    gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 1, 2,		       GTK_SHRINK | GTK_FILL, 0, 0, 0 );    entree_iso_code = gtk_entry_new ();    gtk_table_attach ( GTK_TABLE ( table ), entree_iso_code, 1, 2, 1, 2,		       GTK_EXPAND|GTK_FILL, 0, 0, 0 );    g_object_set_data ( G_OBJECT(model), "entry_iso_code", entree_iso_code );    /* Currency usual sign */    label = gtk_label_new (COLON(_("Currency sign")));    gtk_misc_set_alignment (GTK_MISC (label), 0, 1);    gtk_label_set_justify ( GTK_LABEL (label), GTK_JUSTIFY_LEFT );    gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 2, 3,		       GTK_SHRINK | GTK_FILL, 0, 0, 0 );    entree_code = gtk_entry_new ();    gtk_table_attach ( GTK_TABLE ( table ), entree_code, 1, 2, 2, 3,		       GTK_EXPAND|GTK_FILL, 0, 0, 0 );    g_object_set_data ( G_OBJECT(model), "entry_code", entree_code );  reprise_dialog:    gtk_widget_show_all ( GTK_WIDGET ( dialog ) );    resultat = gtk_dialog_run ( GTK_DIALOG ( dialog ));    switch ( resultat )    {	case 1 :	    nom_devise = g_strstrip ( g_strdup ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( entree_nom ))));	    code_devise = g_strstrip ( g_strdup ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( entree_code ))));	    code_iso4217_devise = g_strstrip ( g_strdup ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( entree_iso_code ))));	    if ( strlen ( nom_devise ) && 		 (strlen ( code_devise ) ||		  strlen ( code_iso4217_devise )))	    {		/* 		recherche si la devise existe déjà, si c'est le cas, on refuse */		if ( devise_par_nom ( nom_devise )		     ||		     devise_par_code_iso ( code_iso4217_devise ))		{		    dialogue_error_hint ( _("Currency names or iso 4217 codes should be unique.  Please choose a new name for the currency."),					  g_strdup_printf ( _("Currency '%s' already exists." ), nom_devise ));		    goto reprise_dialog;		}		devise = create_currency ( nom_devise, code_devise, code_iso4217_devise);		if ( widget )		{		    append_currency_to_currency_list ( currency_list_model, devise );		    update_currency_widgets();		    modification_fichier ( TRUE );		    gtk_widget_destroy ( GTK_WIDGET ( dialog ));		    return TRUE;		}	    }	    else	    {		dialogue_warning_hint ( _("Currency name and either currency ISO4217 code or currency nickname should be set."),					_("All fields are not filled in") );		goto reprise_dialog;	    }	    break;	default:	    /* 	    si on veut partir, mais qu'aucune devise n'existe, on met un message et on retourne au */	    /* 		choix de la devise */	    if ( !liste_struct_devises )	    {		gtk_widget_destroy ( GTK_WIDGET ( dialog ));		return FALSE;	    }    }    gtk_widget_destroy ( GTK_WIDGET ( dialog ));    return TRUE;}