Les widgets de type ScrollBar et ScrolledWindow


Table des matières :


Introduction :


Motif fournit des widgets permettant de visualiser partiellement d'autres widgets en les faisant "scroller": les ScrollBar et les ScrolledWindow.

Nous avons déjà vu des ScrollBar widgets en action lors de l'étude des Text widgets et des List widgets. Motif propose en effet des méta-widgets tels que les SrolledList ou les ScrolledText widgets qui contiennent une ScrolledWindow.


Les widgets de type ScrolledWindow :


On crée les ScrolledWindow à l'aide d'une des fonctions XtVaCreateManagedWidget() avec comme classe xmScrolledWindowWidgetClass, ou XmCreateScrolledWindow(), etc... vous devez maintenant être capable de deviner les deux autres manières de créer n'importe quel type de widget connaissant son nom.

Lorsqu'on utilise des ScrolledWindow il faut inclure le fichier <Xm/ScrolledW.h>

Ressources les plus intéressantes

XmNhorizontal, XmNvertical
IDs des ScrollBars de la ScrolledWindow. Ces dernières doivent donc être créées avant la ScrolledWindow.

XmNScrollingPolicy
Deux valeurs possibles : XmAUTOMATIC ou XmAPPLICATION_DEFINED. Dans le premier cas le scrolling est effectué automatiquement lorsque l'utilisateur clicke sur les flêches des ScrollBars, dans l'autre cas rien n'est effectué et le traitement du scrolling devra être fait à la main dans les fonctions de callback des ScrollBars.

XmNscrollBarDisplayPolicy
Cette ressource permet de sélectionner l'apparition de la barre de scrolling. Deux valeurs sont possibles :
  1. XmSTATIC : une barre de scrolling verticale sera toujours présente sur le bord de la ScrolledWIndow.
  2. XmAS_NEEDED : la barre de scrolling ne sera affichée que si le contenu de la Scrolled Window est plus grand que la taille de cette dernière.

XmNvisualPolicy
Deux valeurs possibles : XmCONSTANT ou XmVARIABLE. Dans le premier cas la ScrolledWindow ne peut pas se resizer d'elle-même

XmNworkWindow
ID du widget qui va se trouver dans la ScrolledWindow et qui va être scrollée. Il doit être crée avant la ScrolledWindow.


Les widgets de type ScrollBar :


Les fonctions de création sont standards : XtVaCreateManagedWidget() (classe xmScrollBarWidgetClass), etc....

Ressources les plus intéressantes :

XmNsliderSize
Un slider (l'ascenseur, le petit curseur que l'on déplace entre les deux flêches de la ScrollBar) est divisé en unités de longueur. Cette ressource permet de spécifier le nombre d'unités que l'on désire.

XmNmaximum
La plus grande valeur sélectionnable par l'utilisateur (lorsque le slider est en butée), en unités de longueur.

XmNmaximum
La plus petite valeur sélectionnable par l'utilisateur (lorsque le slider est en butée), en unités de longueur.

XmNincrement
Le nombre d'unités de valeur correspondant au plus petit déplacement souris du slider.

XmNorientation
Deux valeurs possibles selon que l'on désire un ascenseur horizontal ou vertical : XmHORIZONTAL et XmVERTICAL.

XmNvalue
La valeur courante correspondant à la position du slider. De type int.

XmNpageIncrement
Cette ressource contrôle le déplacement du widget se trouvant à l'intérieur de la ScrolledWindow en fonction du déplacement du slider.

Ressources de callback :

XmNvalueChangedCallback
La fonction de callback est appelée lorsque la valeur correspondant à la position de l'ascenseur a changé (l'utilisateur a déplacé le curseur).

XmNdragCallback
Le callback est appelé de manière continue lors du déplacement de l'ascenseur. Attention, ceci peut affecter les performances de l'application si le traitement effectué dans la fonction de callback est consommateur de Cpu.

XmNdecrementCallback, XmNincrementCallback
Le callbaclk est appelé lorsque la valeur correspondant à la position du slider a diminué/augmenté.

XmNpageDecrementCallback, XmNpageIncrementCallback
Idem au précédent sauf que le déplacement est suffisamment grand pour que le widget contenu dans la Scrolled Window soit scrollé.

XmNtoTopCallback, XmNtoBottomCallback
Le callback est appelé lorsque le slider atteint une des extrêmités de la ScrollBar.

michel.buffa@essi.fr