#ifndef MTIGESMENU_H #define MTIGESMENU_H #include "geswin.h" #include "gesvat.h" #define KEY_SELECT(key) (key==KEY_F2) #define KEY_SELECT_ALL(key) (key==KEY_F2+KEY_DIAMOND) struct SGesMenuElt; typedef struct SGesMenu{ struct SGesMenuElt **elt; //Element du menu int nbElt; //Nombre d'éléments short nbEltPage; //Nombre d'éléments par pages int it; //Itérateur SGesWin *win; int ofstMenu; //Offset premier element affiché par rapport au début de la liste int ofstX,ofstY,finX; //Début et fin de ligne short font,fontH; void *buf; char tmp[100]; short isSelectable; SGesVatDirRoot *root; SGesVatList *list; char *dirP; STab *tab; }SGesMenu; typedef struct SGesMenuElt{ const char *text; //Texte de l'élément const char *desc; //Texte d'aide ou de description // SGesMenu *menu; //Pointeur vers le menu short select; }SGesMenuElt; //Création d'un menu à partir d'une fenêtre et une fonte, SGesMenu *CGesMenuCreate(SGesWin *win, short font, short isSelectable); //Initialisation (allocation) du buffer pour copier une partie de la fenêtre void CGesMenuBufInit(SGesMenu *menu); //Ajouter un ou des éléments au menu void CGesMenuAddElts(SGesMenu *menu, const char **text, const char **desc, int nb, int barre); //Ajouter un seul éléments au menu void CGesMenuAddElt(SGesMenu *menu, const char *text, const char *desc); //Initialisation de l'affichage du menu void CGesMenuInit(SGesMenu *menu); //Efface le menu void CGesMenuClr(SGesMenu *menu); //Monte ou descend la barre void CGesMenuIcrDscBar(SGesMenu *menu, short sens); //Monte ou descend le menu void CGesMenuMove(SGesMenu *menu, short sens); //Monte ou descend l'itérateur void CGesMenuItMove(SGesMenu *menu, short sens); //Affiche ou cache la barre void CGesMenuDrawOrHideBar(SGesMenu *menu); /* Actionne le menu fct : fonction pour un traitement particulier (NULL pour traitement classique) */ int CGesMenuAction(SGesMenu *menu,short(*fct)(SGesMenu *,short*)); /* Change le mode de sélection de l'item courrent mode=0 : aucune sélection mode=1 : sélection normale mode=2 : sélection persistante */ void CGesMenuSelection(SGesMenu *menu, short mode); //Initialisation de la sélection void CGesMenuSelectionInit(SGesMenu *menu); //Effacer la sélection void CGesMenuSelectionClr(SGesMenu *menu); /* Change le mode de sélection de tout le menu mode=0 : aucune sélection mode=1 : sélection normale mode=2 : sélection persistante prevMode : mode précédent, 3 pour tous */ void CGesMenuSelectionAll(SGesMenu *menu, short prevMode, short mode); //Destruction du menu void CGesMenuDestroy(SGesMenu *menu); #endif