Lance directement ton programme depuis la console DOS, c'est mieux ainsi, au moins la fenêtre reste ouverte, même après la fin du programme et tu pourras alors tester ce que tu veuxEnvoyé par pepsister
![]()
Lance directement ton programme depuis la console DOS, c'est mieux ainsi, au moins la fenêtre reste ouverte, même après la fin du programme et tu pourras alors tester ce que tu veuxEnvoyé par pepsister
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Envoyé par pepsister
Il faut tout d'abord lancer tonn Shell: Menu démarrer/Exécuter et tu tapes cmd.exe.
Ensuite tu vas dans le dossier où se situe ton exécutable puis tu tapes sont nom avec son extension tout bêtement !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
je n'y arrive pas il me mets tout le temps que mon fichier est introuvable
j'ai mis c:\DocumentsandSettings\pepita\Projets\projet2
et il me dit qu'il ne reconnait pas le chemin
Attention aux espace:Envoyé par pepsister
Mais normalement il ne prend pas directement en compte les espaces, je crois qu'il faut mettre entre guillemets mais le mieux est encore que tu entres dans les dossiers un par un histoire de pas trop t'embêter avec ca !
Code : Sélectionner tout - Visualiser dans une fenêtre à part c:\Documents and Settings\pepita\Projets\projet2
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
le deuxième souci c'est que j'ai essayé de changer mes combobxentry en combobox classique comme tu m'as dit de le faire,
j'ai bien mis:
au lieu de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 text = gtk_combo_box_get_active_text (combobox);
mais quand je compile il m'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 text=gtk_entry_get_text(GTK_ENTRY (GTK_BIN (combobox)->child));
text est défini comme xonst gchar *text
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Warning] assignment makes pointer from integer without a cast
Puis-je voir le code complet au moins de la fonction ? Quelle version de GTK+ ?
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
quoique je fasse il me mets qu'il ne connait pas le chemin
quand je fais C: ca passe mais après Documents and Settings ca ne passe pas
ilo n'y a pas d'autres moyens de voir mon printf pour savoir qu'elle valeur prend value
Cherche dans les préférences de ton projet sur Dev-cpp, ca y est c'est sûr mais faut chercher c'est tout ou passe sur Code::Blocks car de toutes manières Dev-cpp n'est plus développé et encore moins maintenu !
Mais cette partie des réglages du type de ton projet y est c'est plus qu'une certitude !
Tu n'as pas essayé d'entrer le début de Document puis d'appuyer sur TAB pour l'auto complétion ? Il devrait mettre automatiquement les " puis apres tu valides et tu entres dans le reste des dossiers pour arriver là où tu veux !Envoyé par pepsister
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
en fait pour mettre
il faut avoir une version plus recente de gtk la mienne c'est 2.4 et en dessous il me marque aussi fonction indéfini donc il ne la connait pas. Du coup je pense que je vais rester avec une comboboxentry.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gtk_combo_box_get_active_text (combobox);
Sinon pour mon problème où quand je sélectionne le nombre 31 dans la combobox1 je veux qu'il me propose dans la combobox2 que les mois en 31.
bizarrement ca marche quand je choisi du premier coup 31 par contre si je choisi d'abord 2 imaginons il me propose tous les mois si je change pour mettre 31 il me propose tous les mois
Ainsi faudrait qu'à chaque fois que je change de nombre il réinitialise la combobox2 en fait, mais est ce possible?
merci
Nan ... faut jamais s'avouer vincu aussi rapidement:Envoyé par pepsister
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #if GTK_CHECK_VERSION (2, 6, 0) #define combo_box_active_get_text(combo_box) gtk_combo_box_get_active_text (combo_box) #else char *combo_box_active_get_text (GtkComboBox *combo_box) { gchar *s_text = NULL; gboolean b_ret = FALSE; GtkTreeIter iter; g_return_val_if_fail (combo_box != NULL, s_text); b_ret = gtk_combo_box_get_active_iter (combo_box, &iter); if (b_ret) { GtkTreeModel *p_model = NULL; p_model = gtk_combo_box_get_model (combo_box); if (p_model != NULL) { gtk_tree_model_get (p_model, &iter, 0, &s_text, -1); } } return s_text; } #endifIl faut effectivement à chaque fois vider ta liste combo, c'est faisable de cette manière:Sinon pour mon problème où quand je sélectionne le nombre 31 dans la combobox1 je veux qu'il me propose dans la combobox2 que les mois en 31.
bizarrement ca marche quand je choisi du premier coup 31 par contre si je choisi d'abord 2 imaginons il me propose tous les mois si je change pour mettre 31 il me propose tous les mois
Ainsi faudrait qu'à chaque fois que je change de nombre il réinitialise la combobox2 en fait, mais est ce possible?
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void combo_box_clear (GtkComboBox *p_combo_box) { GtkTreeModel *p_tree_model = NULL; g_return_if_fail (p_combo_box != NULL); p_tree_model = gtk_combo_box_get_model (p_combo_box); gtk_list_store_clear (GTK_LIST_STORE (p_tree_model)); }
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
je voudrais mettre la procédure d'initialisation de la combobox directement dans ma fonction clicked du bouton de la combobox et éviter de faire une nouvelle fonction est ce possible? En fait j'ai essayé je l'ai mis en début de ma fonction pour qu'il initialise dès le début mais dans ce cas je n'ai pas le choix dans ma combobox1 quoi que je sélectionne il me met 31 et dans la combobox2 j'ai tous les mois une infinité de fois? donc où puis je la mettre? Faut il que je la laisse dans la fonction clear et dans ce cas où appeller cette fonction et comment?
de plus je ne comprend pas très bien ce qu'est GtkTreeModel?
je vous remets le code de ma fonction clicked du bouton:
merci,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 void on_comboboxentry1_changed(GtkComboBox *combobox,gpointer user_data) { int value = 0; const gchar *text = NULL; GtkComboBox * p_combo2 = user_data; /*récupération de la valeur dans la combobox1*/ text=gtk_entry_get_text(GTK_ENTRY (GTK_BIN (combobox)->child)); //text = gtk_combo_box_get_active_text (combobox); /*on transcrit la chaine en un nombre*/ //value=strtol(text, NULL,0); value = (int) strtol (text, NULL,0); printf("%d",value); if (value==31) { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } else { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("fevrier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("avril")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juin")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("septembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("novembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } }
Heu initialisation de quel GtkComboBox ? Du second ok mais celui là même qui utilise ce callback, ca n'aurais aucun sens ! Et de toutes manières il faut pas essayer de faire des fonctions de plus en plus grosses, il faut garder un certains découpage donc une fonction d'initialisation du second GtkComboBox qui prend en paramètre ce même combo (ici celui des mois en l'occurence) et le chiffre choisi depuis le premier combo. Le remplissage se ferais alors dans la fonction prévue pour avec les conditions et tout... Une vraie fonction spécialisée quoiEnvoyé par pepsister
Un GtkTreeModel n'est autre en fait qu'un widget de type GtkListStore ou GtkTreeStore. C'est un widget qui permet de stocker le modèle de données (il existe aussi le terme de magasin) du widget courant. Pour certains widgets on peu (ou même parfois on doit comme c'est le cas avec GtkTreeView) créer un magasin de données personnalisé. J'explique tout cela dans mon nouveau tutoriel destiné au GtkComboBox et GtkComboBoxEntry, il est en cours de correction donc sa sortie est imminente mais il est déjà disponible sur ma page de developpez.com si le coeur t'en ditEnvoyé par pepsister
Attention, on ne parle pas de bouton ici mais du GtkComboBox, il faut pas mélanger, j'ai faillit croire un instant que c'était un callback pour un GtkButton donc attention aux termes utilisés. Il faut comme on m'a dit un jour à mes début en C, apprendre à parler le C (pour toi ici c'est GTK+) en français avant de vouloir de programmer avec et tu peux me croire, ca sert pour mieux se faire comprendreEnvoyé par pepsister
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
j'ai essayé de mettre la fonction d'initialisation pour ma combobox2 mais elle ne marche pas et je pense que c'est un de mes appelle qui ne va pas.
Voici la fonction comme vous me l'avez mis plus haut dans mon callback.c
voici mon callaback.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void combobox2_clear (GtkComboBox *p_combo_box) { GtkTreeModel *p_tree_model = NULL; g_return_if_fail (p_combo_box != NULL); p_tree_model = gtk_combo_box_get_model (p_combo_box); gtk_list_store_clear (GTK_LIST_STORE (p_tree_model)); }
et voici l'appelle dans mon interface.c je pense que c'est là qu'il y a un problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void combobox2_clear (GtkComboBox *p_combo_box);
j'espère que je parle bien gtk+ cette fois ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 g_signal_connect (G_OBJECT (comboboxentry2), "clicked", G_CALLBACK (combobox2_clear), NULL);![]()
merci
Ce n'est pas un appel arrrrggg... c'est une connection d'un callback à un widget donc une gestion d'un événement utilisateur ! Toi ce que tu veux, c'est appeler la fonctin combobox2_clear à partir d'une autre fonction non ?Envoyé par pepsister
Donne moi le code de l'autre fonction (callback) et l'enregistrement de ce callback que tu as fait (donc pour combobox1) et montre moi ce que tu as essayé de faire exactement pour que je sache exactement ce que tu veux car là j'dois dire que je ne sais pas si tu veux faire un callback pour effacer ou simplement un appel à partir d'une autre fonction (ton callback du combobox1) !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
je souhaite que lorsque l'utilisateur choisit un nombre dans la combobox1, on lui propose dans la combobox2 les mois qui vont mais pour cela il faut qu'à chaque fois qu'on modifie le nombre dans la combobox1 ca change les mois dans la combobox2. En effet, si je choisis 3 dans la combobox1 il me propose tous les mois de l'année (jusque là normal) mais si je décide de changer le nombre dans la combobox1 par exemple 31 là il me met la même liste alors qu'il devrait me proposé seulement janvier, mars, mai, juillet, aout, octobre,decembre.
je vous donne ma fonction comme vous me le demander (callback.c)
et voici l'appelle dans l'interface.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 void on_comboboxentry1_changed(GtkComboBox *combobox,gpointer user_data) { int value = 0; const gchar *text = NULL; GtkComboBox * p_combo2 = user_data; /*récupération de la valeur dans la combobox1*/ text=gtk_entry_get_text(GTK_ENTRY (GTK_BIN (combobox)->child)); //text = gtk_combo_box_get_active_text (combobox); /*on transcrit la chaine en un nombre*/ //value=strtol(text, NULL,0); value = (int) strtol (text, NULL,0); printf("%d",value); if (value==31) { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } else { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("fevrier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("avril")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juin")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("septembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("novembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } }
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 g_signal_connect (G_OBJECT (comboboxentry1), "changed", G_CALLBACK (on_comboboxentry1_changed), (gpointer)comboboxentry2);
Bin comme je disais, je ne vois pas le problème, y'a juste un seul appel à faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 /* Fonction qui vide un combobox: */ void combobox2_clear (GtkComboBox *p_combo_box) { GtkTreeModel *p_tree_model = NULL; g_return_if_fail (p_combo_box != NULL); p_tree_model = gtk_combo_box_get_model (p_combo_box); gtk_list_store_clear (GTK_LIST_STORE (p_tree_model)); } /* Callback du combobox1: */ void on_comboboxentry1_changed(GtkComboBox *combobox,gpointer user_data) { int value = 0; const gchar *text = NULL; GtkComboBox * p_combo2 = user_data; text = gtk_entry_get_text(GTK_ENTRY (GTK_BIN (combobox)->child)); value = (int) strtol (text, NULL,0); /* Franck.H - On efface le comboboxentry2 */ combobox2_clear (p_combo2); if (value==31) { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } else { gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("janvier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("fevrier")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mars")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("avril")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("mai")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juin")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("juillet")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("aout")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("septembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("octobre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("novembre")); gtk_combo_box_append_text (GTK_COMBO_BOX (p_combo2), _("decembre")); } }
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
en fait je pensais que tout ce qu'on mettait dans callback.c était mis dans callback.h (là ce n'est pas la peine c'est bien ca?) et je pensais surtout que tout ce qui était mis dedans était les fonctions appeller à l'aide d'un callback dans interface.c. Je pensais vraiment qu'on ne mettait que les fonctions des boutons et des flèches des combo auxquels on associait un évènement.
merci beaucoup
![]()
Bin disons que tu peux mettre ce que tu veux dedans mais bien ranger c'est mieux donc si tu as des fonction gérant tes GtkComboBox comme le vidage bin rien ne t'empêches de mettre ces fonction (même en privée) dans ce module !Envoyé par pepsister
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Partager