GEM : Adapter les sources Pure C pour GNU GCC

Introduction

Développer sous GEM (2/14) Un accessoire de bureau

Les accessoires sont des exécutables spécifiques au GEM car ce dernier fonctionne sur des environnements mono-tâche (DOS, GEMDOS). Ce sont de petites applications résidentes en mémoire qui peuvent être appelées à tout moment à partir de la barre de menus du programme en cours. Cet article de ST Magazine 82 page 45 propose une horloge sous forme d'accesoire. Néanmoins, pour rendre les choses plus intéressantes il est possible d'utiliser l'horloge de deux façons en renommant le fichier en .ACC pour s'en servir en tant qu'accessoire ou en .APP pour l'utiliser comme application.

Modifications

Vraiment rien de compliqué. Encore une fois, il n'y a strictement aucune différence avec les épisodes précédents.

La particularité du listing est d'utiliser la variable booléene _app qui indique si l'exécutable est lancé en tant qu'application (par l'utilisateur) ou non (c'est-à-dire lancé par le système en tant qu'accessoire de bureau). Pour utiliser cette variable, il faut la déclarer comme étant externe : extern short _app; et elle est vraie si le programme est lancé en tant qu'application.

Sans autre modification on se retrouve avec un problème d'affichage : la fenêtre n'a pas une hauteur suffisante. If faut donc rajouter wind_calc(WC_BORDER, attr, xzt, yzt, wzt, hzt, &xf, &yf, &wf, &hf); avant l'appel à wind_create(), où xzt, yzt, hzt et hzt sont des variables à ajouter pour définir les dimensions de la zone de travail. La fonction wind_calc permet alors de calculer les dimensions totales en tenant compte des attributs de la fenêtre.

Le code

Télécharger tocante.zip Télécharger le code source

Commentaires

Le source original calcule les dimensions nécessaires à l'affichage du texte de l'heure et utilise celles-ci pour définir les dimensions totales de la fenêtre en multipliant la hauteur par deux !!! Ça fonctionne avec le GEM en ROM parce que la barre de titre a une hauteur identique à une ligne de texte mais avec XaAES ça ne passe pas : la barre de titre prend plus de place et vient recouvrir le texte de la zone de travail.

Deuxième point, dans le même genre que le premier, la position initiale de la fenêtre n'est pas assez éloignée du haut de l'écran. Cette fois-ci, dans certaines configurations, c'est la barre de menus qui recouvre la fenêtre de l'accessoire.