• Initialisation
  • Terminaison
  • Initialisation

    L'initialisation est simple, elle se limite souvent à l'appel d'une seule fonction en début de programme.


    boolean initialisation(char *nom_ressource,
                           int total_arbres,
                           int nbr_arbres)
    

    Cette fonction se charge de la plus grosse partie de l'inialisation. total_arbres est le nombre maximal d'arbres qui pourront être simultanément utilisés dans le programme ; nbr_arbres est le nombre d'arbres contenu dans le fichier nom_ressource. Il est bien évident que l'on doit avoir nbr_arbres <= total_arbres... En cas de problème, elle renvoie FAUX, sinon elle renvoie VRAI.

    Dans la majorité des cas, l'ensemble des boîtes de dialogue est décrit par un seul fichier ressource, et nbr_arbres = total_arbres. Dans le cas contraire, les arbres du ressource indiqué sont utilisés comme premiers arbres, arbres numéros 0 à (nbr_arbres - 1). Ceci permet, dans les deux cas, d'utiliser les noms des arbres déclarés dans le fichier .h associé au fichier RSC, s'il a été créé avec un logiciel comme interface.

    La bibliothèque est capable de charger les ressources classiques, mais aussi les ressources étendus (plus de 64 ko) crées par Interface. En revanche, il ne reconnaît pas, actuellement, les ressources étendus de l'AES 4. Si vous ne voulez charger aucun ressource, il suffit de passer NULL comme premier paramètre.


    Cette fonction prépare les arbres (et les charge si nécessaire), ouvre une station de travail graphique, déclare l'application au système et cherche les dimensions maximales d'une fenêtre, si nécessaire : variables x_gem, y_gem, larg_gem et haut_gem. La station graphique ouverte est accessible par la variable globale _PRG_station.

    Notes sur la version GEM

    Le chargement des ressources peut se faire de deux façons :

  • utilisation de rsrc_load(). Les ressources de type Interface étendu ne sont pas reconnus.
  • utilisation de routines personnelles. Ces routines sont similaires à celles utilisées pour la version X-Window et ont donc les mêmes limitations. Elles sont utilisées si le symbole _XRSRC_ est défini.
  • Si le symbole _DEBOG_GEM_ est défini, l'initialisation commence par la création d'un fichier DBG_GEM.TXT dans lequel sont écrites différentes informations.

    Détail des opérations

    1. Recherche de la version du TOS
    2. Déclaration de l'application au GEM. Le numéro de l'application est dans application, variable globale.
    3. Recherche de la présence et de la version de GDOS
    4. Ouverture d'une station graphique « de base »
    5. Réservation des arbres
    6. Chargement du ressource et initialisation des arbres qu'il contient
    7. Obtention des dimensions du bureau pour définir x_gem et autres.
    8. Éventuellement, préparation pour l'utilisation d'Open GL (compilation avec l'option AVEC_OPEN_GL_)

    Notes sur la version X-Window

    Le programme vérifie la cohérence entre le nombre d'arbres indiqué pour le ressource (nbr_arbres) et le nombre réel d'arbres du ressource.

    Le fichier RSC est cherché d'abord dans le dossier depuis lequel est lancé le programme, puis dans le dossier défini par la macro LIB_RSC_, qui doit être définie, comme une chaîne. Le plus simple est, dans le Makefile, de demander à passer l'option -DLIB_RSC="$(HOME)/lib" au compilateur C et, lors de l'installation du programme compilé, de placer le fichier RSC dans $(HOME)/lib. Si vous avez les droits sur /usr/local, c'est bien sûr un meilleur choix...

    La fonte peut être définie par l'utilisateur dans son fichier .Xdefaults, ou équivalent, grâce au champ X.fonte, où X peut être soit le nom du programme déduit du nom du fichier RSC, soit (si la méthode précédente échoue) bib_x. Ainsi, pour définir l'utilisation de la fonte 5x7 par défaut, on peut ajouter la ligne

    bib_x.fonte: 5x7
    
    dans le fichier .Xdefaults.

    Il est aussi possible de choisir la fonte en définissant la variable globale BI_nom_fonte, qui doit contenir le nom de la fonte à utiliser suivant les conventions X-Window. Ceci doit être fait avant d'appeler la fonction

    Pour faciliter le développement, il est possible de forcer la synchronisation avec le serveur X en initialisant la variable BI_synchronisation à VRAI avant d'appeler la fonction.

    Détail des opérations

    1. Connexion avec le serveur X
    2. Recherche des paramètres par défaut de l'écran
    3. Déclaration des 16 couleurs de base
    4. Recherche d'une fonte utilisable
    5. Déclaration d'un GC interne pour les objets
    6. Ouverture d'une station graphique « de base »
    7. Réservation des arbres
    8. Préparation des boîtes d'alerte et du sélecteur de fichiers
    9. Chargement du ressource et initialisation des arbres
    10. Préparation des motifs de remplissage par défaut
    11. Définition des dimensions de l'écran : 800 par 600 par défaut, sinon variables BI_larg_defaut et BI_haut_defaut à définir avant l'appel de la fonction. Du fait de la grande variété d'écrans virtuels et du rô des gestionnaires de fenêtre dans la taille de l'écran, le programme ne cherche pas à connaître la taille réelle de l'écran, qui n'a de toute façon pas grande importance.

    Terminaison

    void fin_programme(void)
    

    Libère toutes les ressources utilisées par la bibliothèque d'interface. Après l'appel de cette fonction, aucune des fonctions de la bibliothèque ne doit être utilisée.

    Les fenêtres sont toutes fermées ; la fermeture est définitive. Si vous utilisez une routine de fermeture spéciale pour certaines fenêtres, cette routine est appelée de façon à permettre une fermeture propre. Dans ce cas, le dernier mot du message de fermeture (buffer[7]) est mis à -1, pour indiquer que la fermeture est obligatoire (voir le chapitre sur les fenêtres). La fenêtre est ensuite fermée quoi qu'il arrive.

    Notes sur la version GEM

    Détail des opérations

    1. Fermeture des fenêtres
    2. Coupure du menu
    3. Libération du ressource
    4. Libération des arbres
    5. Fermeture de la station graphique
    6. appl_exit()

    Notes sur la version X-Window

    Le paramètre numero_menu n'est pas utilisé.

    Détail des opérations

    1. Destruction de la barre de menus
    2. Destruction de toutes les fenêtres
    3. Destruction du sélecteur de fichier
    4. Libération de tous les ressources
    5. Libération de tous les arbres
    6. Libération de la fonte X
    7. Déconnexion du serveur X