Previous Next Up Title Contents General Index Functions Index Bookshelf

1.9.2. LE WIDGET GPHIGS

G5G a developpé un widget spécifique pour résoudre ces problèmes. Ce widget assure une association correcte entre le widget et la fenêtre graphique. Il gère le backing store et tout évènement expose, et suivant les ressources, ce widget est capable grâce à des scrollbars de gérer le déplacement de la fenêtre graphique.

Comme tout widget motif, le widget GPHIGS possède des ressources. Il est alors facile d'attribuer certains paramètres spécifiques à une workstation par l'intermédiaire des ressources :

La création du widget s'effectue par la fonction XtCreateManageWidget ou XtCreateWidget en spécifiant la classe xmGPhigsWidgetClass:

Exemple:

#include <Xm/Xm.h>
#include <phigure.h>
#include "GPhigsW.h"


void open_phigure_CB(w,client_data,call_data)
	Widget w;
	XtPointer client_data,call_data;
{
	topen_ws  (1,PDEF_ERR_FILE,8887);
	predraw_all_structs(1,PFLAG_ALWAYS);

}

/*------------------------------------------*/

main(argc,argv)
int argc; char **argv;
{
	Widget toplevel, phigure ;
	int    n, ac = 0;
	Arg    args[5] ;

	toplevel = XtInitialize (" ", "config_file", NULL, 0, &ac, NULL);

	topen_phigure(PDEF_ERR_FILE);

	phigure = XmCreateGPhigsW(toplevel,"PHIGURE",args,0);

	XtManageChild(phigure);

	XtAddCallback(phigure,XmNcreateDACallback,open_phigure_CB,NULL);

	XtRealizeWidget  (toplevel);

	XtMainLoop();

}

Ce petit programme permet de créer un widget GPHIGS, permettant d'ouvrir une workstation par PHIGURE.

Les ressources disponibles pour le widget GPHIGS sont :

XmNwsid Identificateur de Workstation (1 à 5, 1 par défaut).

XmNwidthWs Largeur de la fenêtre graphique (50 par défaut).

XmNheightWs Hauteur de la fenêtre graphique (50 par défaut).

XmNlocdev N° de l'appareil d'entré du Locator (1 par défaut).

XmNpickdev N° de l'appareil d'entré du Pick (1 par défaut).

XmNnumButton N° du boutton de la souris à utiliser (1 à 3, 1 par défaut).

XmNpressButton Activation par press ou release fpour un appareil pick ou locator

XmNdepthPick Profondeur de recherche pour un picking PHIGS.

XmNresizeWs Comportement de la fenêtre lors d'un resize.

XmNdeviceWs Type de workstation (8887 par défaut c'est à dire X11).

XmNphigureWs Pour utiliser le widget avec PhigureTM.

XmNwidgetDA Pour obtenir l'identificateur de workstation.

Callback spécifiques associés au widget:

XmNlocatorCallback

Callback retournant la structure XmGPhigsLocatorStruct.

XmNpickCallback

Callback retournant la structure XmGPhigsPickStruct.

XmNcreateDACallback

Ce callback, qui n'est appelé qu'une seule fois , informe l'utilisateur que le widget GPHIGS est mappé (est à l'écran), et qu'il est donc possible à partir de ce moment d'effectuer des tracés graphiques. Le mode de fonctionnement client-server de Xwindow étant asynchrone, il n'est pas possible de savoir à l'avance quand un évènement arrive, en particulier quand une fenêtre sera mappée. Le tracé PHIGURE (ou PHIGS)ne pouvant s'effectuer que lorsque la fenêtre est à l'écran, ce callback résoudra ce problème.

Il permet notamment de lancer une application avec, dès que la fenêtre apparaît à l'écran un graphique à l'intérieur. Sans ce callback il faudrait attendre que la fenêtre soit mappée (à l'écran) puis appuyer sur un bouton pour débuter le tracé graphique. Il suffit de mettre la construction de la CSS et un ordre de redraw PHIGS dans ce callback pour résoudre le problème.

XmNexposeDACallback

Ce callback permet à l'utilisateur de redéfinir le comportement par défaut du widget sur les événements de type expose dans la zone graphique.

XmNresizeDACallback

Ce callback permet à l'utilisateur de redéfinir le comportement par défaut du widget sur les événements de type resize de la zone graphique.


Previous Next Up Title Contents General Index Functions Index Bookshelf