Récupérer et afficher donnée d'un ss-programe
cap'tain sheeps
-
cap'tain sheeps -
cap'tain sheeps -
Bonjour et merci de votre aide ou de votre simple intention de m'aider.
Mon problème est le suivant: J'aimerais mettre à jour un champ de texte
(Entry en GTK) dans ma fenêtre principale pour qu'il affiche le chemin du fichier que l'utilisateur est allé cherché dans une fenêtre secondaire au programme (un gtk_chooser_dialog).
Le problème est que je ne sais pas comment faire pour mettre à jour la fenêtre principale et plus particulièrerment ce champ de texte.
Existe-t'il un moyen simple de faire résoudre ce problème.
Si ma question n'est pas assez claire, voyez par vous même avec mon code:
.
.
.
Mon problème est le suivant: J'aimerais mettre à jour un champ de texte
(Entry en GTK) dans ma fenêtre principale pour qu'il affiche le chemin du fichier que l'utilisateur est allé cherché dans une fenêtre secondaire au programme (un gtk_chooser_dialog).
Le problème est que je ne sais pas comment faire pour mettre à jour la fenêtre principale et plus particulièrerment ce champ de texte.
Existe-t'il un moyen simple de faire résoudre ce problème.
Si ma question n'est pas assez claire, voyez par vous même avec mon code:
.
.
.
#include <stdlib.h>
#include <gtk/gtk.h>
// site pour les widgets:
//http://developer.gnome.org/gtk/2.24/ch02.html
// pour les dialog:
//http://www.gtk-fr.org/wakka.php?wiki=GtkDialog
//Créé la boîte de dialogue qui va nous demander de sélectionner un fichier pour récupérer son chemin
void TraitementBoutonFil(GtkWidget* pWidget, gpointer data);
void TraitementBoutonPrf(GtkWidget* pWidget, gpointer data);
//à trier
gchar* cheminFichier;
int main(int argc,char **argv)
{
//Ouverture de la librairie graphique GTK+
gtk_init(&argc,&argv);
//Glossaire des widgets graphiques
GtkWidget* FenetrePrincipale = NULL; //Fenêtre principale
GtkWidget* frame = NULL; //Frame principale(faisant toute la fenêtre
GtkWidget* table = NULL; //Tableau graphique pour placer les éléments
GtkWidget* LabelBienvenue = NULL; //Label de présentation
gchar* TexteBienvenue = NULL; //Texte associé au label de présentation
GtkWidget* boxBienvenue = NULL; //Box contenant l'alignement du label de bienvenue
GtkWidget* alignementBienvenue = NULL; //Alignement du label de bienvenue
GtkWidget* LabelFil = NULL; //Label de renseignement du fichier de connections
gchar* TexteFil = NULL; //Texte associé au label de connections
GtkWidget* EntryFil = NULL; //Entry du chemin du fichier de connections
GtkWidget* BoutonFil = NULL; //Bouton pour sélectionner le fichier de connections
GtkWidget* boxFil = NULL; //Box pour contenir l'alignement du bouton de connections
GtkWidget* alignementFil = NULL; //Alignement du bouton des connections
GtkWidget* LabelPrf = NULL; //Label de renseignement de la description des connecteurs
gchar* TextePrf = NULL; //Texte associé au label de description
GtkWidget* EntryPrf = NULL; //Entry du chemin du fichier de définition connecteurs
GtkWidget* BoutonPrf = NULL; //Bouton pour sélectionner le fichier de description
GtkWidget* boxPrf = NULL; //Box pour contenir l'alignement du bouton de description
GtkWidget* alignementPrf = NULL; //Alignement du bouton de description
//******************************************************************************************
// Création de la fenêtre
//******************************************************************************************
FenetrePrincipale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(FenetrePrincipale), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
//Titre de la fenêtre
gtk_window_set_title(GTK_WINDOW(FenetrePrincipale), "Generateur de code Winapass5000");
//Taille de la fenêtre
gtk_window_set_default_size(GTK_WINDOW(FenetrePrincipale), 700, 500);
//Positionnement de la fenêtre
gtk_window_set_position(GTK_WINDOW(FenetrePrincipale),GTK_WIN_POS_CENTER);
//******************************************************************************************
// Création de la hiérarchie graphique de la fenêtre
//******************************************************************************************
frame = gtk_frame_new ("");
table = gtk_table_new(8, 4, TRUE);
gtk_container_add (GTK_CONTAINER (frame), table);
//***************************************************
//Label de bienvenue
//***************************************************
//Formalisation du texte
TexteBienvenue = g_locale_to_utf8( "<span size=\"xx-large\"><b>Générateur Winapass5000</b></span>",
-1, NULL, NULL, NULL);
//Création du label
LabelBienvenue = gtk_label_new(TexteBienvenue);
//Libération de la mémoire
g_free(TexteBienvenue);
//Formalisation grâce aux balises pango
gtk_label_set_use_markup(GTK_LABEL(LabelBienvenue), TRUE);
//Création de la box pour contenir l'alignement du label
boxBienvenue = gtk_vbox_new(TRUE, 1);
//Création de l'alignement du label
alignementBienvenue = gtk_alignment_new(0.5, 0, 0, 0);
//Hiérarchie des composants graphiques pour le label de bienvenue
gtk_container_add (GTK_CONTAINER(alignementBienvenue), LabelBienvenue);
gtk_container_add (GTK_CONTAINER (boxBienvenue), alignementBienvenue);
gtk_table_attach_defaults(GTK_TABLE(table), boxBienvenue, 0, 4, 0, 1 );
//***************************************************
//Label de renseignement du fichier de connections
//***************************************************
//Formalisation du texte
TexteFil = g_locale_to_utf8( "Veuillez renseigner le fichier de connections (fichier.FIL) :",
-1, NULL, NULL, NULL);
//Création du label
LabelFil = gtk_label_new(TexteFil);
//Libération de la mémoire
g_free(TexteFil);
//Placement du label dans le tableau
gtk_table_attach_defaults(GTK_TABLE(table), LabelFil, 0, 3, 1, 2);
//***************************************************
//Bouton de renseignement du fichier de connections
//***************************************************
//Création du bouton
BoutonFil = gtk_button_new_with_mnemonic("Parcourir");
//Création de la box pour contenir l'alignement du bouton
boxFil = gtk_vbox_new(TRUE, 1);
//Création de l'alignement du bouton
alignementFil = gtk_alignment_new(0, 0.5, 0, 0);
//Hiérarchie des composants graphiques
gtk_container_add (GTK_CONTAINER(alignementFil), BoutonFil);
gtk_container_add (GTK_CONTAINER (boxFil), alignementFil);
gtk_table_attach_defaults(GTK_TABLE(table), boxFil, 3, 4, 1, 2);
//Ecoute du bouton
g_signal_connect(G_OBJECT(FenetrePrincipale), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(BoutonFil), "clicked", G_CALLBACK(TraitementBoutonFil), NULL);
//***************************************************
//Entry du chemin du fichier de connections
//***************************************************
//Création de l'entry
EntryFil = gtk_entry_new();
//Placement du label dans le tableau
gtk_table_attach_defaults(GTK_TABLE(table), EntryFil, 1, 3, 2, 3);
//************************************************************
//Label de renseignement du fichier de définition connecteurs
//************************************************************
//Formalisation du texte
TextePrf = g_locale_to_utf8("Veuillez renseigner le fichier de définition des connecteurs (fichier.PRF) :",
-1, NULL, NULL, NULL);
//Création du label
LabelPrf = gtk_label_new(TextePrf);
//Libération de la mémoire
g_free(TextePrf);
//Placement du label dans le tableau
gtk_table_attach_defaults(GTK_TABLE(table), LabelPrf, 0, 3, 3, 4);
//*************************************************************
//Bouton de renseignement du fichier de définition connecteurs
//*************************************************************
//Création du bouton
BoutonPrf = gtk_button_new_with_mnemonic("Parcourir");
//Création de la box pour contenir l'alignement du bouton
boxPrf = gtk_vbox_new(TRUE, 1);
//Création de l'alignement du bouton
alignementPrf = gtk_alignment_new(0, 0.5, 0, 0);
//Hiérarchie des composants graphiques
gtk_container_add (GTK_CONTAINER(alignementPrf), BoutonPrf);
gtk_container_add (GTK_CONTAINER (boxPrf), alignementPrf);
gtk_table_attach_defaults(GTK_TABLE(table), boxPrf, 3, 4, 3, 4);
//Ecoute du bouton
g_signal_connect(G_OBJECT(FenetrePrincipale), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(BoutonPrf), "clicked", G_CALLBACK(TraitementBoutonPrf), NULL);
//*************************************************************
//Entry du chemin du fichier de définition connecteurs
//*************************************************************
//Création de l'entry
EntryPrf = gtk_entry_new();
//Placement du label dans le tableau
gtk_table_attach_defaults(GTK_TABLE(table), EntryPrf, 1, 3, 4, 5);
//***************************************************
//Ajout des composants dans la fenêtre et affichage
//***************************************************
gtk_container_add(GTK_CONTAINER(FenetrePrincipale),frame);
gtk_widget_show_all(FenetrePrincipale);
gtk_main();
return EXIT_SUCCESS;
}
//là faudrait faire un tableau de char* pour récupérer le nom des fichiers (mouais bof)
void TraitementBoutonFil(GtkWidget* pWidget, gpointer donnee)
{
//Glossaire des widgets graphiques de TraitementBoutonFil
GtkWidget* FenetreSelection;
GtkWidget* FenTestChemin;
GtkWidget* FenetreParent;
FenetreParent = GTK_WIDGET(donnee);
//Creation de la fenetre de selection
FenetreSelection = gtk_file_chooser_dialog_new("Ouvrir...", GTK_WINDOW(FenetreParent), GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
GTK_RESPONSE_OK, NULL);
//On limite les actions a cette fenetre
gtk_window_set_modal(GTK_WINDOW(FenetreSelection), TRUE);
//Affichage de la fenetre
switch(gtk_dialog_run(GTK_DIALOG(FenetreSelection)))
{
case GTK_RESPONSE_OK:
//Recuperation du chemin
cheminFichier = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FenetreSelection));
gtk_editable_insert_text("")//mouais non hein!
//après ca osef un peu... de toute facon ca va changer
FenTestChemin = gtk_message_dialog_new(GTK_WINDOW(FenetreSelection), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO,
GTK_BUTTONS_OK, "Chemin du fichier :\n%s", cheminFichier);
gtk_dialog_run(GTK_DIALOG(FenTestChemin));
gtk_widget_destroy(FenTestChemin);
break;
default:
//[aucune instruction]
break;
}
gtk_widget_destroy(FenetreSelection);
}
void TraitementBoutonPrf(GtkWidget* pWidget, gpointer donnee)
{
//Glossaire des widgets graphiques de TraitementBoutonPrf
GtkWidget* FenetreSelection;
GtkWidget* FenTestChemin;
GtkWidget* FenetreParent;
gchar* cheminFichier;
FenetreParent = GTK_WIDGET(donnee);
//Creation de la fenetre de selection
FenetreSelection = gtk_file_chooser_dialog_new("Ouvrir...", GTK_WINDOW(FenetreParent), GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
GTK_RESPONSE_OK, NULL);
//On limite les actions a cette fenetre
gtk_window_set_modal(GTK_WINDOW(FenetreSelection), TRUE);
//Affichage de la fenetre
switch(gtk_dialog_run(GTK_DIALOG(FenetreSelection)))
{
case GTK_RESPONSE_OK:
//Recuperation du chemin
cheminFichier = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FenetreSelection));
//après ca osef un peu... de toute facon ca va changer
FenTestChemin = gtk_message_dialog_new(GTK_WINDOW(FenetreSelection), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO,
GTK_BUTTONS_OK, "Chemin du fichier :\n%s", cheminFichier);
gtk_dialog_run(GTK_DIALOG(FenTestChemin));
gtk_widget_destroy(FenTestChemin);
g_free(cheminFichier);
break;
default:
//[aucune instruction]
break;
}
gtk_widget_destroy(FenetreSelection);
}
A voir également:
- Récupérer et afficher donnée d'un ss-programe
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment recuperer une video sur youtube - Guide
- Comment recuperer un numero supprimé - Accueil - Android