rem: etat -> exclure_ope_sans_categ = 1;
context: gboolean ajout_etat ( void ){    struct struct_etat *etat;    struct struct_comparaison_montants_etat *comp_montant;    GtkWidget *dialog;    gint resultat;    GtkWidget *frame;    GtkWidget *option_menu;    GtkWidget *menu;    GtkWidget *menu_item;    GtkWidget *label_description;    GtkWidget *scrolled_window;    if ( gtk_notebook_get_current_page ( GTK_NOTEBOOK ( notebook_general)) != 7 )	gtk_notebook_set_page ( GTK_NOTEBOOK ( notebook_general),				7 );    dialog = dialogue_special_no_run ( GTK_MESSAGE_QUESTION,				       GTK_BUTTONS_OK_CANCEL,				       make_hint ( _("Choose template for new report"),						   _("You are about to create a new report.  For convenience, you can choose between the following templates.  Reports may be customized later." ) ) );    frame = new_paddingbox_with_title ( GTK_DIALOG(dialog)->vbox, FALSE,					_("Report type"));    /* on commence par crer l'option menu */    option_menu = gtk_option_menu_new ();    gtk_box_pack_start ( GTK_BOX(frame), option_menu, FALSE, FALSE, 0 );    /* On met une ligne blanche entre les paddingboxes */    /*   gtk_box_pack_start ( GTK_BOX(frame), gtk_label_new(""), FALSE, FALSE, 6 ); */    /* on ajoute maintenant la frame */    frame = new_paddingbox_with_title ( GTK_DIALOG(dialog)->vbox, TRUE,					_("Description"));    /* on met le label dans une scrolled window */    scrolled_window = gtk_scrolled_window_new ( FALSE, FALSE );    gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ),				     GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );    gtk_box_pack_start ( GTK_BOX(frame), scrolled_window, TRUE, TRUE, 6 );    /* on ajoute maintenant le label */    label_description = gtk_label_new ( "" );    gtk_misc_set_alignment ( GTK_MISC ( label_description ), 0, 0 );    gtk_label_set_line_wrap ( GTK_LABEL ( label_description ), TRUE );    gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW ( scrolled_window ),					    label_description );    gtk_viewport_set_shadow_type ( GTK_VIEWPORT ( label_description -> parent ),				   GTK_SHADOW_NONE );    /* on cre ici le menu qu'on ajoute  l'option menu */    menu = gtk_menu_new ();    menu_item = gtk_menu_item_new_with_label ( _("Last month incomes and outgoings"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 0 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    /* on met le texte du 1er choix */    change_choix_nouvel_etat ( menu_item, label_description );    menu_item = gtk_menu_item_new_with_label ( _("Current month incomes and outgoings"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item )	; gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",				GINT_TO_POINTER ( 1 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    menu_item = gtk_menu_item_new_with_label ( _("Annual budget"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 2 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    menu_item = gtk_menu_item_new_with_label ( _("Cheques deposit"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 4 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    menu_item = gtk_menu_item_new_with_label ( _("Monthly outgoings by third party"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 5 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    menu_item = gtk_menu_item_new_with_label ( _("Search"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 6 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    menu_item = gtk_menu_item_new_with_label ( _("Blank report"));    gtk_menu_append ( GTK_MENU ( menu ), menu_item );    gtk_object_set_data ( GTK_OBJECT ( menu_item ), "no_etat",			  GINT_TO_POINTER ( 3 ));    gtk_signal_connect ( GTK_OBJECT ( menu_item ), "activate",			 GTK_SIGNAL_FUNC ( change_choix_nouvel_etat ),			 GTK_OBJECT ( label_description ));    gtk_option_menu_set_menu ( GTK_OPTION_MENU ( option_menu ), menu );    gtk_box_set_spacing ( GTK_BOX(GTK_DIALOG(dialog)->vbox), 6 );    gtk_widget_show_all ( dialog );    /* on attend le choix de l'utilisateur */    resultat = gtk_dialog_run ( GTK_DIALOG ( dialog ));    if ( resultat != GTK_RESPONSE_OK )    {	gtk_widget_destroy ( dialog );	return FALSE;    }    /* on rcupre le type d'tat voulu */    resultat = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( option_menu ) -> menu_item ),						       "no_etat" ));    gtk_widget_destroy ( GTK_WIDGET ( dialog ));    /* on cre le nouvel tat */    etat = calloc ( 1, sizeof ( struct struct_etat ));    etat -> no_etat = ++no_dernier_etat;    /* on remplit maintenant l'tat en fonction de ce qu'on a demand */    switch ( resultat )    {	case 0:	    /*  revenus et dpenses du mois prcdent  */	    etat -> nom_etat = g_strdup ( _("Previous month incomes and outgoings") );	    etat -> separer_revenus_depenses = 1;	    etat -> no_plage_date = 7;	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    etat -> type_virement = 2;	    etat -> utilise_categ = 1;	    etat -> afficher_sous_categ = 1;	    etat -> affiche_sous_total_categ = 1;	    etat -> affiche_sous_total_sous_categ = 1;	    etat -> afficher_pas_de_sous_categ = 1;	    etat -> afficher_nom_categ = 1;	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    break;	case 1:	    /*  revenus et dpenses du mois courant  */	    etat -> nom_etat = g_strdup ( _("Current month incomes and outgoings") );	    etat -> separer_revenus_depenses = 1;	    etat -> no_plage_date = 3;	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    etat -> type_virement = 2;	    etat -> utilise_categ = 1;	    etat -> afficher_sous_categ = 1;	    etat -> affiche_sous_total_categ = 1;	    etat -> affiche_sous_total_sous_categ = 1;	    etat -> afficher_pas_de_sous_categ = 1;	    etat -> afficher_nom_categ = 1;	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    break;	case 2:	    /* on ajoute le budget annuel */	    etat -> nom_etat = g_strdup ( _("Annual budget") );	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    etat -> separer_revenus_depenses = 1;	    etat -> no_plage_date = 4;	    etat -> utilise_categ = 1;	    etat -> exclure_ope_sans_categ = 1;	    etat -> affiche_sous_total_categ = 1;	    etat -> afficher_sous_categ = 1;	    etat -> afficher_pas_de_sous_categ = 1;	    etat -> affiche_sous_total_sous_categ = 1;	    etat -> afficher_nom_categ = 1;	    etat -> exclure_montants_nuls = 1;	    /*   tout le reste est  NULL, ce qui est trs bien */	    break;	case 3:	    /* on ajoute un tat vierge appel nouvel tat */	    etat -> nom_etat = g_strdup ( _("New report") );	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    etat -> afficher_opes = 1;	    etat -> afficher_date_ope = 1;	    etat -> afficher_tiers_ope = 1;	    etat -> afficher_categ_ope = 1;	    etat -> separer_revenus_depenses = 1;	    etat -> type_virement = 2;	    etat -> utilise_categ = 1;	    etat -> affiche_sous_total_categ = 1;	    etat -> afficher_sous_categ = 1;	    etat -> affiche_sous_total_sous_categ = 1;	    etat -> afficher_nom_categ = 1;	    etat -> exclure_montants_nuls = 1;	    /*   tout le reste est  NULL, ce qui est trs bien */	    break;	case 4:	    /* remise de chques */	    etat -> nom_etat = g_strdup ( _("Cheques deposit") );	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    etat -> afficher_opes = 1;	    etat -> afficher_nb_opes = 1;	    etat -> afficher_tiers_ope = 1;	    etat -> afficher_infobd_ope = 1;	    etat -> type_virement = 2;	    etat -> exclure_montants_nuls = 1;	    etat -> utilise_montant = 1;	    /* on doit crer une structure de montant qui dit que a va tre positif */	    comp_montant = calloc ( 1,				    sizeof ( struct struct_comparaison_montants_etat ));	    comp_montant -> lien_struct_precedente = -1;	    comp_montant -> comparateur_1 = 8;	    comp_montant -> lien_1_2 = 3;	    etat -> liste_struct_comparaison_montants = g_slist_append ( etat -> liste_struct_comparaison_montants,									 comp_montant );	    /*   tout le reste est  NULL, ce qui est trs bien */	    break;	case 5:	    /* dpenses mensuelles par tiers */	    etat -> nom_etat = g_strdup ( _("Monthly outgoings by third party") );	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    etat -> afficher_opes = 1;	    etat -> afficher_nb_opes = 1;	    etat -> afficher_tiers_ope = 1;	    etat -> type_classement_ope = 2;	    etat -> afficher_titre_colonnes = 1;	    etat -> no_plage_date = 7;	    etat -> utilise_categ = 1;	    etat -> affiche_sous_total_categ = 1;	    etat -> afficher_sous_categ = 1;	    etat -> afficher_nom_categ = 1;	    etat -> afficher_date_ope = 1;	    etat -> afficher_categ_ope = 1;	    etat -> separer_revenus_depenses = 1;	    etat -> type_virement = 2;	    etat -> exclure_ope_sans_categ = 1;	    etat -> affiche_sous_total_sous_categ = 1;	    etat -> exclure_ope_sans_ib = 1;	    etat -> exclure_montants_nuls = 1;	    /*   tout le reste est  NULL, ce qui est trs bien */	    break;	case 6:	    /* dpenses mensuelles par tiers */	    etat -> nom_etat = g_strdup ( _("Search") );	    /*   le classement de base est 1-2-3-4-5-6 (cf structure.h) */	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 1 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 2 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 3 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 4 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 5 ));	    etat -> type_classement = g_list_append ( etat -> type_classement,						      GINT_TO_POINTER ( 6 ));	    /*   les devises sont  1 (euro) */	    etat -> devise_de_calcul_general = 1;	    etat -> devise_de_calcul_categ = 1;	    etat -> devise_de_calcul_ib = 1;	    etat -> devise_de_calcul_tiers = 1;	    etat -> choix_devise_montant = 1;	    etat -> afficher_opes = 1;	    etat -> afficher_date_ope = 1;	    etat -> afficher_tiers_ope = 1;	    etat -> afficher_categ_ope = 1;	    etat -> afficher_sous_categ_ope = 1;	    etat -> afficher_type_ope = 1;	    etat -> afficher_ib_ope = 1;	    etat -> afficher_sous_ib_ope = 1;	    etat -> afficher_cheque_ope = 1;	    etat -> afficher_notes_ope = 1;	    etat -> afficher_pc_ope = 1;	    etat -> afficher_rappr_ope = 1;	    etat -> afficher_infobd_ope = 1;	    etat -> afficher_exo_ope = 1;	    etat -> ope_clickables = 1;	    etat -> no_plage_date = 4;	    etat -> separation_par_plage = 1;	    etat -> type_separation_plage = 2;	    etat -> type_virement = 2;	    /*   tout le reste est  NULL, ce qui est trs bien */	    break;	default :	    dialogue_error ( _("Unknown report type, creation cancelled"));	    return FALSE;    }    /* on l'ajoute  la liste */    liste_struct_etats = g_slist_append ( liste_struct_etats, etat );    /* on raffiche la liste des tats */    etat_courant = etat;    remplissage_liste_etats ();    gtk_widget_set_sensitive ( bouton_personnaliser_etat, TRUE );    gtk_widget_set_sensitive ( bouton_raffraichir_etat, TRUE );    gtk_widget_set_sensitive ( bouton_imprimer_etat, TRUE );    gtk_widget_set_sensitive ( bouton_exporter_etat, TRUE );    gtk_widget_set_sensitive ( bouton_dupliquer_etat, TRUE );    gtk_widget_set_sensitive ( bouton_effacer_etat, TRUE );    gtk_label_set_text ( GTK_LABEL ( label_etat_courant ),			 etat_courant -> nom_etat );    personnalisation_etat ();    modification_fichier ( TRUE );    return FALSE;}