rem: gtk_widget_show ( menu );
context: void demande_taux_de_change ( struct struct_devise *devise_compte,			      struct struct_devise *devise ,			      gint une_devise_compte_egale_x_devise_ope,			      gdouble taux_change,			      gdouble frais_change){  GtkWidget *dialog;  GtkWidget *label;  GtkWidget *entree;  GtkWidget *menu;  GtkWidget *item;  GtkWidget *hbox;  gint resultat;  GtkWidget *entree_frais;    dialog = gnome_dialog_new ( _("Entry of the exchange rate"),			      GNOME_STOCK_BUTTON_OK,			      NULL );  gtk_window_set_transient_for ( GTK_WINDOW ( dialog ),				 GTK_WINDOW ( window ));  gtk_signal_connect ( GTK_OBJECT ( dialog),		       "delete_event",		       GTK_SIGNAL_FUNC ( blocage_boites_dialogues ),		       NULL );  label = gtk_label_new ( COLON(_("Please enter the exchange rate")) );  gtk_box_pack_start ( GTK_BOX ( GNOME_DIALOG ( dialog ) -> vbox ),		       label,		       FALSE,		       FALSE,		       20 );  gtk_widget_show ( label );  /* création de la ligne du change */  hbox = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( GNOME_DIALOG ( dialog ) -> vbox ),		       hbox,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( hbox );  label = gtk_label_new ( POSTSPACIFY(_("A")) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  option_menu_devise_1= gtk_option_menu_new ();  gtk_box_pack_start ( GTK_BOX ( hbox ),		       option_menu_devise_1,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( option_menu_devise_1 );  label = gtk_label_new ( SPACIFY(_("equals")) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( label );  entree = gtk_entry_new ();  gtk_widget_set_usize ( entree,			 100,			 FALSE );  gnome_dialog_editable_enters ( GNOME_DIALOG ( dialog ),				 GTK_EDITABLE ( entree ));  gtk_box_pack_start ( GTK_BOX ( hbox ),		       entree,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( entree );  option_menu_devise_2 = gtk_option_menu_new ();  gtk_box_pack_start ( GTK_BOX ( hbox ),		       option_menu_devise_2,		       FALSE,		       FALSE,		       0);  gtk_widget_show ( option_menu_devise_2 );      /* création du menu de la 1ère devise ( le menu comporte la devise courante et celle associée ) */  menu = gtk_menu_new ();  item = gtk_menu_item_new_with_label ( devise -> nom_devise );  gtk_object_set_data ( GTK_OBJECT ( item ),			"adr_devise",			devise );  gtk_menu_append ( GTK_MENU ( menu ),		    item );  gtk_widget_show ( item );  item = gtk_menu_item_new_with_label ( devise_compte -> nom_devise );  gtk_object_set_data ( GTK_OBJECT ( item ),			"adr_devise",			devise_compte );  gtk_menu_append ( GTK_MENU ( menu ),		    item );  gtk_widget_show ( item );  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( option_menu_devise_1 ),			     menu );  gtk_signal_connect ( GTK_OBJECT ( GTK_OPTION_MENU ( option_menu_devise_1 )-> menu ),		       "selection_done",		       GTK_SIGNAL_FUNC ( devise_selectionnee ),		       NULL );  gtk_widget_show ( menu );	        /* création du menu de la 2ème devise ( le menu comporte la devise courante et celle associée ) */  menu = gtk_menu_new ();  item = gtk_menu_item_new_with_label ( devise -> nom_devise );  gtk_object_set_data ( GTK_OBJECT ( item ),			"adr_devise",			devise );  gtk_menu_append ( GTK_MENU ( menu ),		    item );  gtk_widget_show ( item );  item = gtk_menu_item_new_with_label ( devise_compte -> nom_devise );  gtk_object_set_data ( GTK_OBJECT ( item ),			"adr_devise",			devise_compte );  gtk_menu_append ( GTK_MENU ( menu ),		    item );  gtk_widget_show ( item );  gtk_option_menu_set_menu ( GTK_OPTION_MENU ( option_menu_devise_2 ),			     menu );  gtk_signal_connect ( GTK_OBJECT ( GTK_OPTION_MENU ( option_menu_devise_2 ) -> menu ),		       "selection_done",		       GTK_SIGNAL_FUNC ( devise_selectionnee ),		       GINT_TO_POINTER ( 1 ));  gtk_widget_show ( menu );   /* création de la ligne des frais de change */  hbox = gtk_hbox_new ( FALSE,			5 );  gtk_box_pack_start ( GTK_BOX ( GNOME_DIALOG ( dialog ) -> vbox ),		       hbox,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( hbox );  label = gtk_label_new ( COLON(_("Exchange fees")) );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( label );  entree_frais = gtk_entry_new ();  gnome_dialog_editable_enters ( GNOME_DIALOG ( dialog ),				 GTK_EDITABLE ( entree_frais ));  gtk_box_pack_start ( GTK_BOX ( hbox ),		       entree_frais,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( entree_frais );  label = gtk_label_new ( devise_compte -> nom_devise );  gtk_box_pack_start ( GTK_BOX ( hbox ),		       label,		       FALSE,		       FALSE,		       5 );  gtk_widget_show ( label );      /* choix des 1ère et 2ème devise */  if ( taux_change       ||       frais_change )    {      if ( une_devise_compte_egale_x_devise_ope )	{	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_1 ),					1 );	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_2 ),					0 );	}      else	{	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_1 ),					0 );	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_2 ),					1 );	}      gtk_entry_set_text ( GTK_ENTRY ( entree ),			   g_strdup_printf ( "%f",					     taux_change ));      gtk_entry_set_text ( GTK_ENTRY ( entree_frais ),			   g_strdup_printf ( "%4.2f",					     fabs ( frais_change )));    }  else    {      /* vérifie s'il y a déjà une association entre la devise du compte et la devise de l'opération */      if ( devise_compte -> no_devise_en_rapport == devise -> no_devise )	{	  /* il y a une association de la devise du compte vers la devise de l'opération */	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_1 ),					devise_compte -> une_devise_1_egale_x_devise_2 );	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_2 ),					!( devise_compte -> une_devise_1_egale_x_devise_2 ));	  /*       si un change est déjà entré, on l'affiche */	  	  if ( devise_compte -> date_dernier_change )	    gtk_entry_set_text ( GTK_ENTRY ( entree ),				 g_strdup_printf ( "%f",						   devise_compte -> change ));	}      else	if ( devise -> no_devise_en_rapport == devise_compte -> no_devise )	  {	    /* il y a une association de la devise de l'opération vers la devise du compte */	    gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_1 ),					  !(devise -> une_devise_1_egale_x_devise_2 ));	    gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_2 ),					  devise -> une_devise_1_egale_x_devise_2 );	    /*       si un change est déjà entré, on l'affiche */	  	    if ( devise -> date_dernier_change )	      gtk_entry_set_text ( GTK_ENTRY ( entree ),				   g_strdup_printf ( "%f",						     devise -> change ));	  }      else	{	  /* il n'y a aucun rapport établi entre les 2 devises */	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_1 ),					1 );	  gtk_option_menu_set_history ( GTK_OPTION_MENU ( option_menu_devise_2 ),					0 );	}    }/* on lance la fenetre */  resultat = gnome_dialog_run ( GNOME_DIALOG ( dialog ));  if ( !resultat )    {      struct struct_devise *devise_tmp;      taux_de_change[0] = g_strtod ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( entree )),				  NULL );      taux_de_change[1] = g_strtod ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( entree_frais )),				  NULL );      /* FIXME: use gtk_menu_get_active + gtk_option_menu_get_menu ? */      devise_tmp = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( option_menu_devise_1 ) -> menu_item ),					 "adr_devise" );      if ( devise_tmp -> no_devise != devise -> no_devise )	taux_de_change[0] = -taux_de_change[0];      gnome_dialog_close ( GNOME_DIALOG ( dialog ));    }  else    {      taux_de_change[0] = 0;      taux_de_change[1] = 0;    }}