# Programmation GTK/Théorie des boîtes de placement

* Introduction
* Bien débuter
** « Bonjour tout le monde » en GTK
** Compilation de « Bonjour tout le monde »
** Théorie des signaux et des rappels
** « Bonjour tout le monde » pas à pas
** Types de données
** Compléments sur les gestionnaires de signaux
** Un « Bonjour tout le monde » amélioré
* Placement des widgets
** Théorie des boîtes de placement
** Détails sur les boîtes
** Programme de démonstration des placements
** Placement avec les tables
** Exemple de placement avec table
* Vue d'ensemble des widgets
** Conversions de types
** La hiérarchie des widgets
** Widgets sans fenêtre
* Widgets boutons
** Boutons normaux
** Boutons commutateurs
** Cases à cocher
** Boutons radio
* Widgets divers
** Labels
** Le widget bulle d'aide
** Barres de progression
** Boîtes de dialogue
** Pixmaps
* Widgets containers
** Bloc-notes
** Fenêtres avec barres de défilement
* Widgets listes
** Signaux
** Fonctions
** Exemple
** Widget item de liste
* Widgets de sélections de fichiers
* Widgets Menu
** Création manuelle de menus
** Exemple de menu manuel
** Utilisation de GtkMenuFactory
** Exemple d'usine à menu
* Widgets non documentes
** Entrées de texte
** Sélections de couleurs
** Contrôle d'intervalle
** Règles
** Boîtes de texte
** Prévisualisation
** Courbes
* Widget EventBox
* Configuration des attributs de widget
* Temporisations, fonctions d'E/S et d'attente
** Temporisations
** Surveillance des E/S
** Fonctions d'attente
* Gestion des sélections
** Introduction
** Récupération de la sélection
** Fournir la sélection
* glib
** Définitions
** Listes doublement chaînées
** Listes simplement chaînées
** Gestion de la mémoire
** Timers
** Gestion des chaînes
** Utilitaires et fonctions d'erreurs
* Fichiers rc de GTK
** Fonctions pour les fichiers rc
** Format des fichiers rc de GTK
** Exemple de fichier rc
* Écriture de vos propres widgets
** Vue d'ensemble
** Anatomie d'un widget
** Création d'un widget composé
** Création d'un widget à partir de zéro
** En savoir plus
* Scribble, un programme simple de dessin
** Présentation
** Gestion d'événement
** Le widget DrawingArea et le dessin
** Ajouter le support XInput
* Conseils pour l'écriture d'applications GTK
* Contributions
* Remerciements
* Copyright
* Introduction
* Bien débuter
** « Bonjour tout le monde » en GTK
** Compilation de « Bonjour tout le monde »
** Théorie des signaux et des rappels
** « Bonjour tout le monde » pas à pas
** Types de données
** Compléments sur les gestionnaires de signaux
** Un « Bonjour tout le monde » amélioré
* Placement des widgets
** Théorie des boîtes de placement
** Détails sur les boîtes
** Programme de démonstration des placements
** Placement avec les tables
** Exemple de placement avec table
* Vue d'ensemble des widgets
** Conversions de types
** La hiérarchie des widgets
** Widgets sans fenêtre
* Widgets boutons
** Boutons normaux
** Boutons commutateurs
** Cases à cocher
** Boutons radio
* Widgets divers
** Labels
** Le widget bulle d'aide
** Barres de progression
** Boîtes de dialogue
** Pixmaps
* Widgets containers
** Bloc-notes
** Fenêtres avec barres de défilement
* Widgets listes
** Signaux
** Fonctions
** Exemple
** Widget item de liste
* Widgets de sélections de fichiers
* Widgets Menu
** Création manuelle de menus
** Exemple de menu manuel
** Utilisation de GtkMenuFactory
** Exemple d'usine à menu
* Widgets non documentes
** Entrées de texte
** Sélections de couleurs
** Contrôle d'intervalle
** Règles
** Boîtes de texte
** Prévisualisation
** Courbes
* Widget EventBox
* Configuration des attributs de widget
* Temporisations, fonctions d'E/S et d'attente
** Temporisations
** Surveillance des E/S
** Fonctions d'attente
* Gestion des sélections
** Introduction
** Récupération de la sélection
** Fournir la sélection
* glib
** Définitions
** Listes doublement chaînées
** Listes simplement chaînées
** Gestion de la mémoire
** Timers
** Gestion des chaînes
** Utilitaires et fonctions d'erreurs
* Fichiers rc de GTK
** Fonctions pour les fichiers rc
** Format des fichiers rc de GTK
** Exemple de fichier rc
* Écriture de vos propres widgets
** Vue d'ensemble
** Anatomie d'un widget
** Création d'un widget composé
** Création d'un widget à partir de zéro
** En savoir plus
* Scribble, un programme simple de dessin
** Présentation
** Gestion d'événement
** Le widget DrawingArea et le dessin
** Ajouter le support XInput
* Conseils pour l'écriture d'applications GTK
* Contributions
* Remerciements
* Copyright
[ Modifier le sommaire ]
La majeure partie du placement est faite en créant des boîtes comme dans l'exemple ci-dessus. Ce sont des widgets containers invisibles où l'on peut placer nos widgets. Elles existent sous deux formes : boîtes horizontales et boîtes verticales. Lorsque l'on place des widgets dans une boîte horizontale, les objets sont insérés horizontalement de gauche à droite ou de droite à gauche selon l'appel utilisé. Dans une boîte verticale, les widgets sont placés de haut en bas ou vice versa. On peut utiliser n'importe quelle combinaison de boîtes à l'intérieur ou à côté d'autres boîtes pour créer l'effet désiré.
Pour créer une nouvelle boîte horizontale, on appelle gtk_hbox_new, et pour les boîtes verticales, gtk_vbox_new. Les fonctions gtk_box_pack_start et gtk_box_pack_end servent à placer les objets à l'intérieur de ces containers. La fonction gtk_box_pack_start placera de haut en bas dans une boîte verticale et de gauche à droite dans une boîte horizontale. gtk_box_pack_end fera le contraire en plaçant de bas en haut et de droite à gauche. En utilisant ces fonctions, on peut aligner à droite ou à gauche nos widgets et même les mélanger de n'importe quelle façon pour obtenir l'effet désiré. Dans la plupart de nos exemples, on utilisera gtk_box_pack_start. Un objet peut être un autre container ou un widget. En fait, de nombreux widgets (dont les boutons) sont eux-mêmes des containers, mais on utilise généralement seulement un label dans un bouton.
En utilisant ces appels, GTK sait où vous voulez placer vos widgets et il peut donc les dimensionner automatiquement et faire d'autres choses bien pratiques. Il existe aussi plusieurs options permettant de préciser comment les widgets doivent être placés. Comme vous pouvez l'imaginer, cette méthode nous donne pas mal de liberté pour placer et créer les widgets.