rem: int i;
add: gint i, j;
context: void changement_preferences ( GtkWidget *fenetre_preferences,			      gint page,			      gpointer data ){  gint buffer;  gchar *home_dir;  int i;  GSList *liste_tmp;  GtkWidget *menu;  home_dir = getenv ("HOME");  switch ( page )    {    case 0 :       if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_entree_enregistre ) ) )	etat.entree = 1;      else	etat.entree = 0;      if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_solde_mini ) ) )	etat.alerte_mini = 1;      else	etat.alerte_mini = 0;      if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_affiche_permission ) ) )	etat.alerte_permission = 1;      else	etat.alerte_permission = 0;      if ( titre_fichier )	{	  if ( strcmp ( titre_fichier,			g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( entree_titre_fichier )))))	    {	      modification_fichier ( TRUE );	      titre_fichier = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( entree_titre_fichier ))));	      if ( strlen ( titre_fichier ))		gtk_label_set_text ( GTK_LABEL ( label_titre_fichier ),				      titre_fichier );	      else		{		  titre_fichier = NULL;		  gtk_widget_destroy ( label_titre_fichier );		}	    }	}      else	{	  if ( strlen ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( entree_titre_fichier )))))	    {	      titre_fichier = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( entree_titre_fichier ))));	      label_titre_fichier = gtk_label_new ( titre_fichier );	      gtk_box_pack_start ( GTK_BOX ( ((GtkBoxChild *)(GTK_BOX ( page_accueil )->children->next->next->data))->widget ),				   label_titre_fichier,				   FALSE,				   FALSE,				   0 );	      gtk_box_reorder_child ( GTK_BOX ( ((GtkBoxChild *)(GTK_BOX ( page_accueil )->children->next->next->data))->widget ),				      label_titre_fichier,				      1 );	      gtk_widget_show ( label_titre_fichier );	      modification_fichier ( TRUE );	    }	}      if ( adresse_commune )	{	  if ( strcmp ( adresse_commune,			g_strstrip ( gtk_editable_get_chars (GTK_EDITABLE ( entree_adresse_commune ),							     0,							     -1 ))))	    {	      modification_fichier ( TRUE );	      adresse_commune = g_strdup ( g_strstrip ( gtk_editable_get_chars (GTK_EDITABLE ( entree_adresse_commune ),										0,										-1 )));	      if ( strlen ( adresse_commune ))		{		  adresse_commune = g_strdelimit ( adresse_commune,						   "{",						   '(' );		  adresse_commune = g_strdelimit ( adresse_commune,						   "}",						   ')' );		}	      else		adresse_commune = NULL;	    }	}      else	{	  if ( strlen ( g_strstrip ( gtk_editable_get_chars (GTK_EDITABLE ( entree_adresse_commune ),							     0,							     -1 ))))	    {	      adresse_commune = g_strdup ( g_strstrip ( gtk_editable_get_chars (GTK_EDITABLE ( entree_adresse_commune ),										0,										-1 )));	      adresse_commune = g_strdelimit ( adresse_commune,					       "{",					       '(' );	      adresse_commune = g_strdelimit ( adresse_commune,					       "}",					       ')' );	      modification_fichier ( TRUE );	    }	}      break;    case 1 :      if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_avec_demarrage ) )  )	etat.dernier_fichier_auto = 1;      else	etat.dernier_fichier_auto = 0;      if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_save_auto ) )  )	etat.sauvegarde_auto = 1;      else	etat.sauvegarde_auto = 0;      if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_force_enregistrement ) )  )	etat.force_enregistrement = 1;      else	etat.force_enregistrement = 0;      if ( nb_comptes )	{	  /* 	  si on a touch au bouton save auto, le fichier devra tre enregistr */	  if ( ( !nom_fichier_backup && gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_demande_backup ) ))	       ||	       ( nom_fichier_backup && !gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_demande_backup ) ))	       ||	       ( nom_fichier_backup && strcmp ( nom_fichier_backup,						g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( GTK_COMBO ( GNOME_FILE_ENTRY (entree_chemin_backup) -> gentry) -> entry  ) )))))	    modification_fichier ( TRUE );	  if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_demande_backup ) )	       &&	       strlen ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( GTK_COMBO ( GNOME_FILE_ENTRY (entree_chemin_backup) -> gentry) -> entry  ) ) )))	    nom_fichier_backup = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( GTK_COMBO ( GNOME_FILE_ENTRY (entree_chemin_backup) -> gentry) -> entry  ) ) ));	  else	    nom_fichier_backup = NULL;	}      /* rcupre le nb max de noms de derniers fichiers  garder */      efface_derniers_fichiers_ouverts ();      nb_max_derniers_fichiers_ouverts = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON ( spin_button_derniers_fichiers_ouverts ));      if ( nb_derniers_fichiers_ouverts > nb_max_derniers_fichiers_ouverts )	nb_derniers_fichiers_ouverts = nb_max_derniers_fichiers_ouverts;      affiche_derniers_fichiers_ouverts ();      /* rcupre la compression */      compression_fichier = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON ( spin_button_compression_fichier ));      compression_backup = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON ( spin_button_compression_backup ));      /*       par-dfaut, on compresse le fichier */      xmlSetCompressMode ( compression_fichier );      if ( compression_fichier )	dialogue ( _("Attention, la compression du fichier empche la vrification multi-utilisateurs.") );      break;    case 2 :      if ( ( buffer = g_strtod ( gtk_entry_get_text ( GTK_ENTRY ( entree_jours ) ), FALSE ) ) != decalage_echeance )	{	  decalage_echeance = buffer;	  update_liste_echeances_manuelles_accueil();	  update_liste_echeances_auto_accueil();	}    case 3 :        /*       on place les comptes selon les prfrences */      g_slist_free ( ordre_comptes );      ordre_comptes = NULL;      for ( buffer = 0 ; buffer < nb_comptes ; buffer++ )	ordre_comptes = g_slist_append ( ordre_comptes,					gtk_clist_get_row_data ( GTK_CLIST ( liste_choix_ordre_comptes ),								 buffer ) );      /* on affiche ou efface les widget du formulaire */      if ( ( etat.affiche_no_operation = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_afficher_no_operation ))))	gtk_widget_show ( widget_formulaire_operations[0] );      else	gtk_widget_hide ( widget_formulaire_operations[0] );      if ( ( etat.affiche_date_bancaire = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_afficher_date_bancaire ))))	gtk_widget_show ( widget_formulaire_operations[7] );      else	gtk_widget_hide ( widget_formulaire_operations[7] );      if ( ( etat.utilise_exercice = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_utiliser_exercices ))))	{	  gtk_widget_show ( widget_formulaire_operations[11] );	  gtk_widget_show ( widget_formulaire_ventilation[4] );	  gtk_widget_show ( widget_formulaire_echeancier[9] );	}      else	{	  gtk_widget_hide ( widget_formulaire_operations[11] );	  gtk_widget_hide ( widget_formulaire_ventilation[4] );	  gtk_widget_hide ( widget_formulaire_echeancier[9] );	}      if ( ( etat.utilise_imputation_budgetaire = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_utiliser_imputation_budgetaire ))))	{	  gtk_widget_show ( widget_formulaire_operations[12] );	  gtk_widget_show ( page_imputations );	  gtk_widget_show ( widget_formulaire_ventilation[3] );	  gtk_widget_show ( widget_formulaire_echeancier[10] );	}      else	{	  gtk_widget_hide ( widget_formulaire_operations[12] );	  gtk_widget_hide ( page_imputations );	  gtk_widget_hide ( widget_formulaire_ventilation[3] );	  gtk_widget_hide ( widget_formulaire_echeancier[10] );	}      if ( ( etat.utilise_piece_comptable = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_utiliser_piece_comptable ))))	{	  gtk_widget_show ( widget_formulaire_operations[13] );	  gtk_widget_show ( widget_formulaire_ventilation[5] );	  gtk_widget_show ( widget_formulaire_echeancier[12] );	}      else	{	  gtk_widget_hide ( widget_formulaire_operations[13] );	  gtk_widget_hide ( widget_formulaire_ventilation[5] );	  gtk_widget_hide ( widget_formulaire_echeancier[12] );	}      if ( ( etat.utilise_info_banque_guichet = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_utiliser_info_banque_guichet ))))	{	  gtk_widget_show ( widget_formulaire_operations[16] );	  gtk_widget_show ( widget_formulaire_echeancier[11] );	}      else	{	  gtk_widget_hide ( widget_formulaire_operations[16] );	  gtk_widget_hide ( widget_formulaire_echeancier[11] );	}      if ( ( etat.affiche_boutons_valider_annuler = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_afficher_boutons_valider_annuler ))))	{	  gtk_widget_show ( separateur_formulaire_operations );	  gtk_widget_show ( hbox_valider_annuler_ope );	  gtk_widget_show ( separateur_formulaire_echeancier );	  gtk_widget_show ( hbox_valider_annuler_echeance );	}      else	{	  gtk_widget_hide ( separateur_formulaire_operations );	  gtk_widget_hide ( hbox_valider_annuler_ope );	  gtk_widget_hide ( separateur_formulaire_echeancier );	  gtk_widget_hide ( hbox_valider_annuler_echeance );	  affiche_cache_le_formulaire ();	  affiche_cache_le_formulaire ();	}      /* on rcupre le no de la devise des totaux des tiers */      if ( no_devise_totaux_tiers != GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( bouton_choix_devise_totaux_tiers ) -> menu_item ),									     "no_devise" )))	{	  no_devise_totaux_tiers = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( bouton_choix_devise_totaux_tiers ) -> menu_item ),									   "no_devise" ));	  	    mise_a_jour_tiers ();	    mise_a_jour_categ ();	    mise_a_jour_imputation ();	}      /* rcupration de l'affichage du nombre d'critures */      if ( etat.affiche_nb_ecritures_listes != gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_afficher_nb_ecritures )))	{	  etat.affiche_nb_ecritures_listes = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_afficher_nb_ecritures ));	  /* change les titres des listes */	  if ( etat.affiche_nb_ecritures_listes )	    {	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_tiers ),					   0,					   _("Liste des tiers (critures)") );	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_categ ),					   0,					   _("Liste des catgories (critures)") );	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_imputation ),					   0,					   _("Liste des imputations budgtaires (critures)") );	    }	  else	    {	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_tiers ),					   0,					   _("Liste des tiers") );	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_categ ),					   0,					   _("Liste des catgories") );	      gtk_clist_set_column_title ( GTK_CLIST ( arbre_imputation ),					   0,					   _("Liste des imputations budgtaires") );	    }	    mise_a_jour_tiers ();	    mise_a_jour_categ ();	    mise_a_jour_imputation ();	}      /* rcupration du tri par date ou date bancaire */      etat.classement_par_date = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_classer_liste_par_date ));      reaffiche_liste_comptes ();      update_liste_comptes_accueil();      modification_fichier ( TRUE );      demande_mise_a_jour_tous_comptes();      verification_mise_a_jour_liste();      break;    case 4 :      if ( liste_suppression_fichier_a_verifier )	{	  GSList *liste_suppression_fichier_a_verifier_variable;	  	  liste_suppression_fichier_a_verifier_variable = liste_suppression_fichier_a_verifier;	  do	    fichier_a_verifier = g_slist_remove ( fichier_a_verifier,						  liste_suppression_fichier_a_verifier_variable->data );	  while ( ( liste_suppression_fichier_a_verifier_variable = liste_suppression_fichier_a_verifier_variable->next ) );	  	  g_slist_free ( liste_suppression_fichier_a_verifier );	  liste_suppression_fichier_a_verifier = NULL;/* 	  si l'applet est dmarre, envoie le signal 10 ( SIGUSR1 ) pour qu'elle se mette  jour */	  if ( verifie_affichage_applet() == 1 )	    {	      sauve_configuration ();	      kill ( pid_applet, SIGUSR1 );	    }	}      if ( fichier_a_verifier_tmp != NULL )	{	  GSList *fichier_a_verifier_tmp_variable;	  	  fichier_a_verifier_tmp_variable = fichier_a_verifier_tmp;	  do	    fichier_a_verifier = g_slist_append ( fichier_a_verifier,					    fichier_a_verifier_tmp_variable  ->data );	  while ( ( fichier_a_verifier_tmp_variable = fichier_a_verifier_tmp_variable ->next ) );	  	  g_slist_free ( fichier_a_verifier_tmp );	  fichier_a_verifier_tmp = NULL;/* 	  si l'applet est dmarre, envoie le signal 10 ( SIGUSR1 ) pour qu'elle se mette  jour */	  if ( verifie_affichage_applet() == 1 )	    {	      sauve_configuration ();	      kill ( pid_applet, SIGUSR1 );	    }	}      if ( ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_affichage_applet ) ) ) && (!verifie_affichage_applet() ) )	system ( g_strconcat ( APPLET_BIN_DIR, "&", NULL ) );      if ( ( !gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_affichage_applet ) ) ) && (verifie_affichage_applet()  ) )	  kill ( pid_applet, SIGTERM );      /* 	  reaffiche_liste_equilibrage(); */      break;    case 5 :      if ( liste_struct_devises )	g_slist_free ( liste_struct_devises );      liste_struct_devises = liste_struct_devises_tmp;      no_derniere_devise = no_derniere_devise_tmp;      nb_devises = nb_devises_tmp;      /* on modifie la liste des devises de l'option menu du formulaire */      gtk_widget_destroy ( GTK_OPTION_MENU ( widget_formulaire_operations[5] ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[5] ),				 creation_option_menu_devises ( -1,								liste_struct_devises ));      gtk_widget_destroy ( GTK_OPTION_MENU ( widget_formulaire_echeancier[4] ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_echeancier[4] ),				 creation_option_menu_devises ( -1,								liste_struct_devises ));      /* on modifie la liste des devises de l'option menu du detail des comptes */      gtk_widget_destroy ( GTK_OPTION_MENU ( detail_devise_compte ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( detail_devise_compte ),				 creation_option_menu_devises ( 0,								liste_struct_devises ));      gtk_signal_connect_object ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_devise_compte  ) -> menu ),				  "selection-done",				  GTK_SIGNAL_FUNC ( modif_detail_compte ),				  GTK_OBJECT ( hbox_boutons_modif ) );      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;      gtk_option_menu_set_history ( GTK_OPTION_MENU (  detail_devise_compte),				    g_slist_position ( liste_struct_devises,						       g_slist_find_custom ( liste_struct_devises,									     GINT_TO_POINTER ( DEVISE ),									     ( GCompareFunc ) recherche_devise_par_no )));      /* on recre la liste_struct_devises_tmp qui est un copie de liste_struct_devises originale */      /* avec laquelle on travaillera dans les parametres */      liste_struct_devises_tmp = NULL;      liste_tmp = liste_struct_devises;      while ( liste_tmp )	{	  struct struct_devise *devise;	  struct struct_devise *copie_devise;	  devise = liste_tmp -> data;	  copie_devise = malloc ( sizeof ( struct struct_devise ));	  copie_devise -> no_devise = devise -> no_devise;	  copie_devise -> nom_devise = g_strdup ( devise -> nom_devise );	  copie_devise -> code_devise = g_strdup ( devise -> code_devise );	  copie_devise -> passage_euro = devise -> passage_euro;	  copie_devise -> une_devise_1_egale_x_devise_2 = devise -> une_devise_1_egale_x_devise_2;	  copie_devise -> no_devise_en_rapport = devise -> no_devise_en_rapport;	  copie_devise -> change = devise -> change;	  if ( devise -> date_dernier_change )	    copie_devise -> date_dernier_change = g_date_new_dmy ( devise -> date_dernier_change -> day,								   devise -> date_dernier_change -> month,								   devise -> date_dernier_change -> year );	  else	    copie_devise -> date_dernier_change = NULL;	  liste_struct_devises_tmp = g_slist_append ( liste_struct_devises_tmp,						      copie_devise );	  liste_tmp = liste_tmp -> next;	}      no_derniere_devise_tmp = no_derniere_devise;      nb_devises_tmp = nb_devises;      /* on rassocie les lignes de la liste avec les devises temporaires */      liste_tmp = liste_struct_devises_tmp;      while ( liste_tmp )	{	  gtk_clist_set_row_data ( GTK_CLIST ( clist_devises_parametres ),				   g_slist_position ( liste_struct_devises_tmp,						      liste_tmp ),				   liste_tmp -> data );	  liste_tmp = liste_tmp -> next;	}      /* on recre le bouton devise de l'onglet affichage */      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( bouton_choix_devise_totaux_tiers ),				 creation_option_menu_devises ( -1,								liste_struct_devises ) );      gtk_signal_connect_object ( GTK_OBJECT ( GTK_OPTION_MENU ( bouton_choix_devise_totaux_tiers ) -> menu ),				  "selection-done",				  gnome_property_box_changed,				  GTK_OBJECT (fenetre_preferences));      gtk_option_menu_set_history ( GTK_OPTION_MENU ( bouton_choix_devise_totaux_tiers ),				    g_slist_position ( liste_struct_devises,						       g_slist_find_custom ( liste_struct_devises,									     GINT_TO_POINTER ( no_devise_totaux_tiers ),									     ( GCompareFunc ) recherche_devise_par_no )));      /* on recre les boutons de devises dans la conf de l'tat */      if ( onglet_config_etat )	{	  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( bouton_devise_categ_etat ),				     creation_option_menu_devises ( 0,								    liste_struct_devises ));	  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( bouton_devise_ib_etat ),				     creation_option_menu_devises ( 0,								    liste_struct_devises ));	  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( bouton_devise_tiers_etat ),				     creation_option_menu_devises ( 0,								    liste_struct_devises ));	  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( bouton_devise_montant_etat ),				     creation_option_menu_devises ( 0,								    liste_struct_devises ));	  selectionne_devise_categ_etat_courant ();	  selectionne_devise_ib_etat_courant ();	  selectionne_devise_tiers_etat_courant ();	}      mise_a_jour_tiers ();      mise_a_jour_categ ();      mise_a_jour_imputation ();      update_liste_comptes_accueil();      update_liste_echeances_manuelles_accueil ();      update_liste_echeances_auto_accueil ();      modification_fichier ( TRUE );      break;    case 6 :      if ( liste_struct_banques )	g_slist_free ( liste_struct_banques );      liste_struct_banques = liste_struct_banques_tmp;      no_derniere_banque = no_derniere_banque_tmp;      nb_banques = nb_banques_tmp;      gtk_widget_destroy ( GTK_OPTION_MENU ( detail_option_menu_banque ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( detail_option_menu_banque ),				 creation_menu_banques () );      gtk_signal_connect_object ( GTK_OBJECT ( GTK_OPTION_MENU ( detail_option_menu_banque  ) -> menu ),				  "selection-done",				  GTK_SIGNAL_FUNC ( modif_detail_compte ),				  GTK_OBJECT ( hbox_boutons_modif ) );      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;      gtk_option_menu_set_history ( GTK_OPTION_MENU ( detail_option_menu_banque ),				    g_slist_position ( liste_struct_banques,						       g_slist_find_custom ( liste_struct_banques,									     GINT_TO_POINTER ( BANQUE ),									     ( GCompareFunc ) recherche_banque_par_no )) + 1 );      /* on recre la liste tmp des banques */      liste_struct_banques_tmp = NULL;      liste_tmp = liste_struct_banques;      while ( liste_tmp )	{	  struct struct_banque *banque;	  struct struct_banque *copie_banque;	  banque = liste_tmp -> data;	  copie_banque = malloc ( sizeof ( struct struct_banque ));	  copie_banque -> no_banque = banque -> no_banque;	  copie_banque -> nom_banque = g_strdup ( banque -> nom_banque );	  copie_banque -> code_banque = g_strdup ( banque -> code_banque );	  copie_banque -> adr_banque = g_strdup ( banque -> adr_banque );	  copie_banque -> tel_banque = g_strdup ( banque -> tel_banque );	  copie_banque -> email_banque = g_strdup ( banque -> email_banque );	  copie_banque -> web_banque = g_strdup ( banque -> web_banque );	  copie_banque -> remarque_banque = g_strdup ( banque -> remarque_banque );	  copie_banque -> nom_correspondant = g_strdup ( banque -> nom_correspondant );	  copie_banque -> tel_correspondant = g_strdup ( banque -> tel_correspondant );	  copie_banque -> email_correspondant = g_strdup ( banque -> email_correspondant );	  copie_banque -> fax_correspondant = g_strdup ( banque -> fax_correspondant );	  liste_struct_banques_tmp = g_slist_append ( liste_struct_banques_tmp,						      copie_banque );	  liste_tmp = liste_tmp -> next;	}      no_derniere_banque_tmp = no_derniere_banque;      nb_banques_tmp = nb_banques;      /* remplissage de la liste avec les banques temporaires */      liste_tmp = liste_struct_banques_tmp;      while ( liste_tmp )	{	  /* on associe  la ligne la struct de la banque */	  gtk_clist_set_row_data ( GTK_CLIST ( clist_banques_parametres ),				   g_slist_position ( liste_struct_banques_tmp,						      liste_tmp ),				   liste_tmp -> data );	  liste_tmp = liste_tmp -> next;	}      modification_fichier ( TRUE );      break;      /* onglet exercices */    case 7 :      if ( liste_struct_exercices )	g_slist_free ( liste_struct_exercices );      liste_struct_exercices = liste_struct_exercices_tmp;      no_derniere_exercice = no_derniere_exercice_tmp;      nb_exercices = nb_exercices_tmp;      /* on remplace l'option menu des exercices des formulaire */      gtk_widget_destroy ( GTK_OPTION_MENU ( widget_formulaire_operations[11] ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[11] ),				 creation_menu_exercices () );      gtk_widget_destroy ( GTK_OPTION_MENU ( widget_formulaire_ventilation[4] ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation[4] ),				 creation_menu_exercices () );      gtk_widget_destroy ( GTK_OPTION_MENU ( widget_formulaire_echeancier[9] ) -> menu );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_echeancier[9] ),				 creation_menu_exercices () );      /* on recre la liste tmp des exercices */      liste_struct_exercices_tmp = NULL;      liste_tmp = liste_struct_exercices;      while ( liste_tmp )	{	  struct struct_exercice *exercice;	  struct struct_exercice *copie_exercice;	  exercice = liste_tmp -> data;	  copie_exercice = malloc ( sizeof ( struct struct_exercice ));	  copie_exercice -> no_exercice = exercice -> no_exercice;	  copie_exercice -> nom_exercice = g_strdup ( exercice -> nom_exercice );	  if ( exercice -> date_debut )	    copie_exercice -> date_debut = g_date_new_dmy ( g_date_day ( exercice -> date_debut ),							    g_date_month ( exercice -> date_debut ),							    g_date_year ( exercice -> date_debut ));	  else	    copie_exercice -> date_debut = NULL;	  if ( exercice -> date_fin )	    copie_exercice -> date_fin = g_date_new_dmy ( g_date_day ( exercice -> date_fin ),							  g_date_month ( exercice -> date_fin ),							  g_date_year ( exercice -> date_fin ));	  else	    copie_exercice -> date_fin = NULL;	  copie_exercice -> affiche_dans_formulaire = exercice -> affiche_dans_formulaire;	  liste_struct_exercices_tmp = g_slist_append ( liste_struct_exercices_tmp,							copie_exercice );	  liste_tmp = liste_tmp -> next;	}      no_derniere_exercice_tmp = no_derniere_exercice;      nb_exercices_tmp = nb_exercices;      /* remplissage de la liste avec les exercices temporaires */      liste_tmp = liste_struct_exercices_tmp;      while ( liste_tmp )	{	  /* on associe  la ligne la struct de la exercice */	  gtk_clist_set_row_data ( GTK_CLIST ( clist_exercices_parametres ),				   g_slist_position ( liste_struct_exercices_tmp,						      liste_tmp ),				   liste_tmp -> data );	  liste_tmp = liste_tmp -> next;	}      etat.affichage_exercice_automatique = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_affichage_auto_exercice ));      /* on remplit  nouveau la liste des exos de la conf de l'tat */      remplissage_liste_exo_etats ();      /* on reslectionne dans cette liste ce qui tait slectionn */      selectionne_liste_exo_etat_courant ();      modification_fichier ( TRUE );      break;      /* onglet types */    case 8:      /* rcupre le check button afficher tous les types */      etat.affiche_tous_les_types = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton_type_choix_affichage_formulaire ));      /* on remplace les anciennes valeurs par les valeurs temporaires */      for ( i=0 ; i<nb_comptes ; i++ )	{	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte + i;	  g_slist_free ( TYPES_OPES );	  TYPES_OPES = liste_tmp_types[i];	  TYPE_DEFAUT_DEBIT = type_defaut_debit[i];	  TYPE_DEFAUT_CREDIT = type_defaut_credit[i];	  TRI = tri_tmp[i];	  g_slist_free ( LISTE_TRI );	  LISTE_TRI = liste_tri_tmp[i];	  NEUTRES_INCLUS = neutres_inclus_tmp[i];	}      /* on recre les valeurs temporaires */      liste_tmp_types = malloc ( nb_comptes * sizeof (gpointer));      type_defaut_debit = malloc ( nb_comptes * sizeof (gint));      type_defaut_credit = malloc ( nb_comptes * sizeof (gint));      liste_tri_tmp = malloc ( nb_comptes * sizeof (gpointer));      tri_tmp = malloc ( nb_comptes * sizeof (gint));      neutres_inclus_tmp = malloc ( nb_comptes * sizeof (gint));      p_tab_nom_de_compte_variable = p_tab_nom_de_compte;      for ( i=0 ; i<nb_comptes ; i++ )	{	  GSList *liste_tmp;	  GSList *liste_types_tmp;	  liste_tmp = TYPES_OPES;	  liste_types_tmp = NULL;	  while ( liste_tmp )	    {	      struct struct_type_ope *type_ope;	      struct struct_type_ope *type_ope_tmp;	      type_ope = liste_tmp -> data;	      type_ope_tmp = malloc ( sizeof ( struct struct_type_ope ));	      type_ope_tmp -> no_type = type_ope -> no_type;	      type_ope_tmp -> nom_type = g_strdup ( type_ope -> nom_type );	      type_ope_tmp -> signe_type = type_ope -> signe_type;	      type_ope_tmp -> affiche_entree = type_ope -> affiche_entree;	      type_ope_tmp -> numerotation_auto = type_ope -> numerotation_auto;	      type_ope_tmp -> no_en_cours = type_ope -> no_en_cours;	      type_ope_tmp -> no_compte = type_ope -> no_compte;	      liste_types_tmp = g_slist_append ( liste_types_tmp,						 type_ope_tmp );	      liste_tmp = liste_tmp -> next;	    }	  liste_tmp_types[i] = liste_types_tmp;	  type_defaut_debit[i] = TYPE_DEFAUT_DEBIT;	  type_defaut_credit[i] = TYPE_DEFAUT_CREDIT;	  /* on s'occupe des tris */	  tri_tmp[i] = TRI;	  neutres_inclus_tmp[i] = NEUTRES_INCLUS;	  liste_tmp = LISTE_TRI;	  liste_types_tmp = NULL;	  while ( liste_tmp )	    {	      liste_types_tmp = g_slist_append ( liste_types_tmp,						 liste_tmp -> data );	      liste_tmp = liste_tmp -> next;	    }	  liste_tri_tmp[i] = liste_types_tmp;	  p_tab_nom_de_compte_variable++;	}      /* on raffiche si ncessaire l'option menu du formulaire */      if ( (menu = creation_menu_types ( 1, compte_courant , 0 )))	{	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ),				     menu );	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ),					cherche_no_menu_type ( TYPE_DEFAUT_DEBIT ) );	  gtk_widget_show ( widget_formulaire_operations[9] );	}      else	gtk_widget_hide ( widget_formulaire_operations[9] );      demande_mise_a_jour_tous_comptes ();      verification_mise_a_jour_liste ();      modification_fichier ( TRUE );      break;    default :    }  sauve_configuration ();}