add: gsb_gui_navigation_update_account ( compte_courant_onglet );
context: void modification_details_compte ( void ){    GtkTextIter start, end;    GtkTextBuffer *buffer;    /* vérification que le compte a un nom */    if ( !strlen ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))) )    {        dialogue_error_hint ( _("Accounts names are used to distinguish accounts.  It is mandatory that names are both unique and not empty."),			      _("Account name is empty") );	return;    }    GSList *list_tmp;    list_tmp = gsb_account_get_list_accounts ();    while ( list_tmp )    {	gint i;	i = gsb_account_get_no_account ( list_tmp -> data );	if ( i == compte_courant_onglet )	    continue;	if ( !strcmp ( g_strstrip ( (gchar*) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))), gsb_account_get_name (i) ))	{	    dialogue_error_hint( _("Accounts names are used to distinguish accounts.  It is mandatory that names are both unique and not empty."),				 g_strdup_printf ( _("Account \"%s\" already exists!"), gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))));	    return;	}	list_tmp = list_tmp -> next;    }    /* récupération du titulaire */    gsb_account_set_holder_name ( compte_courant_onglet,				  g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_titulaire_compte )))) );    if ( !strlen ( gsb_account_get_holder_name (compte_courant_onglet) ))	gsb_account_set_holder_name ( compte_courant_onglet,				      NULL );    /* vérification du type de compte */    if ( GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_type_compte ) -> menu_item ),						 "no_type_compte" ))	 !=	 gsb_account_get_kind (compte_courant_onglet) )    {	gsb_account_set_kind (compte_courant_onglet,			      GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_type_compte ) -> menu_item ),								      "no_type_compte" )));	mise_a_jour_fin_comptes_passifs = 1;	mise_a_jour_soldes_minimaux = 1;	formulaire_a_zero();    }    /* vérification de la devise */    if ( gsb_account_get_currency (compte_courant_onglet) != GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_devise_compte ) -> menu_item ),							   "no_devise" )) )    {	struct struct_devise *nouvelle_devise;	GSList *pointeur_liste;	if ( !devise_compte	     ||	     devise_compte -> no_devise != gsb_account_get_currency (compte_courant_onglet) )	    devise_compte = devise_par_no ( gsb_account_get_currency (compte_courant_onglet) );	nouvelle_devise = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_devise_compte ) -> menu_item ),						"adr_devise" );	if ( devise_compte -> passage_euro && !nouvelle_devise -> passage_euro )	{	    gint resultat;	    resultat = question_yes_no_hint ( _("Confirm currency change"),					      g_strdup_printf ( _("You are changing from a currency that is in the euro zone (%s) to one that isn't (%s).  Transactions in euros will be lost!  There is no undo for this.\nDo you confirm this change?"), 								devise_compte -> nom_devise,								nouvelle_devise -> nom_devise));	    if ( !resultat )		return;	}	pointeur_liste = gsb_account_get_transactions_list (compte_courant_onglet);	while ( pointeur_liste )	{	    gpointer operation;	    operation = pointeur_liste -> data;	    if ( gsb_transaction_data_get_currency_number ( gsb_transaction_data_get_transaction_number (operation ))== gsb_account_get_currency (compte_courant_onglet) )		gsb_transaction_data_set_currency_number ( gsb_transaction_data_get_transaction_number (operation ),							   nouvelle_devise -> no_devise );	    else		if ( !nouvelle_devise -> passage_euro )		    gsb_transaction_data_set_currency_number ( gsb_transaction_data_get_transaction_number (operation ),							       nouvelle_devise -> no_devise );	    pointeur_liste = pointeur_liste -> next;	}	gsb_account_set_currency ( compte_courant_onglet,				   nouvelle_devise -> no_devise );	/* FIXME : voir pourquoi remplissage opé et remettre l'ajustement *//* 	value = gtk_clist_get_vadjustment ( GTK_CLIST ( CLIST_OPERATIONS )) -> value; */	remplissage_liste_operations ( compte_courant_onglet );/* 	gtk_clist_get_vadjustment ( GTK_CLIST ( CLIST_OPERATIONS )) -> value = value; */	mise_a_jour_liste_comptes_accueil = 1;	mise_a_jour_liste_echeances_manuelles_accueil = 1;    }    /* récupération de l'adr du titulaire */    if ( !gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( detail_bouton_adresse_commune )))    {        buffer = gtk_text_view_get_buffer ( GTK_TEXT_VIEW (detail_adresse_titulaire) );	gtk_text_buffer_get_iter_at_offset ( buffer, &start, 0 );	gtk_text_buffer_get_iter_at_offset ( buffer, &end, -1 );	gsb_account_set_holder_address ( compte_courant_onglet,					 gtk_text_buffer_get_text ( buffer , &start, &end, TRUE ) );	if ( strlen ( gsb_account_get_holder_address (compte_courant_onglet) ))	{	    gsb_account_set_holder_address ( compte_courant_onglet,					     g_strdelimit ( gsb_account_get_holder_address (compte_courant_onglet),					       "{",					       '(' ) );	    gsb_account_set_holder_address ( compte_courant_onglet,					     g_strdelimit ( gsb_account_get_holder_address (compte_courant_onglet),					       "}",					       ')' ) );	}	else	    gsb_account_set_holder_address ( compte_courant_onglet,					     NULL );    }    else	gsb_account_set_holder_address ( compte_courant_onglet,					 NULL );    /* enregistrement de l'établissement financier */    gsb_account_set_bank ( compte_courant_onglet,			   GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_option_menu_banque ) -> menu_item ),								   "no_banque" )));    /* enregistrement du no de guichet */    gsb_account_set_bank_branch_code ( compte_courant_onglet,				       g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_guichet )))));    if ( !strlen ( gsb_account_get_bank_branch_code (compte_courant_onglet) ))	gsb_account_set_bank ( compte_courant_onglet,			       0 );    /* enregistrement du no de compte */    gsb_account_set_bank_account_number ( compte_courant_onglet,					  g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_no_compte )))) );    if ( !strlen ( gsb_account_get_bank_account_number (compte_courant_onglet) ))	gsb_account_set_bank_account_number ( compte_courant_onglet,					      NULL );    /* enregistrement de la clé du compte */    gsb_account_set_bank_account_key ( compte_courant_onglet,				       g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_cle_compte )))) );    if ( !strlen ( gsb_account_get_bank_account_key (compte_courant_onglet) ))	gsb_account_set_bank_account_key ( compte_courant_onglet,					   NULL );    /* enregistrement du compte cloturé */    if ( gsb_account_get_closed_account (compte_courant_onglet) != gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( detail_compte_cloture )))    {	gsb_account_set_closed_account ( compte_courant_onglet,					 gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( detail_compte_cloture )));	if ( mise_a_jour_combofix_categ_necessaire )	    mise_a_jour_combofix_categ();	gsb_account_list_gui_create_list ();	mise_a_jour_liste_comptes_accueil = 1;	/* Replace trees contents. */	remplit_arbre_categ ();	remplit_arbre_imputation ();	remplit_arbre_tiers ();    }    /* vérification du solde initial */    if ( gsb_account_get_init_balance (compte_courant_onglet) != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_init ))),									     NULL ) )    {	gsb_account_set_init_balance (compte_courant_onglet,				      my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_init ))),						  NULL ));/* FIXME : voir pourquoi remplissage opé et remettre l'ajustement *//* 	value = gtk_clist_get_vadjustment ( GTK_CLIST ( CLIST_OPERATIONS )) -> value; */	remplissage_liste_operations ( compte_courant_onglet );/* 	gtk_clist_get_vadjustment ( GTK_CLIST ( CLIST_OPERATIONS )) -> value = value; */	mise_a_jour_liste_comptes_accueil = 1;	mise_a_jour_soldes_minimaux = 1;	mise_a_jour_fin_comptes_passifs = 1;    }    /* vérification du solde mini autorisé */    if ( gsb_account_get_mini_balance_authorized (compte_courant_onglet) != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_autorise ))),											NULL ) )    {	gsb_account_set_mini_balance_authorized ( compte_courant_onglet, 						  my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_autorise ))),							      NULL ));	gsb_account_set_mini_balance_authorized_message ( compte_courant_onglet,							  0 );	mise_a_jour_liste_comptes_accueil = 1;	mise_a_jour_soldes_minimaux = 1;    }    /* vérification du solde mini voulu */    if ( gsb_account_get_mini_balance_wanted (compte_courant_onglet) != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_voulu ))),										    NULL ) )    {	gsb_account_set_mini_balance_wanted ( compte_courant_onglet, 					      my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_voulu ))),							  NULL ));	gsb_account_set_mini_balance_wanted_message ( compte_courant_onglet,						      0 );	mise_a_jour_soldes_minimaux = 1;    }    /* récupération du texte */    buffer = gtk_text_view_get_buffer ( GTK_TEXT_VIEW (detail_commentaire) );    gtk_text_buffer_get_iter_at_offset ( buffer, &start, 0 );    gtk_text_buffer_get_iter_at_offset ( buffer, &end, -1 );    gsb_account_set_comment ( compte_courant_onglet,			      gtk_text_buffer_get_text ( buffer , &start, &end, TRUE ) );    if ( strlen ( gsb_account_get_comment (compte_courant_onglet) ))    {	gsb_account_set_comment ( compte_courant_onglet,				  g_strdelimit ( gsb_account_get_comment (compte_courant_onglet),						 "{",						 '(' ) );	gsb_account_set_comment ( compte_courant_onglet,				  g_strdelimit ( gsb_account_get_comment (compte_courant_onglet),						 "}",						 ')' ) );    }    else	gsb_account_set_comment ( compte_courant_onglet,				  NULL );    /* vérification du nom du compte */    /* on doit le vérifier en dernier car s'il a changé, on va réafficher */    /* la liste des comptes, et les infos non encore récupérées vont être */    /* perdues */    if ( !gsb_account_get_name (compte_courant_onglet)	 ||	 strcmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))),		  gsb_account_get_name (compte_courant_onglet) ) )    {	gsb_account_set_name ( compte_courant_onglet,			       g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte )))) );	gsb_account_list_gui_create_list ();	mise_a_jour_liste_comptes_accueil = 1;	remplissage_liste_echeance ();	mise_a_jour_liste_echeances_manuelles_accueil = 1;	mise_a_jour_soldes_minimaux = 1;	mise_a_jour_fin_comptes_passifs = 1;	if ( mise_a_jour_combofix_categ_necessaire )	    mise_a_jour_combofix_categ();	/* Replace trees contents. */	remplit_arbre_categ ();	remplit_arbre_imputation ();	remplit_arbre_tiers ();	update_options_menus_comptes ();	remplissage_liste_comptes_etats ();	selectionne_liste_comptes_etat_courant ();    }    gtk_widget_set_sensitive ( hbox_boutons_modif,			       FALSE );    modification_fichier ( TRUE );}