rem: "%d/%m/%Y",
add: "%02d/%02m/%04Y",
context: void edition_operation ( void ){  struct structure_operation *operation;  gchar date [11];  gchar date_bancaire [11];  GSList *liste_tmp;  struct struct_devise *devise;  p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;  operation = OPERATION_SELECTIONNEE;  formulaire_a_zero ();/* on affiche le formulaire sans modifier l'tat *//* => si il n'est pas affich normalement, il sera efface lors du prochain formulaire_a_zero */  if ( !etat.formulaire_toujours_affiche )    {      gtk_widget_show ( frame_droite_bas );      gtk_signal_connect ( GTK_OBJECT ( frame_droite_bas ),			   "draw",			   GTK_SIGNAL_FUNC ( verifie_ligne_selectionnee_visible ),			   NULL );    }  gtk_widget_set_sensitive ( bouton_affiche_cache_formulaire,			     FALSE );/* si l'op est -1, c'est que c'est une nouvelle op */  if ( operation == GINT_TO_POINTER ( -1 ) )    {      clique_champ_formulaire ( widget_formulaire_operations[1],				NULL,				GINT_TO_POINTER ( 1 ));      gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_operations[1]),				0,				-1);      gtk_widget_grab_focus ( GTK_WIDGET ( widget_formulaire_operations[1] ));      return;    }/*   l'op n'est pas -1, c'est une modif, on remplit les champs */  degrise_formulaire_operations ();  gtk_object_set_data ( GTK_OBJECT ( formulaire ),			"adr_struct_ope",			operation );    /* on met le no de l'op */  gtk_label_set_text ( GTK_LABEL ( widget_formulaire_operations[0] ),		       itoa ( operation -> no_operation ));  /* mise en forme de la date */  g_date_strftime (  date,		     11,		     "%d/%m/%Y",		     operation -> date);  entree_prend_focus ( widget_formulaire_operations[1] );  gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[1] ),		       date );  /* mise en forme du tiers */  if ( operation -> tiers )    {      liste_tmp = g_slist_find_custom ( liste_struct_tiers,					GINT_TO_POINTER ( operation -> tiers ),					( GCompareFunc ) recherche_tiers_par_no );      entree_prend_focus ( widget_formulaire_operations[2] );      gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[2] ),			      (( struct struct_tiers * )( liste_tmp -> data )) -> nom_tiers );    }  /* mise en forme du dbit / crdit */  if ( operation -> montant < 0 )    {      entree_prend_focus ( widget_formulaire_operations[3] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[3] ),			   g_strdup_printf ( "%4.2f", -operation -> montant ));      /* met le menu des types dbits */      if ( !etat.affiche_tous_les_types )	{	  GtkWidget *menu;	  if ( (menu = creation_menu_types ( 1, compte_courant, 0  )))	    {	      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ),					 menu );	      gtk_widget_show ( widget_formulaire_operations[9] );	    }	  else	    gtk_widget_hide ( widget_formulaire_operations[9] );	}    }  else    {      entree_prend_focus ( widget_formulaire_operations[4] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[4] ),			   g_strdup_printf ( "%4.2f", operation -> montant ));      /* met le menu des types crdits */      if ( !etat.affiche_tous_les_types )	{	  GtkWidget *menu;	  if ( (menu = creation_menu_types ( 2, compte_courant, 0 )))	    {	      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ),					 menu );	      gtk_widget_show ( widget_formulaire_operations[9] );	    }	  else	    {	      gtk_widget_hide ( widget_formulaire_operations[9] );	      gtk_widget_hide ( widget_formulaire_operations[10] );	    }	}    }  /* si l'opration est releve, on dsensitive les entres de crdit et dbit */  if ( operation -> pointe == 2 )    {      gtk_widget_set_sensitive ( widget_formulaire_operations[4],				 FALSE );      gtk_widget_set_sensitive ( widget_formulaire_operations[3],				 FALSE );    }  /* mise en forme de la devise */  gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_operations[5] ),				g_slist_position ( liste_struct_devises,						   g_slist_find_custom ( liste_struct_devises,									 GINT_TO_POINTER ( operation -> devise ),									 ( GCompareFunc ) recherche_devise_par_no )));  /*   si la devise n'est pas celle du compte ni l'euro si le compte va y passer, affiche le bouton change */  if ( !devise_compte       ||       devise_compte -> no_devise != DEVISE )    devise_compte = g_slist_find_custom ( liste_struct_devises,					  GINT_TO_POINTER ( DEVISE ),					  ( GCompareFunc ) recherche_devise_par_no ) -> data;  devise = g_slist_find_custom ( liste_struct_devises,				 GINT_TO_POINTER ( operation -> devise ),				 ( GCompareFunc ) recherche_devise_par_no ) -> data;  if ( !( devise -> no_devise == DEVISE	  ||	  ( devise_compte -> passage_euro && !strcmp ( devise -> nom_devise, _("Euro") ))	  ||	  ( !strcmp ( devise_compte -> nom_devise, _("Euro") ) && devise -> passage_euro )))    gtk_widget_show ( widget_formulaire_operations[6] );  /* mise en forme des catgories */  liste_tmp = g_slist_find_custom ( liste_struct_categories,				    GINT_TO_POINTER ( operation -> categorie ),				    ( GCompareFunc ) recherche_categorie_par_no );  if ( liste_tmp )    {      GSList *liste_tmp_2;            liste_tmp_2 = g_slist_find_custom ( (( struct struct_categ * )( liste_tmp -> data )) -> liste_sous_categ,					  GINT_TO_POINTER ( operation -> sous_categorie ),					  ( GCompareFunc ) recherche_sous_categorie_par_no );      entree_prend_focus ( widget_formulaire_operations[8] );       if ( liste_tmp_2 )	gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] ),				g_strconcat ( (( struct struct_categ * )( liste_tmp -> data )) -> nom_categ,					      " : ",					      (( struct struct_sous_categ * )( liste_tmp_2 -> data )) -> nom_sous_categ,					      NULL ));      else	gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] ),				(( struct struct_categ * )( liste_tmp -> data )) -> nom_categ );          }  /* mise en forme de la date relle */  if ( operation->date_bancaire )    {      g_date_strftime (  date_bancaire,			 11,			 "%d/%m/%Y",			 operation -> date_bancaire );      entree_prend_focus ( widget_formulaire_operations[7] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[7] ),			   date_bancaire );    }  /* si l'opration est lie, marque le virement */  /*   et si la contre opration est releve, on dsensitive la categ et le montant */  if ( operation -> relation_no_operation )    {      entree_prend_focus ( widget_formulaire_operations[8] );      if ( operation -> relation_no_compte == -1 )	gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] ),				_("Transfer: deleted account") );      else	{	  GtkWidget *menu;	  struct structure_operation *operation_2;	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> relation_no_compte;	  /* on met le nom du compte du virement */	  gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] ),				  g_strconcat ( COLON(_("Transfer")),						NOM_DU_COMPTE,						NULL ));	  /* si l'opration est releve, on empche le changement de virement */	  if ( operation -> pointe == 2 )	    gtk_widget_set_sensitive ( widget_formulaire_operations[8],				       FALSE );	  /* rcupration de la contre opration */	  operation_2 = g_slist_find_custom ( LISTE_OPERATIONS,					      GINT_TO_POINTER ( operation -> relation_no_operation ),					      (GCompareFunc) recherche_operation_par_no ) -> data;	  /* 	  si la contre opration est releve, on dsensitive les categ et les montants */	  if ( operation_2 -> pointe == 2 )	    {	      gtk_widget_set_sensitive ( widget_formulaire_operations[4],					 FALSE );	      gtk_widget_set_sensitive ( widget_formulaire_operations[3],					 FALSE );	      gtk_widget_set_sensitive ( widget_formulaire_operations[8],					 FALSE );	    }	  /* comme c'est un virement, on affiche s'il existe l'option menu du type de l'autre op */	  if ( operation -> montant >= 0 )	    menu = creation_menu_types ( 1, operation -> relation_no_compte, 2  );	  else	    menu = creation_menu_types ( 2, operation -> relation_no_compte, 2  );	  /*  on ne continue que si un menu a t cr */	  /*    dans ce cas, on va chercher l'autre op et retrouve le type */	  if ( menu )	    {	      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_operations[13] ),					 menu );	      gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_operations[13] ),					    cherche_no_menu_type_associe ( operation_2 -> type_ope,									   0 ));	      gtk_widget_show ( widget_formulaire_operations[13] );	    }	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	}    }  /* mise en forme si l'opration est ventile */  if ( operation -> operation_ventilee )    {      entree_prend_focus ( widget_formulaire_operations[8] );      gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] ),			      _("Breakdown of transaction") );      gtk_widget_show ( widget_formulaire_operations[15] );      gtk_widget_set_sensitive ( widget_formulaire_operations[11],				 FALSE );      gtk_widget_set_sensitive ( widget_formulaire_operations[12],				 FALSE );      /* met la liste des ops de ventilation dans liste_adr_ventilation */      gtk_object_set_data ( GTK_OBJECT ( formulaire ),			    "liste_adr_ventilation",			    creation_liste_ope_de_ventil ( operation ));      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;    }  /* met l'option menu du type d'op */  if ( GTK_WIDGET_VISIBLE ( widget_formulaire_operations[9] ))    {      gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ),				    cherche_no_menu_type ( operation -> type_ope ));      if ( operation -> type_ope	   &&	   ( liste_tmp = g_slist_find_custom ( TYPES_OPES,				       GINT_TO_POINTER ( operation -> type_ope ),				       (GCompareFunc) recherche_type_ope_par_no )))	{	  struct struct_type_ope *type;	  type = liste_tmp -> data;	  if ( type -> affiche_entree	       &&	       operation -> contenu_type )	    {	      entree_prend_focus ( widget_formulaire_operations[10] );	      gtk_entry_set_text ( GTK_ENTRY (widget_formulaire_operations[10] ),				   operation -> contenu_type );	    }	}    }  /* met en place l'exercice */  gtk_option_menu_set_history (  GTK_OPTION_MENU ( widget_formulaire_operations[11] ),				 cherche_no_menu_exercice ( operation -> no_exercice,							    widget_formulaire_operations[11] ));  /* met en place l'imputation budgtaire */  /* si c'est une op ventile, on met rien */  if ( !operation -> operation_ventilee )    {      liste_tmp = g_slist_find_custom ( liste_struct_imputation,					GINT_TO_POINTER ( operation -> imputation ),					( GCompareFunc ) recherche_imputation_par_no );      if ( liste_tmp )	{	  GSList *liste_tmp_2;	  entree_prend_focus ( widget_formulaire_operations[12]);	  liste_tmp_2 = g_slist_find_custom ( (( struct struct_imputation * )( liste_tmp -> data )) -> liste_sous_imputation,					      GINT_TO_POINTER ( operation -> sous_imputation ),					      ( GCompareFunc ) recherche_sous_imputation_par_no );	  if ( liste_tmp_2 )	    gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[12] ),				    g_strconcat ( (( struct struct_imputation * )( liste_tmp -> data )) -> nom_imputation,						  " : ",						  (( struct struct_sous_imputation * )( liste_tmp_2 -> data )) -> nom_sous_imputation,						  NULL ));	  else	    gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_operations[12] ),				    (( struct struct_imputation * )( liste_tmp -> data )) -> nom_imputation );	}    }  /* mise en place de la pice comptable */  if ( operation -> no_piece_comptable )    {      entree_prend_focus ( widget_formulaire_operations[14] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[14] ),			   operation -> no_piece_comptable );    }  /*   remplit les notes */  if ( operation -> notes )    {      entree_prend_focus ( widget_formulaire_operations[16] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[16] ),			   operation -> notes );    }  /*   remplit les infos guichet / banque */  if ( operation -> info_banque_guichet )    {      entree_prend_focus ( widget_formulaire_operations[17] );      gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[17] ),			   operation -> info_banque_guichet );    }/* mise en forme de auto / man */  if ( operation -> auto_man )    gtk_label_set_text ( GTK_LABEL ( widget_formulaire_operations[18]),			 _("Auto"));  else    gtk_label_set_text ( GTK_LABEL ( widget_formulaire_operations[18]),			 _("Manual"));/*   on a fini de remplir le formulaire, on donne le focus  la date */  gtk_entry_select_region ( GTK_ENTRY ( widget_formulaire_operations[1] ),			    0,			    -1);  gtk_widget_grab_focus ( widget_formulaire_operations[1] );}