Salut les filles,
je m'attaque actuellement a la creation de mes propres widgets. Cela ne semble pas particulierement complique avec le tuto de Franck jusqu'a ce que l'on essaye.
Le probleme ne viens pas vraiment de la creation mais plutot de l'identification de mon objet , je m'explique :
je veux creer un object par exemple calendar2 qui soit simplement une representation graphique du calendar original de Gtk. La representation voulu c'est simplement une frame avec un label.
Voila la structure :
je vous epargne le reste ce n'est pas vraiment necessaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct _GtkCalendar2{ GtkWidget widget; const gchar *label; };
Voila ma function new :
Voila ou j'en suis. Ce que j'aimerais savoir c'est ou je doit creer ma frame avec mon label pour dire que c'est ca mon calendar2
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 GtkWidget *gtk_calendar2_new(const gchar *label) { GtkCalendar2 *calendar2; if(label != NULL) calendar2 = gtk_type_new(gtk_calendar2_get_type()); if(calendar2 != NULL) { calendar2->label = label; } return GTK_WIDGET(calendar2); }
parceque dans le cas ou je rajoute dans la fonction new quelquechose de ce style
if(calendar2 != NULL)
{
calendar2 = gtk_frame_new(label);
}
Cela va bien me creer le composant que je veux a chaque fois que je ferais un gtk_calendar_new("mon Label") mais le probleme viens apres sur l'identification puisque mon widget sera reconnu comme etant une frame et pas un CALENDAR2
Donc GTK_IS_CALENDAR2(widget) me retourne faux mais GTK_IS_FRAME(widget) me retourne vrai ! Ce qui est logique puisque dams le dans la fonction new je dis que mon calendar2 = frame. Ma question est comment je peux faire ca mais tout en ayant mon object identifie comme un CALENDAR2.
la question est generale : comment faire pour creer un widget avec d'autre widget tout en ayant celui-ci identife par son propre type.
Je seche la dessus donc si vous pouviez m'expliquer un peu. je suppose que Franck devrait savoir..
Merci d'avance...
Partager