rem: pLabel = gtk_label_new ( g_strconcat ( (gchar *) NOM_DU_COMPTE, " : ", NULL )); gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER ); gtk_widget_set_style ( pLabel, pStyleLabelNomCompte );    pLabel = gtk_label_new ( "" ); gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 0, 1, i, i+1 ); gtk_widget_show ( pLabel );   pLabel = gtk_label_new ( g_strconcat ( (gchar *) NOM_DU_COMPTE, " : ", NULL )); gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER ); gtk_widget_set_style ( pLabel, pStyleLabelNomCompte );   pEventBox = gtk_event_box_new (); gtk_signal_connect ( GTK_OBJECT ( pEventBox ), "enter-notify-event", GTK_SIGNAL_FUNC ( met_en_prelight ), NULL ); gtk_signal_connect ( GTK_OBJECT ( pEventBox ), "leave-notify-event", GTK_SIGNAL_FUNC ( met_en_normal ), NULL ); gtk_signal_connect_object ( GTK_OBJECT ( pEventBox ), "button-press-event", GTK_SIGNAL_FUNC ( changement_compte ), GINT_TO_POINTER ( ordre_comptes_variable->data ) ); gtk_table_attach ( GTK_TABLE ( pTable ), pEventBox, 1, 2, i, i+1, GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 20, 0 ); gtk_widget_show ( pEventBox ); gtk_container_add ( GTK_CONTAINER ( pEventBox ), pLabel ); gtk_widget_show ( pLabel );   solde_pointe_affichage_liste = SOLDE_INIT;     liste_operations_tmp = LISTE_OPERATIONS;  while ( liste_operations_tmp )
add: p_tab_nom_de_compte_variable = p_tab_nom_de_compte + GPOINTER_TO_INT ( ordre_comptes_variable->data );  if ( !COMPTE_CLOTURE && DEVISE == ((struct struct_devise *) devise -> data) -> no_devise )
context: void update_liste_comptes_accueil ( void ){  GtkWidget *pTable, *pEventBox, *pLabel, *vbox, *paddingbox;  GdkColor CouleurSoldeAlarmeVerteNormal, CouleurSoldeAlarmeVertePrelight,	   CouleurSoldeAlarmeOrangeNormal, CouleurSoldeAlarmeOrangePrelight,	   CouleurSoldeAlarmeRougeNormal, CouleurSoldeAlarmeRougePrelight,	   CouleurNomCompteNormal, CouleurNomComptePrelight;  GtkStyle *pStyleLabelNomCompte, *pStyleLabelSoldeCourant, 	   *pStyleLabelSoldePointe;  GSList *ordre_comptes_variable, *liste_operations_tmp, *devise;  gdouble montant, solde_global_courant, solde_global_pointe;  GList *children;  gint i;      if ( !nb_comptes )    return;  /* Initialisation des couleurs des diffrents labels */  /* Pourra tre intgr  la configuration gnrale */  CouleurSoldeAlarmeVerteNormal.red =     0.00 * 65535 ;  CouleurSoldeAlarmeVerteNormal.green =   0.50 * 65535 ;  CouleurSoldeAlarmeVerteNormal.blue =    0.00 * 65535 ;  CouleurSoldeAlarmeVertePrelight.red =   0.00 * 65535 ;  CouleurSoldeAlarmeVertePrelight.green = 0.90 * 65535 ;  CouleurSoldeAlarmeVertePrelight.blue =  0.00 * 65535 ;  CouleurSoldeAlarmeOrangeNormal.red =     0.90 * 65535 ;  CouleurSoldeAlarmeOrangeNormal.green =   0.60 * 65535 ;  CouleurSoldeAlarmeOrangeNormal.blue =    0.00 * 65535 ;  CouleurSoldeAlarmeOrangePrelight.red =   1.00 * 65535 ;  CouleurSoldeAlarmeOrangePrelight.green = 0.80 * 65535 ;  CouleurSoldeAlarmeOrangePrelight.blue =  0.00 * 65535 ;  CouleurSoldeAlarmeRougeNormal.red =     0.60 * 65535 ;  CouleurSoldeAlarmeRougeNormal.green =   0.00 * 65535 ;  CouleurSoldeAlarmeRougeNormal.blue =    0.00 * 65535 ;  CouleurSoldeAlarmeRougePrelight.red =   1.00 * 65535 ;  CouleurSoldeAlarmeRougePrelight.green = 0.00 * 65535 ;  CouleurSoldeAlarmeRougePrelight.blue =  0.00 * 65535 ;  CouleurNomCompteNormal.red =     0.00 * 65535 ;  CouleurNomCompteNormal.green =   0.00 * 65535 ;  CouleurNomCompteNormal.blue =    0.00 * 65535 ;  CouleurNomComptePrelight.red =   0.61 * 65535 ;  CouleurNomComptePrelight.green = 0.61 * 65535 ;  CouleurNomComptePrelight.blue =  0.61 * 65535 ;  /* Cration d'un label juste pour en rcuprer le style */  pLabel = gtk_label_new ("");    /* Initialisation du style  Nom du compte  */  pStyleLabelNomCompte = gtk_style_copy ( gtk_widget_get_style ( pLabel ));  pStyleLabelNomCompte->fg[GTK_STATE_NORMAL] = CouleurNomCompteNormal;  pStyleLabelNomCompte->fg[GTK_STATE_PRELIGHT] = CouleurNomComptePrelight;  /* Cration du cadre principal *//*   gtk_notebook_remove_page ( GTK_NOTEBOOK (frame_etat_comptes_accueil), 0 ); */  /* Remove previous child */  children = gtk_container_get_children(GTK_CONTAINER(frame_etat_comptes_accueil));  if ( children && children -> data)    gtk_container_remove ( GTK_CONTAINER(frame_etat_comptes_accueil),			   GTK_WIDGET(children -> data) );  /* Create the handle vbox  */  vbox = gtk_vbox_new ( FALSE, 6 );  gtk_container_add ( GTK_CONTAINER ( frame_etat_comptes_accueil ), vbox );  for ( devise = liste_struct_devises; devise ; devise = devise->next )    {      int devise_is_used = 0;      p_tab_nom_de_compte_variable = p_tab_nom_de_compte;      for ( i = 0 ; i < nb_comptes ; i++ )	{	  if ( DEVISE == ((struct struct_devise *) devise -> data) -> no_devise	       && ! COMPTE_CLOTURE )	    devise_is_used = 1;	  p_tab_nom_de_compte_variable++;	  	}      if ( !devise_is_used )	continue;  /* Cration du tableau dans lequel seront stocks les comptes avec leur     */  /* solde.                                                                   */  paddingbox = new_paddingbox_with_title ( vbox, FALSE,					   g_strdup_printf (_("Account balances in %s"),							      ((struct struct_devise *) devise -> data) -> nom_devise ));  pTable = gtk_table_new ( nb_comptes + 4, 8, FALSE );  gtk_box_pack_start ( GTK_BOX ( paddingbox ), pTable, FALSE, FALSE, 0 );  /* Cration et remplissage de la premire ligne du tableau */  pLabel = gtk_label_new (_("Reconciled balance"));  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_HORIZ_CENTER, MISC_VERT_CENTER );  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 2, 4, 0, 1 );  gtk_widget_show ( pLabel );  pLabel = gtk_label_new (_("Current balance"));  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_HORIZ_CENTER, MISC_VERT_CENTER );  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 5, 7, 0, 1 );  gtk_widget_show ( pLabel );  /* Affichage des comptes et de leur solde */  ordre_comptes_variable = ordre_comptes;  i = 1;  solde_global_courant = 0 ;  solde_global_pointe = 0 ;  /* Pour chaque compte non clotur (pour chaque ligne), */  /* crer toutes les colonnes et les remplir            */  do    {      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + GPOINTER_TO_INT ( ordre_comptes_variable->data );      if ( !COMPTE_CLOTURE &&	   DEVISE == ((struct struct_devise *) devise -> data) -> no_devise )	{	  /* Premire colonne : vide */	  pLabel = gtk_label_new ( g_strconcat ( (gchar *) NOM_DU_COMPTE, " : ", NULL ));	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );	  gtk_widget_set_style ( pLabel, pStyleLabelNomCompte );	  /* Est-il rellement ncessaire de crer des labels vides pour */	  /* remplir des colonnes vides d'un tableau ?                   */	  pLabel = gtk_label_new ( "" );	  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 0, 1, i, i+1 );	  gtk_widget_show ( pLabel );	  /* Deuxime colonne : elle contient le nom du compte */	  pLabel = gtk_label_new ( g_strconcat ( (gchar *) NOM_DU_COMPTE, " : ", NULL ));	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );	  gtk_widget_set_style ( pLabel, pStyleLabelNomCompte );	  /* Cration d'une boite  vnement qui sera rattache au nom du compte */	  pEventBox = gtk_event_box_new ();	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "enter-notify-event",			       GTK_SIGNAL_FUNC ( met_en_prelight ),			       NULL );	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "leave-notify-event",			       GTK_SIGNAL_FUNC ( met_en_normal ),			       NULL );	  gtk_signal_connect_object ( GTK_OBJECT ( pEventBox ),				      "button-press-event",				      GTK_SIGNAL_FUNC ( changement_compte ),				      GINT_TO_POINTER ( ordre_comptes_variable->data ) );	  gtk_table_attach ( GTK_TABLE ( pTable ), pEventBox,			     1, 2, i, i+1,			     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,			     20, 0 );	  gtk_widget_show ( pEventBox );	  gtk_container_add ( GTK_CONTAINER ( pEventBox ), pLabel );	  gtk_widget_show ( pLabel );	  /* Calcul du solde point : je ne sais plus pourquoi on fait	     ce calcul, sans doute le solde point n'est-il pas disponible	     en tant que variable globale */	  solde_pointe_affichage_liste = SOLDE_INIT;	  /* on commence la boucle : fait le tour de toutes les oprations */	  /* met  jour les solde_courant_affichage_liste et solde_pointe_affichage_liste */	  /* affiche l'opration  l'cran en fonction de l'affichage de R */	  liste_operations_tmp = LISTE_OPERATIONS;	  while ( liste_operations_tmp )	    {	      struct structure_operation *operation;	      operation = liste_operations_tmp -> data;	      /* si c'est une op de ventilation, on la saute */	      if ( !operation -> no_operation_ventilee_associee )		{		  /* quelle que soit l'opration (releve ou non), on calcule les soldes courant */		  montant = calcule_montant_devise_renvoi ( operation -> montant,							    DEVISE,							    operation -> devise,							    operation -> une_devise_compte_egale_x_devise_ope,							    operation -> taux_change,							    operation -> frais_change );		  /* si l'op est pointe ou releve, on ajoute ce montant au solde point */		  if ( operation -> pointe )		    solde_pointe_affichage_liste = solde_pointe_affichage_liste + montant;		}	      liste_operations_tmp = liste_operations_tmp -> next;	    }	  /* on enregistre le solde final */	  SOLDE_POINTE = solde_pointe_affichage_liste;	  /* Troisime colonne : elle contient le solde point du compte */	  pLabel = gtk_label_new ( g_strdup_printf ( "%4.2f", SOLDE_POINTE ));	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_RIGHT, MISC_VERT_CENTER );	  	  /* Mise en place du style du label en fonction du solde point */	  pStyleLabelSoldePointe = gtk_style_copy ( gtk_widget_get_style ( pLabel ));	  if ( SOLDE_POINTE >= SOLDE_MINI_VOULU )	    {	     pStyleLabelSoldePointe->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeVerteNormal;	     pStyleLabelSoldePointe->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeVertePrelight;	    }	  else	    {	     if ( SOLDE_POINTE >= SOLDE_MINI )	       {		pStyleLabelSoldePointe->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeOrangeNormal;		pStyleLabelSoldePointe->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeOrangePrelight;	       }	     else	       {		pStyleLabelSoldePointe->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeRougeNormal;		pStyleLabelSoldePointe->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeRougePrelight;	       }	    }	  gtk_widget_set_style ( pLabel, pStyleLabelSoldePointe );	  /* Cration d'une boite  vnement qui sera rattache au solde courant du compte */	  pEventBox = gtk_event_box_new ();	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "enter-notify-event",			       GTK_SIGNAL_FUNC ( met_en_prelight ),			       NULL );	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "leave-notify-event",			       GTK_SIGNAL_FUNC ( met_en_normal ),			       NULL );	  gtk_signal_connect_object ( GTK_OBJECT ( pEventBox ),				      "button-press-event",				      GTK_SIGNAL_FUNC ( changement_compte ),				      GINT_TO_POINTER ( ordre_comptes_variable->data ));	  gtk_table_attach ( GTK_TABLE ( pTable ), pEventBox,			     2, 3, i, i+1,			     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,			     0, 0 );	  gtk_widget_show ( pEventBox );	  gtk_container_add ( GTK_CONTAINER ( pEventBox ), pLabel );	  gtk_widget_show ( pLabel );	  /* Quatrime colonne : elle contient le symbole de la devise du compte */	  pLabel = gtk_label_new ( devise_name ( g_slist_find_custom ( liste_struct_devises,								       GINT_TO_POINTER ( DEVISE ),								       (GCompareFunc) recherche_devise_par_no ) -> data ) );	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );	  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,			     3, 4, i, i+1,			     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,			     5, 0 );	  gtk_widget_show ( pLabel );	  /* Cinquime colonne : vide */	  pLabel = gtk_label_new ("");	  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 4, 5, i, i+1 );	  gtk_widget_show ( pLabel );	  /* Sixime colonne : elle contient le solde courant du compte */	  pLabel = gtk_label_new ( g_strdup_printf ( "%4.2f", SOLDE_COURANT ));	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_RIGHT, MISC_VERT_CENTER );	  	  /* Mise en place du style du label en fonction du solde courant */	  pStyleLabelSoldeCourant = gtk_style_copy ( gtk_widget_get_style ( pLabel ));	  if ( SOLDE_COURANT >= SOLDE_MINI_VOULU )	    {	     pStyleLabelSoldeCourant->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeVerteNormal;	     pStyleLabelSoldeCourant->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeVertePrelight;	    }	  else	    {	     if ( SOLDE_COURANT >= SOLDE_MINI )	       {		pStyleLabelSoldeCourant->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeOrangeNormal;		pStyleLabelSoldeCourant->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeOrangePrelight;	       }	     else	       {		pStyleLabelSoldeCourant->fg[GTK_STATE_NORMAL] = CouleurSoldeAlarmeRougeNormal;		pStyleLabelSoldeCourant->fg[GTK_STATE_PRELIGHT] = CouleurSoldeAlarmeRougePrelight;	       }	    }	  gtk_widget_set_style ( pLabel, pStyleLabelSoldeCourant );	  /* Cration d'une boite  vnement qui sera rattache au solde point du compte */	  pEventBox = gtk_event_box_new ();	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "enter-notify-event",			       GTK_SIGNAL_FUNC ( met_en_prelight ),			       NULL );	  gtk_signal_connect ( GTK_OBJECT ( pEventBox ),			       "leave-notify-event",			       GTK_SIGNAL_FUNC ( met_en_normal ),			       NULL );	  gtk_signal_connect_object ( GTK_OBJECT ( pEventBox ),				      "button-press-event",				      GTK_SIGNAL_FUNC ( changement_compte ),				      GINT_TO_POINTER ( ordre_comptes_variable->data ));	  gtk_table_attach ( GTK_TABLE ( pTable ), pEventBox,			     5, 6, i, i+1,			     GTK_FILL| GTK_SHRINK, GTK_FILL| GTK_SHRINK,			     0, 0 );	  gtk_widget_show ( pEventBox );	  gtk_container_add ( GTK_CONTAINER ( pEventBox ), pLabel );	  gtk_widget_show ( pLabel );	  /* Septime colonne : elle contient le symbole de la devise du compte */	  pLabel = gtk_label_new ( devise_name((struct struct_devise *)(g_slist_find_custom ( liste_struct_devises,									  GINT_TO_POINTER ( DEVISE ),									  (GCompareFunc) recherche_devise_par_no )-> data )));	  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );	  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,			     6, 7, i, i+1,			     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,			     5, 0 );	  gtk_widget_show ( pLabel );	  /* Huitime colonne : vide */	  pLabel = gtk_label_new ("");	  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 7, 8, i, i+1 );	  gtk_widget_show ( pLabel );	  /* ATTENTION : les sommes effectues ici prsupposent que	     TOUS les comptes sont dans la MME DEVISE !!!!!        */	  solde_global_courant += SOLDE_COURANT ;	  solde_global_pointe += SOLDE_POINTE ;	}      i++;    }  while ( ( ordre_comptes_variable = ordre_comptes_variable->next ) );  /* Cration de la (nb_comptes + 2)ime ligne du tableau : vide */  pLabel = gtk_label_new ( "" );  gtk_table_attach_defaults ( GTK_TABLE ( pTable ), pLabel, 0, 1, i, i+1 );  gtk_widget_show ( pLabel );  /* Cration et remplissage de la (nb_comptes + 3)ime ligne du tableau :     elle contient la somme des soldes de chaque compte */  /* Deuxime colonne */  pLabel = gtk_label_new ( COLON(_("Global balances")));  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,		     1, 2, i+1, i+2,		     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,		     20, 0 );  gtk_widget_show ( pLabel );  /* Troisime colonne : elle contient le solde total point des comptes */  pLabel = gtk_label_new ( g_strdup_printf ( "%4.2f", solde_global_pointe ));  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_RIGHT, MISC_VERT_CENTER );  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,		     2, 3, i+1, i+2,		     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,		     0, 0 );  gtk_widget_show ( pLabel );  /* Quatrime colonne : elle contient le symbole de la devise du compte */  pLabel = gtk_label_new ( devise_name((struct struct_devise *)				       (g_slist_find_custom ( liste_struct_devises,							      (gpointer) ((struct struct_devise *) devise -> data) -> no_devise,							      (GCompareFunc) recherche_devise_par_no )-> data )) );  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,		     3, 4, i+1, i+2,		     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,		     5, 0 );  gtk_widget_show ( pLabel );  /* Sixime colonne : elle contient le solde total courant des comptes */  pLabel = gtk_label_new ( g_strdup_printf ( "%4.2f", solde_global_courant ));  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_RIGHT, MISC_VERT_CENTER );  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,		     5, 6, i+1, i+2,		     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,		     0, 0 );  gtk_widget_show ( pLabel );  /* Septime colonne : elle contient le symbole de la devise du compte */  pLabel = gtk_label_new ( devise_name ((struct struct_devise *)					(g_slist_find_custom ( liste_struct_devises,							       (gpointer) ((struct struct_devise *) devise -> data) -> no_devise,							       (GCompareFunc) recherche_devise_par_no )-> data )) );  gtk_misc_set_alignment ( GTK_MISC ( pLabel ), MISC_LEFT, MISC_VERT_CENTER );  gtk_table_attach ( GTK_TABLE ( pTable ), pLabel,		     6, 7, i+1, i+2,		     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK,		     5, 0 );  gtk_widget_show ( pLabel );  gtk_widget_show_all ( paddingbox );  gtk_widget_show_all ( pTable );    }  gtk_widget_show_all (vbox);  /* Cration de la (nb_comptes + 4)ime (et dernire) ligne du tableau : vide *//*  pLabel = gtk_label_new ( "" );  gtk_table_attach_defaults ( GTK_TABLE ( pTable ),			      pLabel,			      0, 1,			      i+2, i+3 );  gtk_widget_show ( pLabel ); */}