rem: dialogue_error_hint( _(""),
add: dialogue_error_hint( _("Accounts names are used to distinguish accounts.  It is mandatory that names are both unique and not empty."),
context: void modification_details_compte ( void ){    GtkTextIter start, end;    GtkTextBuffer *buffer;    gint i;     /* 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;    }    p_tab_nom_de_compte_variable = p_tab_nom_de_compte;    /* vérification que ce nom ne soit pas déjà utilisé */    for ( i = 0; i < nb_comptes; i++)    {	if ( i == compte_courant_onglet )	    continue;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + i;	if ( !strcmp ( g_strstrip ( (gchar*) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))), NOM_DU_COMPTE ))	{	    dialogue_error_hint( _(""),				 g_strdup_printf ( _("Account \"%s\" already exists!"), gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))));	    return;	}    }    p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    /* récupération du titulaire */    TITULAIRE = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_titulaire_compte ))));    if ( !strlen ( TITULAIRE ))	TITULAIRE = 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" ))	 !=	 TYPE_DE_COMPTE )    {	TYPE_DE_COMPTE = 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();	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* vérification de la devise */    if ( DEVISE != 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 != DEVISE )	    devise_compte = devise_par_no ( DEVISE );	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 = LISTE_OPERATIONS;	while ( pointeur_liste )	{	    struct structure_operation *operation;	    operation = pointeur_liste -> data;	    if ( operation -> devise == DEVISE )		operation -> devise = nouvelle_devise -> no_devise;	    else		if ( !nouvelle_devise -> passage_euro )		    operation -> devise = nouvelle_devise -> no_devise;	    pointeur_liste = pointeur_liste -> next;	}	DEVISE = 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;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* 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 );	ADRESSE_TITULAIRE = gtk_text_buffer_get_text ( buffer , &start, &end, TRUE );	if ( strlen ( ADRESSE_TITULAIRE ))	{	    ADRESSE_TITULAIRE = g_strdelimit ( ADRESSE_TITULAIRE,					       "{",					       '(' );	    ADRESSE_TITULAIRE = g_strdelimit ( ADRESSE_TITULAIRE,					       "}",					       ')' );	}	else	    ADRESSE_TITULAIRE = NULL;    }    else	ADRESSE_TITULAIRE = NULL;    /* enregistrement de l'établissement financier */    BANQUE = 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 */    NO_GUICHET = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_guichet ))));    if ( !strlen ( NO_GUICHET ))	NO_GUICHET = NULL;    /* enregistrement du no de compte */    NO_COMPTE_BANQUE = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_no_compte ))));    if ( !strlen ( NO_COMPTE_BANQUE ))	NO_COMPTE_BANQUE = NULL;    /* enregistrement de la clé du compte */    CLE_COMPTE = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_cle_compte ))));    if ( !strlen ( CLE_COMPTE ))	CLE_COMPTE = NULL;    /* enregistrement du compte cloturé */    if ( COMPTE_CLOTURE != gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( detail_compte_cloture )))    {	COMPTE_CLOTURE = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( detail_compte_cloture ));	if ( mise_a_jour_combofix_categ_necessaire )	    mise_a_jour_combofix_categ();	reaffiche_liste_comptes ();	mise_a_jour_liste_comptes_accueil = 1;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* vérification du solde initial */    if ( SOLDE_INIT != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_init ))),				   NULL ) )    {	SOLDE_INIT = 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;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* vérification du solde mini autorisé */    if ( SOLDE_MINI != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_autorise ))),				   NULL ) )    {	SOLDE_MINI = my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_autorise ))),				 NULL );	MESSAGE_SOUS_MINI = 0;	mise_a_jour_liste_comptes_accueil = 1;	mise_a_jour_soldes_minimaux = 1;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* vérification du solde mini voulu */    if ( SOLDE_MINI_VOULU != my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_voulu ))),					 NULL ) )    {	SOLDE_MINI_VOULU = my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_solde_mini_voulu ))),				       NULL );	MESSAGE_SOUS_MINI_VOULU = 0;	mise_a_jour_soldes_minimaux = 1;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    /* 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 );    COMMENTAIRE = gtk_text_buffer_get_text ( buffer , &start, &end, TRUE );    if ( strlen ( COMMENTAIRE ))    {	COMMENTAIRE = g_strdelimit ( COMMENTAIRE,				     "{",				     '(' );	COMMENTAIRE = g_strdelimit ( COMMENTAIRE,				     "}",				     ')' );    }    else	COMMENTAIRE = 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 ( !NOM_DU_COMPTE	 ||	 strcmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))),		  NOM_DU_COMPTE ) )    {	NOM_DU_COMPTE = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( detail_nom_compte ))));	reaffiche_liste_comptes ();	reaffiche_liste_comptes_onglet ();	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();	update_options_menus_comptes ();	remplissage_liste_comptes_etats ();	selectionne_liste_comptes_etat_courant ();	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_courant_onglet;    }    gtk_widget_set_sensitive ( hbox_boutons_modif,			       FALSE );    modification_fichier ( TRUE );}