Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/03/2010, à 18:45

Fake

[C / GTK] Actualiser une fenetre apres modification de variables

Bonjour,

Je suis en train de construire une application simple affichant dans une fenêtre une liste de mots un par un et on doit les recopier dans un champs de texte juste en dessous. Le programme permet de sauvegarder sa configuration (polices d'affichage, bar d'état ou pas) dans un fichier texte et j'en suis à permettre le chargement du fichier de config.

J'arrive bien à lire le fichier de config et les différentes variables sont bien mises à leur nouvelles valeurs comme il faut mais je n'arrive pas à faire en sorte que ces nouvelles valeurs soient prisent en compte.

Si je pouvais éviter de modifier un par un les paramètres ça serait bien car si je fait évoluer mon programme, je risque d'en avoir une pelleté. Par contre je m'en fout de perdre ce qui a déjà été fait dans la fenêtre principale, du coup je cherche quelque chose qui relancerait gtk_main()... ou quelque chose comme ça...

Pour l'instant tout compile et tout tourne sauf que ma config chargée dans mes variables n'est pas prise en compte.

Merci d'avance...

#include <tout ce qu'il faut>

char config[256] = "Sans Bold 20";

/* ---------------------------------*/
/* Loading configuration from a file*/
/* ---------------------------------*/
void load_configuration(GtkWidget *widget, gpointer gptargs)
{
	...
	GtkResponseType dialogresponse ;
	GtkWidget *dialog;
	...
	/* dialogue pour choisir le nouveau fichier de conf */
	...
	
	if(dialogresponse == GTK_RESPONSE_OK)
	{
		char *newconffile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
		/* chargement du fichier dans les variables décrivant la config */
		load_conffile(newconffile);

		/* ACTUALISER LA FENETRE AVEC LES NOUVELLES VARIABLES */

		g_free(newconffile);
	}
	gtk_widget_destroy(dialog);
}

/* --------------- */
/* Fonction main() */
/* --------------- */
int main( int argc, char *argv[])
{
	/* Widgets définitions */

	/* Connections */
	GPtrArray *loadconfigargs;
	loadconfigargs = g_ptr_array_sized_new(2);
	g_ptr_array_add(loadconfigargs, mainwindow);
	g_ptr_array_add(loadconfigargs, "defaultcopie.conf");
	g_signal_connect(G_OBJECT(menuloadconf), "activate", G_CALLBACK(load_configuration), loadconfigargs);
	
	/* Main loop */
	
	gtk_widget_show_all(window);
	if(! viewstatusbar) 
		gtk_widget_hide(statusbar);
	gtk_main();

	return 0;
}

Dernière modification par Fake (Le 17/03/2010, à 19:03)

Hors ligne