Aller au menu - Aller au contenu

Icône Installer GTK+ sous Windows

Avatar
Avatar
Avatar
Avatar
Mise à jour : 12/07/2009
Difficulté : Facile Facile Creative Commons BY-SA
1 945 visites depuis 7 jours, dont 331 sur ce chapitre classé 71/786
Ce tutoriel n'est plus mis à jour, nous vous recommandons d'aller télécharger GTK sur le site officiel.

Le BIG tuto GTK n'est plus maintenu.
Avec l'équipe nous allons voir comment le réorganiser et enlever ce qui ne va plus pour vous éviter d'éventuels problèmes.
Quant à le continuer, pour le moment ce n'est pas envisageable. Peut être qu'un membre souhaiterai le faire ?



Bonjour à tous,

Dans ce chapitre, je vais vous expliquer comment installer la bibliothèque GTK+ (version 2.10.12). Si certains ont déjà essayé de l'installer, ils ont dû se rendre compte que c'était vraiment le bazar, je confirme... ^^

Pour que vous n'ayez pas à télécharger plein de fichiers, je les ai regroupés dans un programme d'Installation ! :magicien:

Donc dites-vous que vous avez la chance d'avoir devant vous, un tuto qui vous explique comment installer cette bibliothèque pour Dev-C++, Visual C++ (fonctionne avec la version Express) et Code::Blocks :) .
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Télécharger le Pack GTK+ & le Runtime

Pour commencer, téléchargez le Pack GTK+ que j'ai réalisé.

Pack GTK+ 2.10 (22,8Mo)

Ce Pack contient :

- GTK+ 2.10.12
- GLib 2.13.1
- ATK 1.19.1

- Cairo 1.2.6
- Pango 1.16.4
- Gettext 0.14.5
- Libiconv 1.9.1
- Libpng 1.2.8
- Tiff 3.7.4
- Zlib123 dll

Ensuite, téléchargez le Runtime GTK+ (8.1Mo).

Le Runtime est un programme qui va installer des DLL, etc... dans les ressources de Windows pour que vos applications GTK+ puissent fonctionner ! ;)

Voilà, nous sommes maintenant prêts pour Installer GTK+ ! :pirate:

Installation

Nous entrons à présent dans le vif du sujet : l'installation ! :)

Si vous avez déjà essayé d'installer la bibliothèque GTK+, assurez-vous d'avoir désinstallé et supprimé tous les fichiers que vous avez ajoutés. Et si vous avez modifié les options de votre logiciel, je vous conseille même de le réinstaller pour être sûr qu'il n'y ait pas de problème(s) mais si vous avez déjà installé GTK+ avec mon tutorial dans une ancienne version du Pack et que vous voulez seulement mettre à jour votre version de GTK+, désinstallez le Pack avant d'installer le nouveau et vous aurez juste à modifier les chemins des dossiers dans les options de votre logiciel pour que tout soit à jour ! ;)

Le Runtime GTK+



Lancez l'installation du Runtime GTK+ et installez-le dans les ressources de Windows.
Donc si vous avez Windows XP ou Vista, dans C:\WINDOWS\System32
ou si vous avez Windows 2000 ou une version antérieure, dans C:\WINNT\System32
Le Runtime copie seulement des fichiers, il n'y a donc aucun risque de l'installer dans les ressources de Windows.

Il est important d'installer le Runtime dans les ressources de Windows !

Environ 27 Mo sont nécessaires !

Il est possible que lorsque vous aurez entré le chemin d'installation, le programme ajoute 2.0 :

Image utilisateur

Supprimez-le pour que le Runtime ne soit pas installé dans un dossier nommé 2.0 :

Image utilisateur

Ensuite, lorsque vous cliquez sur Suivant, le programme peut afficher ce message :

Image utilisateur

Cliquez sur Oui.


Le Pack GTK+



Comme je vous l'ai promis, vous n'aurez pas à télécharger plein de fichiers, à décompresser et à copier grâce au programme que j'ai réalisé ! :ange:

Lancez donc l'installation du Pack GTK+ que vous avez téléchargé :

Image utilisateur

Choisissez Français (ou une autre langue, il ne doit pas y avoir que des francophones qui lisent ce tuto ! :p ),
Cliquez sur Suivant, acceptez le Contrat de License et installez-le dans :
C:\Program Files\Pack GTK+

Il est important d'installer le Pack GTK+ à cet endroit ! ;)
La lettre C du chemin du dossier correspond au disque dur local de votre PC. Si le vôtre n'a pas cette lettre, mettez en une autre; mais attention : pour tout le tuto vous devrez changer la lettre des chemins.

Environ 185 Mo sont nécessaires !

Maintenant que le Pack et le Runtime ont été installés, je vous conseille de redémarrer votre PC pour que Windows prenne bien en compte les deux installations.

Configuration du Logiciel & d'un Projet GTK+

Configuration du Logiciel



Maintenant que les fichiers ressources ont été copiés sur votre disque dur (pendant l'installation), il faut configurer votre logiciel pour qu'il puisse trouver les fichiers .h, .lib, etc... dont il a besoin lors de la compilation. D'abord, je vais vous donner les lignes à ajouter dans les options du compilateur et ensuite je vous explique comment faire ;) .

Chaque logiciel nécessite une installation différente, donc soyez bien attentifs ! ^^

Voici les lignes à ajouter dans les options du compilateur,

Répertoire du Dossier Bin (contenant les dll, etc...) :
C:\Program Files\Pack GTK+\bin

Répertoire du dossier Lib (contenant le fichiers .lib) :
C:\Program Files\Pack GTK+\lib

Répertoire des dossiers Include (contenant les fichiers .h et .c) :
C:\Program Files\Pack GTK+\include
C:\Program Files\Pack GTK+\include\atk
C:\Program Files\Pack GTK+\include\cairo
C:\Program Files\Pack GTK+\include\cairo\src
C:\Program Files\Pack GTK+\include\glib
C:\Program Files\Pack GTK+\include\glib\build
C:\Program Files\Pack GTK+\include\glib\glib
C:\Program Files\Pack GTK+\include\glib\gmodule
C:\Program Files\Pack GTK+\include\glib\gobject
C:\Program Files\Pack GTK+\include\glib\gthread
C:\Program Files\Pack GTK+\include\gtk+
C:\Program Files\Pack GTK+\include\gtk+\contrib
C:\Program Files\Pack GTK+\include\gtk+\gtk
C:\Program Files\Pack GTK+\include\gtk+\gdk
C:\Program Files\Pack GTK+\include\gtk+\gdk-pixbuf
C:\Program Files\Pack GTK+\include\gtk+\modules
C:\Program Files\Pack GTK+\include\libpng
C:\Program Files\Pack GTK+\include\libpng\contrib
C:\Program Files\Pack GTK+\include\pango
C:\Program Files\Pack GTK+\include\pango\modules
C:\Program Files\Pack GTK+\include\pango\pango
C:\Program Files\Pack GTK+\include\tiff
C:\Program Files\Pack GTK+\include\tiff\libtiff
C:\Program Files\Pack GTK+\lib\glib\include
C:\Program Files\Pack GTK+\lib\gtk+\include



Image utilisateur Pour Dev-C++



Dans le menu de Dev-C++, allez dans Outils / Options du Compilateur, puis dans l'onglet Répertoires.
Ensuite, dans les sous-onglets :

Image utilisateur

Cliquez sur Binaires et ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Bin (reportez-vous à ce que j'ai écrit plus haut).

Image utilisateur

Dans l'onglet Répertoires Bibliothèques, ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Lib.

Image utilisateur

Et pour finir, dans l'onglet Répertoires C .h, ajoutez des lignes dans lesquelles vous entrerez les chemins des répertoires des dossiers Include.

Image utilisateur

(Faut les faire une par une ! :p )
Puis cliquez sur OK.


Image utilisateur Pour Visual-C++



Dans le menu de Visual C++, cliquez sur Outils / Options...
A gauche, dans la sélection, allez dans Projets et solutions / Répertoires de VC++ puis à droite de la fenêtre, sélectionnez Afficher les répertoires pour Fichiers exécutables et ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Bin (reportez-vous à ce que j'ai écrit plus haut).

Image utilisateur

Sélectionnez ensuite Afficher les répertoires pour Fichiers bibliothèques et ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Lib.

Image utilisateur

Et pour finir, sélectionnez Afficher les répertoires pour Fichiers Include et ajoutez des lignes dans lesquelles vous entrerez les chemins des répertoires des dossiers Include.

Image utilisateur

Cliquez sur OK pour appliquer les modifications.


Image utilisateur Pour Code::Blocks



Dans le menu de Code::Blocks, cliquez sur Settings / Compiler, puis allez dans l'onglet Directories.
Ensuite, dans les sous-onglets :

Image utilisateur

Cliquez sur Resource compiler et ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Bin (reportez-vous à ce que j'ai écrit plus haut).

Image utilisateur

Dans l'onglet Linker, ajoutez une ligne dans laquelle vous entrerez le chemin du répertoire du dossier Lib.

Image utilisateur

Et pour finir, dans l'onglet Compiler, ajoutez des lignes dans lesquelles vous entrerez les chemins des répertoires des dossiers Include.

Image utilisateur

Puis cliquez sur OK.

Voilà, vous avez terminé de configurer votre logiciel ! :) Mais c'est pas fini ! :p


Configuration d'un Projet



Nous allons à présent créer et configurer un projet GTK+ ;) .
Comme pour la configuration de votre logiciel, il y a une explication pour chaque logiciel.


Image utilisateur Pour Dev-C++



Créez un nouveau projet de type Console Application en C.

Image utilisateur

Ensuite, dans le menu, cliquez sur Projet / Options du Projet, puis allez dans l'onglet Paramètres.

Dans les Options du Compilateur, ajoutez :
-mms-bitfields

Et à droite, dans l'Editeur de Liens, ajoutez :
-lglib-2.0
-lpangocairo-1.0
-lpangowin32-1.0
-latk-1.0
-lgdk_pixbuf-2.0
-lgdk-win32-2.0
-lpango-1.0
-lgmodule-2.0
-lgobject-2.0
-lgthread-2.0
-lgtk-win32-2.0
-lcairo


Image utilisateur

Puis cliquez sur OK pour appliquer les modifications.

Ce projet étant un projet en console, la console s'affichera à l'exécution du programme.
Pour la cacher, allez dans le menu Projet / Options du Projet et dans l'onglet Général, à la partie Type, sélectionnez Win32 GUI puis appliquez la modification en cliquant sur OK ;) .


Image utilisateur Pour Visual C++



Créez un nouveau projet de type Application console Win32.

Image utilisateur

Ensuite, dans le menu, cliquez sur Projet / Propriétés de <nom_du_projet>...

A gauche, dans la sélection, allez dans Propriétés de configuration / Editeur de liens / Entrée.

Cliquez sur Dépendances supplémentaires puis sur les trois petits points qui apparaissent à droite.
Dans la fenêtre qui s'ouvre, ajoutez :
glib-2.0.lib
pangocairo-1.0.lib
pangowin32-1.0.lib
atk-1.0.lib
gdk_pixbuf-2.0.lib
gdk-win32-2.0.lib
pango-1.0.lib
gmodule-2.0.lib
gobject-2.0.lib
gthread-2.0.lib
gtk-win32-2.0.lib
cairo.lib


Image utilisateur

Cliquez sur OK, puis sur Appliquer pour appliquer les modifications et sur OK pour fermer la fenêtre des propriétés du projet.

Si vous faites un Copier/Coller pour entrer ces paramètres, il est possible qu'une erreur de ce type survienne :
LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'glib-2.0.lib pangocairo-1.0.lib'
Sachez que si elle apparaît, les paramètres du Projet n'ont pas été correctement entrés (copiez les lignes une par une pour être sûr de ne pas avoir de problèmes de retours à la ligne ;) ) .


Image utilisateur Pour Code::Blocks



Créez un nouveau projet de type Win32 GUI Application.

Image utilisateur

Ensuite, dans le menu, cliquez sur Project / Build options et allez dans l'onglet Compiler puis dans Other options pour ajoutez :
-mms-bitfields

Image utilisateur

Allez dans l'onglet Linker et dans la sélection de gauche(Link librairies), ajoutez des lignes dans lesquelles vous entrerez :

glib-2.0
pangocairo-1.0
pangowin32-1.0
atk-1.0
gdk_pixbuf-2.0
gdk-win32-2.0
pango-1.0
gmodule-2.0
gobject-2.0
gthread-2.0
gtk-win32-2.0
cairo


(Il faut les faire une par une ! :lol: )
Quand vous les avez toutes faites, vous devez voir ceci :

Image utilisateur

Puis cliquez sur OK.

Vous avez maintenant fini d'installer GTK+ ! :)

Astuces

Cette Partie est consacrée à des astuces qui pourraient vous être très utiles ! ^^

Nouveau projet déjà configuré avec Dev-C++



Si vous avez Dev-C++ et que vous souhaitez ne pas à avoir à configurer tous vos projets GTK+,
il existe une technique très simple permettant de gagner beaucoup de temps ! :)

Créez un nouveau projet et configurez le. Il vous suffit maintenant de vous en servir comme original.
Lorsque vous voudrez faire un nouveau projet GTK+, il vous suffira de copier le dossier contenant le projet déjà configuré et d'utiliser cette copie ! ;)

Nouveau projet déjà configuré avec Visual C++



Pour Visual C++, il faut modifier les ressources du logiciel pour que les Dépendances supplémentaires soient automatiquement mises dans les Options des Projets ^^ .

Allez donc dans le dossier VCProjectDefaults qui se trouve dans les ressources du logiciel, par défaut ici :
C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults
Ouvrez le fichier corewin_express.vsprops avec un éditeur de texte.
Remplacez la ligne 8 par :
AdditionalDependencies = "kernel32.lib glib-2.0.lib pangocairo-1.0.lib pangowin32-1.0.lib atk-1.0.lib gdk_pixbuf-2.0.lib gdk-win32-2.0.lib pango-1.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-2.0.lib cairo.lib"/>
Et n'oubliez pas d'enregistrer les modifications ! :p

Maintenant, tout vos projets seront configurés pour fonctionner avec GTK+.

Nouveau projet déjà configuré avec Code::Blocks



Avec Code::Blocks, c'est encore plus simple : il est possible de sauvegarder la configuration d'un projet pour que lorsque vous en créez un nouveau, il puisse être déjà configuré ! :)
Voici comment faire:
Après avoir configuré le Projet, dans le menu, cliquez sur Project/Save project as user-template.
Dans la fenêtre qui s'ouvre, tapez:
Projet GTK+
et cliquez sur OK.
Maintenant, pour créer un nouveau projet déjà configuré, il vous suffira de cliquer sur l'icône New Project et dans l'onglet User templates, de sélectionner Projet GTK+ puis de cliquer sur Create.

A Propos du Pack GTK+...



Vous pouvez tout à fait installer le Pack GTK+ ailleurs que dans C:\Program Files\Pack GTK+ mais attention, vous devrez changer les chemins des répertoires des dossiers lorsque vous configurerez votrel logiciel et votre projet ;) .
Vous pouvez à présent créer des applications GTK+ ! :)

Pour vérifier que tout fonctionne, compilez et exécutez ce code. Une fenêtre devrait s'ouvrir !
Si vous avez un problème à la compilation ou à l'exécution, vous avez peut-être mal installé GTK+, je vous conseille donc de revérifier que vous avez tout bien paramétré. Pour vérifier que ce tutoriel fonctionne, il a été testé plusieurs fois, donc ne me dites pas que ça ne marche pas ! ^^

L'installation de GTK+ sous Linux (Ubuntu & compagnie) est traitée dans le prochain chapitre.

Picxime & Guimers8 remerçient Im@GinE pour l'écriture
de ce chapitre et pour la relecture du cours.

Im@GinE remercie antoinexp pour avoir testé l'installation.

Im@GinE remercie Petrus6 pour l'astuce de Code::Blocks
et pour avoir testé l'installation.
Chapitre précédent Sommaire Chapitre suivant

Partager

79 commentaires pour "Installer GTK+ sous Windows"
Note moyenne : 3.14 / 4 (29 votes)
Pseudo Commentaire
Hors ligne Antonag # Posté le 19/09/2010 à 10:36:10
Nightmare To Remember
Avatar

Ville : Creteil
Pays : France métropolitaine
Études : ECE

Bonjour
En essayant d'executer le premier pack, je recois ce message d'erreur :
Impossible de demarrer le programme car il manque libglib-2.0-0.dll sur votre ordinateur. Essayer de reinstaller le programme pour corriger ce problème
(Biensur, en le reinstallant ... la meme alerte)
Comment et où l'installer
Merci
Hors ligne Picxime # Posté le 24/09/2010 à 13:46:53
Avatar

Études : SUPINFO Normandie à Caen

Nous en sommes désolé.
Ce tutoriel est déprécié.
Citation : Picxime
Pour ce qui est de la bibliothèque, le lien ce trouve dans le paragraphe "All-in-one bundles", cliquez sur le numéro de la version.
http://www.gtk.org/download-windows.html

Dans les nouvelles versions de Codes::Block, il suffit de renseigner le répertoire le plus haut, l'IDE retrouve correctement les sous répertoires. La configuration est donc plus simple.

Vous vous posez des questions sur Supinfo ? Voici la vérité :
Supinfo Watching : Les témoignages des étudiants.
 
Hors ligne naiglemez.naalu # Posté le 01/11/2010 à 07:53:54
Avatar

J'ai eu le même problème que antonag, il m'a suffit de redémarrer l'ordinateur et tout s'est installé correctement. Je viens ici pour remercier l'auteur :) et pour l'encourager à mettre à jour sa version qui de toute façon rend déjà bien service.
Hors ligne Paul-Henri # Posté le 28/11/2010 à 17:36:18

Bonjour,
je suis en train de péter les plombs avec un certain glib, dll manquante quand je lance mon script python :o
Comment faire?
J'ai installé Gtk+, pygtk, pycairo, pygobject et même runtine et dev Glib sur le site officiel et j'ai mis ces derniers dans systeme32 mais ça ne fonctionne toujours pas :s
c'est __init__.py dans C:\Python26\Lib\site-packages\gtk-2.0\glib qui déconne apparemment?
Les Citation
glib_2.26.0-2_win32
et Citation
glib-dev_2.26.0-2_win32
je sais pas si il fallait les mettre dans system32 ?
De plus dans glade j'ai l'icône en bas Gtk+ qui est indiqué comme obsolète :s

Merci
Hors ligne spycom # Posté le 18/12/2011 à 19:34:09
Avatar

Je suis ennuyé j'ai une erreur lors de la compilation.
Code : Autre
1
C:\Program Files (x86)\Pack GTK+\include\glib\gobject\gobject.h|247|error: expected ';', ',' or ')' before '-' token|

Je vous met le fichier gobject.h qui pose problème.
Code : C
  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
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
/* GObject - GLib Type, Object, Parameter and Signal Library
 * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General
 * Public License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 */
#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
#error "Only <glib-object.h> can be included directly."
#endif

#ifndef __G_OBJECT_H__
#define __G_OBJECT_H__

#include        <gobject/gtype.h>
#include        <gobject/gvalue.h>
#include        <gobject/gparam.h>
#include        <gobject/gclosure.h>
#include        <gobject/gsignal.h>

G_BEGIN_DECLS

/* --- type macros --- */
#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_OBJECT))
#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
#define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
#define G_OBJECT_CLASS_NAME(class)  (g_type_name (G_OBJECT_CLASS_TYPE (class)))
#define G_VALUE_HOLDS_OBJECT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_OBJECT))

/* --- type macros --- */
#define G_TYPE_INITIALLY_UNOWNED	      (g_initially_unowned_get_type())
#define G_INITIALLY_UNOWNED(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnowned))
#define G_INITIALLY_UNOWNED_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
#define G_IS_INITIALLY_UNOWNED(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_INITIALLY_UNOWNED))
#define G_IS_INITIALLY_UNOWNED_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_INITIALLY_UNOWNED))
#define G_INITIALLY_UNOWNED_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
/* GInitiallyUnowned ia a GObject with initially floating reference count */


/* --- typedefs & structures --- */
typedef struct _GObject                  GObject;
typedef struct _GObjectClass             GObjectClass;
typedef struct _GObject                  GInitiallyUnowned;
typedef struct _GObjectClass             GInitiallyUnownedClass;
typedef struct _GObjectConstructParam    GObjectConstructParam;
typedef void (*GObjectGetPropertyFunc)  (GObject      *object,
                                         guint         property_id,
                                         GValue       *value,
                                         GParamSpec   *pspec);
typedef void (*GObjectSetPropertyFunc)  (GObject      *object,
                                         guint         property_id,
                                         const GValue *value,
                                         GParamSpec   *pspec);
typedef void (*GObjectFinalizeFunc)     (GObject      *object);
typedef void (*GWeakNotify)		(gpointer      data,
					 GObject      *where_the_object_was);
struct  _GObject
{
  GTypeInstance  g_type_instance;
  
  /*< private >*/
  volatile guint ref_count;
  GData         *qdata;
};
struct  _GObjectClass
{
  GTypeClass   g_type_class;

  /*< private >*/
  GSList      *construct_properties;

  /*< public >*/
  /* seldomly overidden */
  GObject*   (*constructor)     (GType                  type,
                                 guint                  n_construct_properties,
                                 GObjectConstructParam *construct_properties);
  /* overridable methods */
  void       (*set_property)		(GObject        *object,
                                         guint           property_id,
                                         const GValue   *value,
                                         GParamSpec     *pspec);
  void       (*get_property)		(GObject        *object,
                                         guint           property_id,
                                         GValue         *value,
                                         GParamSpec     *pspec);
  void       (*dispose)			(GObject        *object);
  void       (*finalize)		(GObject        *object);
  /* seldomly overidden */
  void       (*dispatch_properties_changed) (GObject      *object,
					     guint	   n_pspecs,
					     GParamSpec  **pspecs);
  /* signals */
  void	     (*notify)			(GObject	*object,
					 GParamSpec	*pspec);

  /* called when done constructing */
  void	     (*constructed)		(GObject	*object);

  /*< private >*/
  /* padding */
  gpointer	pdummy[7];
};
struct _GObjectConstructParam
{
  GParamSpec *pspec;
  GValue     *value;
};


/* --- prototypes --- */
GType       g_initially_unowned_get_type      (void);
void        g_object_class_install_property   (GObjectClass   *oclass,
					       guint           property_id,
					       GParamSpec     *pspec);
GParamSpec* g_object_class_find_property      (GObjectClass   *oclass,
					       const gchar    *property_name);
GParamSpec**g_object_class_list_properties    (GObjectClass   *oclass,
					       guint	      *n_properties);
void        g_object_class_override_property  (GObjectClass   *oclass,
					       guint           property_id,
					       const gchar    *name);

void        g_object_interface_install_property (gpointer     g_iface,
						 GParamSpec  *pspec);
GParamSpec* g_object_interface_find_property    (gpointer     g_iface,
						 const gchar *property_name);
GParamSpec**g_object_interface_list_properties  (gpointer     g_iface,
						 guint       *n_properties_p);

gpointer    g_object_new                      (GType           object_type,
					       const gchar    *first_property_name,
					       ...);
gpointer    g_object_newv		      (GType           object_type,
					       guint	       n_parameters,
					       GParameter     *parameters);
GObject*    g_object_new_valist               (GType           object_type,
					       const gchar    *first_property_name,
					       va_list         var_args);
void	    g_object_set                      (gpointer	       object,
					       const gchar    *first_property_name,
					       ...) G_GNUC_NULL_TERMINATED;
void        g_object_get                      (gpointer        object,
					       const gchar    *first_property_name,
					       ...) G_GNUC_NULL_TERMINATED;
gpointer    g_object_connect                  (gpointer	       object,
					       const gchar    *signal_spec,
					       ...) G_GNUC_NULL_TERMINATED;
void	    g_object_disconnect               (gpointer	       object,
					       const gchar    *signal_spec,
					       ...) G_GNUC_NULL_TERMINATED;
void        g_object_set_valist               (GObject        *object,
					       const gchar    *first_property_name,
					       va_list         var_args);
void        g_object_get_valist               (GObject        *object,
					       const gchar    *first_property_name,
					       va_list         var_args);
void        g_object_set_property             (GObject        *object,
					       const gchar    *property_name,
					       const GValue   *value);
void        g_object_get_property             (GObject        *object,
					       const gchar    *property_name,
					       GValue         *value);
void        g_object_freeze_notify            (GObject        *object);
void        g_object_notify                   (GObject        *object,
					       const gchar    *property_name);
void        g_object_thaw_notify              (GObject        *object);
gboolean    g_object_is_floating    	      (gpointer        object);
gpointer    g_object_ref_sink       	      (gpointer	       object);
gpointer    g_object_ref                      (gpointer        object);
void        g_object_unref                    (gpointer        object);
void	    g_object_weak_ref		      (GObject	      *object,
					       GWeakNotify     notify,
					       gpointer	       data);
void	    g_object_weak_unref		      (GObject	      *object,
					       GWeakNotify     notify,
					       gpointer	       data);
void        g_object_add_weak_pointer         (GObject        *object, 
                                               gpointer       *weak_pointer_location);
void        g_object_remove_weak_pointer      (GObject        *object, 
                                               gpointer       *weak_pointer_location);

typedef void (*GToggleNotify) (gpointer      data,
			       GObject      *object,
			       gboolean      is_last_ref);

void g_object_add_toggle_ref    (GObject       *object,
				 GToggleNotify  notify,
				 gpointer       data);
void g_object_remove_toggle_ref (GObject       *object,
				 GToggleNotify  notify,
				 gpointer       data);

gpointer    g_object_get_qdata                (GObject        *object,
					       GQuark          quark);
void        g_object_set_qdata                (GObject        *object,
					       GQuark          quark,
					       gpointer        data);
void        g_object_set_qdata_full           (GObject        *object,
					       GQuark          quark,
					       gpointer        data,
					       GDestroyNotify  destroy);
gpointer    g_object_steal_qdata              (GObject        *object,
					       GQuark          quark);
gpointer    g_object_get_data                 (GObject        *object,
					       const gchar    *key);
void        g_object_set_data                 (GObject        *object,
					       const gchar    *key,
					       gpointer        data);
void        g_object_set_data_full            (GObject        *object,
					       const gchar    *key,
					       gpointer        data,
					       GDestroyNotify  destroy);
gpointer    g_object_steal_data               (GObject        *object,
					       const gchar    *key);
void        g_object_watch_closure            (GObject        *object,
					       GClosure       *closure);
GClosure*   g_cclosure_new_object             (GCallback       callback_func,
					       GObject	      *object);
GClosure*   g_cclosure_new_object_swap        (GCallback       callback_func,
					       GObject	      *object);
GClosure*   g_closure_new_object              (guint           sizeof_closure,
					       GObject        *object);
void        g_value_set_object                (GValue         *value,
					       gpointer        v_object);
gpointer    g_value_get_object                (const GValue   *value);
gpointer    g_value_dup_object                (const GValue   *value);
gulong	    g_signal_connect_object           (gpointer	       instance,
					       const gchar    *detailed_signal,
					       GCallback       c_handler,
					       gpointer	       gobject,
					       GConnectFlags   connect_flags);

/*< protected >*/
void        g_object_force_floating           (GObject        *object);
void        g_object_run_dispose	      (GObject	      *object);


void        g_value_take_object               (GValue         *value,
					       gpointer        v_object);
#ifndef G_DISABLE_DEPRECATED
void        g_value_set_object_take_ownership (GValue         *value,
					       gpointer        v_object);
#endif

#if !defined(G_DISABLE_DEPRECATED) || defined(GTK_COMPILATION)
gsize	    g_object_compat_control	      (gsize	       what,
					       gpointer	       data);
#endif

/* --- implementation macros --- */
#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
G_STMT_START { \
  GObject *_object = (GObject*) (object); \
  GParamSpec *_pspec = (GParamSpec*) (pspec); \
  guint _property_id = (property_id); \
  g_warning ("%s: invalid %s id %u for \"%s\" of type `%s' in `%s'", \
             G_STRLOC, \
             (pname), \
             _property_id, \
             _pspec->name, \
             g_type_name (G_PARAM_SPEC_TYPE (_pspec)), \
             G_OBJECT_TYPE_NAME (_object)); \
} G_STMT_END
#define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec) \
    G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))

G_END_DECLS

#endif /* __G_OBJECT_H__ */

Sachant que j'ai repris dans tous les sens la page du tuto sur l'installation gtk.
Si quelqu'un à une idée ?
Merci.

blog apprendre le c ensemble ===> C-deb <=== blog apprendre le c ensemble
 

Voir tous les commentaires