rem: gtk_signal_connect_object  ( GTK_OBJECT ( entree_code_devise_parametres ), "changed", GTK_SIGNAL_FUNC ( gnome_property_box_changed ), GTK_OBJECT (fenetre_preferences) );
add: gtk_signal_connect  ( GTK_OBJECT ( entree_code_devise_parametres ), "changed", activer_bouton_appliquer, NULL );
context: GtkWidget *onglet_devises ( void ){  GtkWidget *hbox_pref, *vbox_pref;  GtkWidget *separateur;  GtkWidget *label;  GtkWidget *frame;  GSList *liste_tmp;  GtkWidget *scrolled_window;  GtkWidget *vbox;  gchar *titres_devise [2] = { _("Currency"),			       _("Code") };  GtkWidget *bouton;  GtkWidget *hbox;  vbox_pref = gtk_vbox_new ( FALSE,			     5 );  gtk_widget_show ( vbox_pref );  hbox_pref = gtk_hbox_new ( FALSE,			     5 );  gtk_box_pack_start ( GTK_BOX ( vbox_pref ),		       hbox_pref,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( hbox_pref );/* cration de la 1re colonne */  vbox = gtk_vbox_new ( FALSE,			    5 );  gtk_container_set_border_width ( GTK_CONTAINER ( vbox ),				   10 );  gtk_box_pack_start ( GTK_BOX ( hbox_pref ),		       vbox,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( vbox );/* cration de la clist des devises */  scrolled_window = gtk_scrolled_window_new ( NULL, NULL );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       scrolled_window,		       FALSE,		       FALSE,		       0);  gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ),				   GTK_POLICY_NEVER,				   GTK_POLICY_AUTOMATIC);  gtk_widget_set_usize ( GTK_WIDGET ( scrolled_window ),			 FALSE,			 120 );  gtk_widget_show ( scrolled_window );  clist_devises_parametres = gtk_clist_new_with_titles ( 2,					      titres_devise );  gtk_clist_set_column_auto_resize ( GTK_CLIST ( clist_devises_parametres ) ,				      0,				      TRUE );  gtk_clist_set_column_auto_resize ( GTK_CLIST ( clist_devises_parametres ) ,				      1,				      TRUE );  gtk_clist_column_titles_passive ( GTK_CLIST ( clist_devises_parametres ));  gtk_clist_set_column_justification ( GTK_CLIST ( clist_devises_parametres ),				       1,				       GTK_JUSTIFY_RIGHT);  gtk_signal_connect_object  ( GTK_OBJECT ( fenetre_preferences ),			       "apply",			       GTK_SIGNAL_FUNC ( gtk_clist_unselect_all ),			       GTK_OBJECT ( clist_devises_parametres ));  gtk_container_add ( GTK_CONTAINER ( scrolled_window ),		      clist_devises_parametres );  gtk_widget_show ( clist_devises_parametres );/*   s'il n'y a pas de fichier ouvert, on grise */  if ( !nb_comptes )    gtk_widget_set_sensitive ( vbox,			       FALSE );  else    {      /* on cre 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;      /* remplissage de la liste avec les devises temporaires */      liste_tmp = liste_struct_devises_tmp;      while ( liste_tmp )	{	  struct struct_devise *devise;	  gchar *ligne[2];	  gint ligne_insert;	  devise = liste_tmp -> data;	  ligne[0] = devise -> nom_devise;	  ligne[1] = devise -> code_devise;	  ligne_insert = gtk_clist_append ( GTK_CLIST ( clist_devises_parametres ),					    ligne );	  /* on associe  la ligne la struct de la devise */	  gtk_clist_set_row_data ( GTK_CLIST ( clist_devises_parametres ),				   ligne_insert,				   devise );	  liste_tmp = liste_tmp -> next;	}    }  /* cration de la hbox des boutons en dessous */  hbox = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       hbox,		       FALSE,		       FALSE,		       0 );  gtk_widget_show ( hbox );/* ajout du bouton ajouter */  /* FIXME */  bouton = gtk_button_new_from_stock (GTK_STOCK_ADD);/*   bouton = gnome_stock_button ( GNOME_STOCK_PIXMAP_ADD ); */  gtk_button_set_relief ( GTK_BUTTON ( bouton ),			  GTK_RELIEF_NONE );  gtk_signal_connect ( GTK_OBJECT ( bouton ),		       "clicked",		       GTK_SIGNAL_FUNC  ( ajout_devise ),		       clist_devises_parametres );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       bouton,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( bouton );/* ajout du bouton annuler */  /* FIXME */  bouton_supprimer_devise = gtk_button_new_from_stock (GTK_STOCK_REMOVE);/*   bouton_supprimer_devise = gnome_stock_button ( GNOME_STOCK_PIXMAP_REMOVE ); */  gtk_button_set_relief ( GTK_BUTTON ( bouton_supprimer_devise ),			  GTK_RELIEF_NONE );  gtk_widget_set_sensitive ( bouton_supprimer_devise,			     FALSE );  gtk_signal_connect ( GTK_OBJECT ( bouton_supprimer_devise ),		       "clicked",		       GTK_SIGNAL_FUNC  ( retrait_devise ),		       clist_devises_parametres );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       bouton_supprimer_devise,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( bouton_supprimer_devise );/* sparation */  separateur = gtk_hseparator_new ();  gtk_box_pack_start ( GTK_BOX ( vbox ),		       separateur,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( separateur );/* frame de droite qui contient les caractristiques de la devise */  frame = gtk_frame_new ( NULL );  gtk_container_set_border_width ( GTK_CONTAINER ( frame ),				   10 );  gtk_widget_set_sensitive ( frame,			     FALSE );  gtk_box_pack_start ( GTK_BOX ( hbox_pref ),		       frame,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( frame );  /* la slection d'une devise dgrise la frame */  gtk_signal_connect ( GTK_OBJECT ( clist_devises_parametres ),		       "select-row",		       GTK_SIGNAL_FUNC ( selection_ligne_devise ),		       frame );  gtk_signal_connect ( GTK_OBJECT ( clist_devises_parametres ),		       "unselect-row",		       GTK_SIGNAL_FUNC ( deselection_ligne_devise ),		       frame );  vbox = gtk_vbox_new ( FALSE,			5 );  gtk_container_set_border_width ( GTK_CONTAINER ( vbox ),				   5 );  gtk_container_add ( GTK_CONTAINER ( frame ),		      vbox );  gtk_widget_show ( vbox );  /*   tout en haut, on met une hbox avec son nom et son code */  hbox = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       hbox,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( hbox );  label = gtk_label_new ( COLON(_("Name")) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  entree_nom_devise_parametres = gtk_entry_new ();  gtk_signal_connect ( GTK_OBJECT ( entree_nom_devise_parametres ),		       "changed",		       GTK_SIGNAL_FUNC ( changement_nom_entree_devise ),		       NULL );  gtk_signal_connect_object  ( GTK_OBJECT ( entree_nom_devise_parametres ),			       "changed",			       GTK_SIGNAL_FUNC ( gnome_property_box_changed ),			       GTK_OBJECT (fenetre_preferences) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       entree_nom_devise_parametres,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( entree_nom_devise_parametres );  separateur = gtk_vseparator_new ();  gtk_box_pack_start ( GTK_BOX ( hbox ),		       separateur,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( separateur );  label = gtk_label_new ( COLON(_("Code")) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  entree_code_devise_parametres = gtk_entry_new ();  gtk_signal_connect ( GTK_OBJECT ( entree_code_devise_parametres ),		       "changed",		       GTK_SIGNAL_FUNC ( changement_code_entree_devise ),		       NULL );  gtk_signal_connect_object  ( GTK_OBJECT ( entree_code_devise_parametres ),			       "changed",			       GTK_SIGNAL_FUNC ( gnome_property_box_changed ),			       GTK_OBJECT (fenetre_preferences) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       entree_code_devise_parametres,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( entree_code_devise_parametres );  /*   en dessous on met le bouton passera  l'euro */  check_button_euro = gtk_check_button_new_with_label ( _("Will switch to the Euro") );  gtk_signal_connect ( GTK_OBJECT ( check_button_euro ),		       "toggled",		       GTK_SIGNAL_FUNC ( change_passera_euro ),		       clist_devises_parametres );  gtk_signal_connect_object ( GTK_OBJECT ( check_button_euro ),			      "toggled",			      gnome_property_box_changed,			      GTK_OBJECT (fenetre_preferences));  gtk_box_pack_start ( GTK_BOX ( vbox ),		       check_button_euro,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( check_button_euro );/* cration de la ligne devise associe */  hbox_devise_associee = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       hbox_devise_associee,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( hbox_devise_associee );  label = gtk_label_new ( COLON(_("Associated currency")) );  gtk_box_pack_start ( GTK_BOX ( hbox_devise_associee ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  option_menu_devises = gtk_option_menu_new ();  gtk_box_pack_start ( GTK_BOX ( hbox_devise_associee ),		       option_menu_devises,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( option_menu_devises );/* cration de la ligne de change entre les devises */  label_date_dernier_change = gtk_label_new ( NULL );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       label_date_dernier_change,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label_date_dernier_change );  /* cration de la ligne du change */  hbox_ligne_change = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( vbox ),		       hbox_ligne_change,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( hbox_ligne_change );  label = gtk_label_new ( POSTSPACIFY(_("A")) );  gtk_box_pack_start ( GTK_BOX ( hbox_ligne_change ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  devise_1 = gtk_option_menu_new ();  gtk_box_pack_start ( GTK_BOX ( hbox_ligne_change ),		       devise_1,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( devise_1 );  label = gtk_label_new ( SPACIFY(_("equals")) );  gtk_box_pack_start ( GTK_BOX ( hbox_ligne_change ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  entree_conversion = gtk_entry_new ();  gtk_signal_connect_object ( GTK_OBJECT ( entree_conversion ),			      "changed",			      gnome_property_box_changed,			      GTK_OBJECT (fenetre_preferences));  gtk_widget_set_usize ( entree_conversion,			 100,			 FALSE );  gtk_box_pack_start ( GTK_BOX ( hbox_ligne_change ),		       entree_conversion,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( entree_conversion );  devise_2 = gtk_option_menu_new ();  gtk_box_pack_start ( GTK_BOX ( hbox_ligne_change ),		       devise_2,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( devise_2 );  return ( vbox_pref );}