Chapitre 7. Les ajustements
GTK dispose de plusieurs widgets pouvant être reglés visuellement par
l'utilisateur au moyen de la souris ou du clavier, comme les
widgets
d'intervalle par exemple. D'autres existent qui affichent une partie ajustable d'une
plus grande aire de données, comme la zone de texte (gtk.TextView) et la vue orientable
(gtk.Viewport).
Une application doit être capable de réagir aux changements que l'utilisateur
effectue dans les widgets d'intervalle. Pour ce faire, chaque widget qu'on ajuste pourrait
émettre son propre type de signal, puis, soit transmettre la nouvelle valeur au
gestionnaire de signal, soit faire inspecter sa structure de données par ce dernier
afin de vérifier la valeur. Mais il peut aussi arriver que l'on souhaite connecter
ensemble les changements de plusieurs widgets, de sorte qu'en réglant l'un deux,
on règle les autres. L'exemple le plus évident est le cas où l'on
souhaite connecter une barre de défilement à une vue orientable ou à
une zone de texte à défilement. Si chaque widget a sa propre façon de
définir ou de récupérer la valeur d'ajustement, le programmeur devra
certainement écrire un gestionnaire de signal pour chacun, ceci afin d'effectuer la
traduction entre, d'un côté le signal émis par un widget, et de l'autre,
les données reçues par la méthode d'ajustement d'un autre widget.
GTK résoud ce problème avec l'objet Adjustment (ajustement,
réglage), qui n'est pas un widget mais un moyen pour les widgets de stocker et
transmettre, sous une forme abstraite et flexible, des informations de réglage.
L'utilisation la plus évidente de l'ajustement est de stocker les paramètres
et valeurs de configuration des widgets d'intervalle, comme les barres de défilement
ou les gradateurs. Mais ce n'est pas tout : du fait qu'il dérive de la classe
Object, il offre des possibilités dont ne disposent pas les structures
de données normales, en particulier la possibilité d'émettre des
signaux, comme les widgets. On peut utiliser ces signaux pour faire réagir le
programme aux modifications des widgets ajustables par l'utilisateur, mais également
pour propager les valeurs d'ajustement entre ces widgets de manière transparente.
Certains widgets incorporent des ajustements. C'est le cas, entre autres, des barres de
progression, des vues orientables et des fenêtres à défilement. Nous
observerons cette intégration des ajustements dans les chapitres concernant ces
widgets.
Un grand nombre des widgets qui utilisent des ajustements le font de manière
automatique. Cependant, certains cas peuvent se présenter où il vous faudra
en créer un vous-même. Vous utiliserez alors la méthode suivante :
ajustement = gtk.Adjustment(value=0, lower=0, upper=0, step_incr=0, page_incr=0, page_size=0)
L'argument value (valeur) est la valeur initiale que vous voulez
donner à votre ajustement, elle correspondra généralement à la position la plus haute ou la plus à gauche d'un widget ajustable. L'argument lower (minimale) spécifie la valeur la plus basse que peut prendre ajustement. L'argument step_incr (incrémentation par pas) spécifie le plus petit des deux incréments par lequel l'utilisateur peut modifier la valeur, et page_incr (incrémentation par page) le plus grand. L'argument page_size (taille de la page) correspond en quelque sorte à la partie visible d'un widget à défilement. Enfin, upper (maximale) représente la coordonnée la plus basse ou la plus à droite de l'enfant d'un widget à défilement. Il ne s'agit donc pas forcément de la valeur la plus grande que peut prendre value car, dans ces widgets, l'argument page_size est généralement différent de zéro.