Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

Notes sur SCR/AL1 pour Gnome/Gtk+

Fonction main()

Pour l'essentiel, la fonction main() habituelle peut être conservée telle quelle. Il faut cependant ajouter l'appel à GscrGnomeInit(argc, argv) avant de lancer SCR_init().

    main(int argc, char **argv)
{
GscrGnomeInit(argc, argv);
SCR_init();
...
}

GscrGnomeInit() initialise SCR/AL1 et Gnome, fixe la variable ERR_TYPE à 1 et les couleurs et pixmaps par défaut.

Images des toolbars

Un tableau d'image par défaut est disponible pour les TOOLBAR des APPL et des PAGES. Ce tableau peut être remplacé. Il suffit pour cela de fixerr après l'appel à GscrGnomeInit() la valeur de GSCR_PIXMAPS par la nouvelle liste d'icônes.

Les icônes sont des images définies en C au format XPM. GSCR_PIXMAPS est un pointeur vers la première image de la liste.

Exemple

    static char *new_16[] = {
/* columns rows colors chars-per-pixel */
"16 16 16 1",
" c black",
". c #161616",
"X c gray25",
"o c #4b4b49",
"O c #5d5d5d",
"+ c #767676",
"@ c gray52",
"# c #a0a0a0",
"$ c #aaaaaa",
"% c #bcbcbc",
"& c #c2c2c2",
"* c #e5e5e5",
"= c #ebebeb",
"- c #f0f0f0",
"; c #fdfdfd",
": c None",
/* pixels */
": ::::",
": ;;;;;;;*& :::",
": ;------&$ ::",
": ;------$+OX ::",
": ;-----=*@o. ::",
": ;-------=-& ::",
": ;==-===-==& ::",
": ;--==-==-=& ::",
": ;=========% ::",
": ;=*=*=*=*=& ::",
": ;====*==**% ::",
": ;*********& ::",
": ;*=*******% ::",
": ;*********% ::",
": ::"
...
};

... autres définitions ...

GXPM MY_PIXMAPS[] = {
/* 0 */ new_16,
/* 1 */ open_16,
/* 2 */ save_16,
/* 3 */ cut_16,
/* 4 */ copy_16,
/* 5 */ paste_16,
/* 6 */ help_16,
/* 7 */ help_16,
/* 8 */ print_16,
/* 9 */ umbrella_16,
/* 10 */ trek_16,
};

int NB_PIXMAPS = 11;

Après GscrGnomeInit(), il suffit de faire :

    GSCR_PIXMAPS = MY_PIXMAPS;
GSCR_NB_PIXMAPS = NB_PIXMAPS;

Pour obtenir les images bmp, jpg, gif, png, ... en format xpm, il suffit d'utiliser le filtre convert disponible sous Linux.

Couleurs

Les couleurs sont définies dans des structures GCOLOR :

    typedef struct _GCOLOR_ {
char *name;
GdkColor color;
} GCOLOR;

Par défaut, elles sont définies comme suit :

    GCOLOR   GSCR_DFT_COLORS[] = {

/*SCR_INVISIBLE WCOL_INVISIBLE */ {"", {0, 0, 0, 0}},
/*SCR_DEFAULT WCOL_DEFAULT */ {"black", {0, 0, 0, 0xFFFF}},
/*SCR_REVERSE WCOL_REVERSE */ {"grey", {0, 0xAA99, 0xAA99, 0xAA99}},
/*SCR_UNDERLINE WCOL_UNDERLINE */ {"white", {0, 0, 0, 0xFFFF}},
/*SCR_BOLD WCOL_BOLD */ {"gray", {0, 0xFFFF, 0xFFFF, 0xFFFF}},
/*SCR_BLINKING WCOL_BLINKING */ {"red", {0, 0, 0, 0xFFFF}},
/*SCR_DIM WCOL_DIM */ {"yellow", {0, 0, 0, 0xFFFF}},

/*SCR_BLACK WCOL_BLACK */ {"black", {0, 0, 0, 0}},
/*SCR_BLUE WCOL_BLUE */ {"blue", {0, 0x0, 0, 0xFFFF}},
/*SCR_GREEN WCOL_GREEN */ {"green", {0, 0, 0xFFFF, 0}},
/*SCR_CYAN WCOL_CYAN */ {"cyan", {0, 0, 0xFFFF, 0xFFFF}},
/*SCR_RED WCOL_RED */ {"red", {0, 0xFFFF, 0, 0}},
/*SCR_MAGENTA WCOL_MAGENTA */ {"magenta", {0, 0xFFFF, 0, 0xFFFF}},
/*SCR_WHITE WCOL_WHITE */ {"white", {0, 0xFFFF, 0xFFFF, 0xFFFF}},
/*SCR_YELLOW WCOL_YELLOW */ {"yellow", {0, 0xFFFF, 0xFFFF, 0}},
/*SCR_SHADOW WCOL_DKGRAY */ {"gray", {0, 0x003F, 0x003F, 0x003F}},
/*SCR_CHELP1 WCOL_GRAY */ {"gray", {0, 0x7FFF, 0x7FFF, 0x7FFF}},
/*SCR_CHELP2 WCOL_LTGRAY */ {"gray", {0, 0xAFFF, 0xAFFF, 0xAFFF}},
/*SCR_CONDENSED WCOL_LTBLUE */ {"blue", {0, 0, 0x3FFF, 0xFFFF}},
/*SCR_ENLARGED WCOL_DKBLUE */ {"blue", {0, 0, 0x7FFF, 0xFFFF}}
};

Ce tableau peut être remplacé. Les attributs qu'on utilise dans les .f donnent lieu à la couleur définie ci-dessus.

Il suffit pour cela de remplacer après l'appel à GscrGnomeInit() la valeur de GSCR_COLORS par la nouvelle table définie sur le modèle ci-dessus.

Positionnnement des PAGES

Les positions des PAGES sont calculées comme suit :

La fonction WscrPosPg fixe les valeurs de pg_w_x et pg_w_y en fonction de la position courante d'un champ de page.

    WscrPosPg(PAGE *pg, OBJ obj, int type);

type : 0 Sur le champ
1 juste en dessous
2 à droite du champ
3 en dessous à droite

Positionnnement des MENUS

Les menus peuvent être placés à une position en pixels en fixant les valeurs mn_w_x et mn_w_y de la structure MENU.

Ces positions peuvent être calculées automatiquement par la fonction WscrPosMenu.

    WscrPosMenu(MENU *mn, OBJ obj)

Elle place le menu sous le champ donné.

Maximisation d'une APPL

Une APPL est maximisée (occupe tout l'écran) si son nombre de lignes (défini dans le .f) est supérieur à 20.

Si ce n'est pas le cas, on peut maximiser l'APPL après son affichage avec la fonction :

    GapMaximise(APPL *ap)

Image dans une APPL

Il est possible de placer une image au centre d'une APPL en plaçant dans la variable

    char **GSCR_APPL_IMAGE;

un pointeur vers une image PIXMAP.

Exemple

    /* XPM */
char *MyImage[] = {
/* columns rows colors chars-per-pixel */
"48 48 99 2",
" c #000000",
". c #1a1305",
"X c #1e1709",
"# c #372b10",
"$ c #322b1f",
"% c #3b2e12",
...
};

main()
{
...
GSCR_APPL_IMAGE = MyImage;
...
}

Options disabled dans les ABAR

Touche recordée si [X] ou Alt-F4

Sans objet dans la mesure où les PAGES n'ont pas de croix dans la barre de titre.

Largeur et hauteur des caractères

La largeur et la hauteur des caractères sont gouvernés par les variables suivantes :

Ces variables sont des entiers et peuvent être définies avant l'affichage d'un objet SCR/AL1 (p.ex. PAGE, MENU).

Caractères inférieurs à ' '

Les caractères inférieurs à blancs sont remplacés par des blancs.

Les caractères semi-graphiques de tableaux sont remplacés par des équivalents (-=+|).

HLINE et VLINE

Les HLINE, VLINE, BOX et traits dans le SCREEN peuvent être supprimés de l'affichage. On peut spécifier dans les GLOBAL :

    GLOBAL { WIN_HLINE No WIN_VLINE No}

A partir de cette directive, toutes les PAGES ne contiendront plus de HLINE, VLINE, BOX ou traits dans les SCREEN.

On peut placer la directive à plusieurs endroits dans les .f.

Il est possible également de modifier une PAGE selon la même syntaxe WIN_HLINE et WIN_VLINE placée dans la définition de la PAGE.

Couleur des boutons

La couleur des boutons est définie par la couleur du champ qui définit le bouton.

Lorsque la souris passe sur le bouton, le bouton indique son état intermédiaire en changeant de couleur. Cette couleur est indiquée par la variable GBUTTONACTIVATE.

Exemple

    GBUTTONACTIVATE = SCR_RED;

Chaque PAGE créée par la suite utilisera le rouge pour indiquer que la souris passe dessus.

Sélection des champs si END_FN retourne -1

Lorsqu'un champ ne peut être quitté (END_FN retourne une valeur non nulle, CODEISAM non résolu), le champ courant est sélectionné et le curseur est placé en colonne 1.

Comments

Les commentaires sont implémentés comme en mode caractère dans les PAGES, MPAGES et BC.

Si le commentaire dépasse la largeur de la page (en caractères), le texte est tronqué (à améliorer dans une version future).

La fonction SCR_comment() n'est pas opérationnelle dans la mesure où on ne connaît pas la fenêtre destinataire (à améliorer).

Corrections et Bugs

TOOLBARS

Si l'image du toolbar n'existe pas dans la liste des GSCR_PIXMAPS, la première image est utilisée au lieu de planter le programme.

NUM LOCK

Les chiffres et autres caractères du pad numérique fonctionnent normalement. En fait, sous X, ces touches ne retournent pas les mêmes codes que les touches normales du clavier.

MPAGE

La souris ne permettait pas de sélectionner un record dans les lpg, bien que l'affichage le faisait croire. On peut maintenant cliquer ou double-cliquer sur une lpg pour entrer en édition.

Fenêtres modales

Toutes les fenêtres sont définies comme modales. Elles sont également "transient" par rapport à la fenêtre en cours au moment de leur création ou de leur édition.

Cela ne fonctionne cependant pas dans certains cas. On cherche...

MP_IMPORT

Non implémenté

ABORT dans les MPAGES

Non corrigé

Retour en édition de la APG dans un BC_edit_lbcs()

Non corrigé.

MPAGE sans champ dans APG

Non corrigé.

Fenêtres sans titre

Non implémenté.

Champs avec ALLOWED

Non implémenté.

WX+, ...

Non implémenté.

Champs EDITOR

Non implémenté.

Champs Radio

Non implémenté.

Menus avec sélection

Non implémenté.

AB_EDIT_ISAM

Non implémenté.

PG_EDIT_ISAM

Non implémenté.

BC_AB_EDIT_ISAM

Non implémenté.

TPAGES

Non implémenté.

Icône fenêtre

Non implémenté.

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be