Audela |
![]() |
Le fichier aud.tcl est le fichier principal de Audace en ce sens qu'il est celui qui génère l'interface graphique principale du logiciel.
L'application est en fait bâtie à l'intérieur d'un namespace appelé ::audace qui regroupe les fonctions et variables qui ont rapport à cette interface principale. Le fichier est composé de trois parties : la première charge les librairies nécessaires ainsi que les fichiers de Audace, la seconde correspond au corps de l'interface graphique, et la dernière est le lancement de cette interface.
Les premières actions réalisées lorsque ce fichier est chargé sont le chargement des différentes librairies nécessaires au fonctionnement de Audace. Les trois types de librairies chargées ici sont :
C'est ce namespace qui définit le comportement de l'interface graphique principale de Audace. La commande qui permet de lancer l'application est ::audace::run. L'appel aux autres commandes n'est issu que de celui là. D'ailleurs l'évaluation d'un namespace ne produit rien, sinon la connaissance par TCL de son contenu : c'est pour cela qu'à la fin du fichier il n'y a qu'une seule commande : ::audace::run.
C'est la commande qui permet de lancer l'interface graphique. Normalement on ne doit faire appel à aucune autre commande de ce namespace directement. Elle ne fait qu'enchaîner une suite de commandes qui vont mettre en place l'interface : d'abord initialiser les variables globales, ensuite créer l'interface graphique, puis les menus, effectuer des initialisations diverses, et enfin démarrer l'affichage de l'horloge. L'argument this est optionnel : il permet de spécifier le chemin tk de la fenêtre; s'il est omis, le chemin de la fenêtre principale de Audace est .audace
Cette commande initialise les variables globales de l'application au travers d'un tableau global (audace). Cela passe par la création du buffer d'images de Audace, puis la visualisation (lien entre le buffer et le canvas d'affichage), la création de la console, et quelques couleurs.
Cette commande créée l'interface graphique proprement dite. Elle fixe la variable du namespace This avec le chemin de la fenêtre (.audace dans la plupart des cas). Ensuite la fenêtre principale est créée suivant ce chemin. Puis c'est la création de tous les éléments graphiques de la fenêtre. Notez que les ascenseurs qui permettent de se déplacer sur l'image lorsqu'elle est trop grande par rapport à la fenêtre, sont créés dans la commande Scroll_Canvas décrite plus bas. Enfin quelques bindings sont établis pour faire réagir les barres de seuils notamment. Tous les fichiers du sous-répertoire panneau sont chargés par cette fonction.
C'est la commande qui permet de créer la barre de menu qui se trouve en haut de l'application. Tk définit un certain nombre de commandes qui les manipulent, mais elles ne sont pas très pratiques à utiliser. Elles ont été intégrées à d'autres fonctions (regroupées dans menu.tcl) pour en avoir une utilisation facile. Il faut se reporter aux explications du fichier menu.tcl pour en connaître le fonctionnement (ce fichier est une adaptation de l'exemple donné dans Practical programming in Tcl/Tk, B. Welsh). C'est dans cette commande que les menus associés à chaque panneau sont ajoutés.
Cette commande réalise les dernières initialisations, notamment le chargement du fichier (config.ini) qui décrit la configuration du logiciel.
Commande appelée lorsque l'une des barres de seuils est relâchée, afin de recalculer et d'afficher l'image avec les nouvelles valeurs de seuils.
Commande appelée lorsqu'on clique sur l'une des valeurs des seuils de visualisation avec le bouton gauche de la souris. Cela a pour rôle d'afficher l'image avec des seuils optimaux pour analyser le fond de ciel de l'image.
Commande appelée lorsqu'on clique sur l'une des valeurs des seuils de visualisation avec le bouton droit de la souris. Cela ouvre une fenêtre qui permet de modifier les valeurs minimales et maximales des barres de seuil.
Cette commande récupère la date et l'heure, et les affiche dans la barre en bas de la fenêtre Audace. Pour que ces données soient rafraîchies toutes les secondes, on a recours à la commande after, qui programme une commande pour qu'elle s'exécute au bout d'un nombre fixé de millisecondes. Logiquement, on rappelle la commande ::audace::dispClock1. Il est à noter qu'il faut repréciser le namespace pour l'appel à after, car l'appel à dispClock1 est placé dans la file d'évènements, la commande retourne immédiatement, pour terminer l'actuel dispClock1. Elle sera exécutée dans le namespace de base (::), qui lui n'a pas de commande ::dispClock1 (d'où la nécessité de préciser ::audace::dispClock1).
Cette commande fait appel directement à la commande loadima (sans argument), qui demandera le nom de fichier par un navigateur.
De même que pour ::audace::charger.
Affiche l'image avec des seuils optimaux pour analyser le fond de ciel de l'image.
Cette commande est appelée en réaction au choix d'affichage des panneaux dans le menu "panneau".
Cette commande enregistre la configuration dans le répertoire du logiciel. Le fichier généré config.ini est nu fichier TCL, qui est exécuté au chargement du logiciel pour modifier la configuration par défaut.
Cette commande est appelée par le menu >Scripts>Nouveau. Elle fait appel à ::newScript::run pour récupérer un nom de fichier, créer un fichier vide à ce nom (certains éditeurs n'acceptent pas d'être ouverts sur un fichier qui n'existe pas, tels certains outils de MicroSoft), et exécuter le logiciel d'édition, dont le nom est contenu dans la variable conf(editscript).
Cette commande est appelée par le menu >Scripts>Editer : elle lance l'éditeur indiqué dans la variable conf(editscript).
Exécute le contenu du fichier qui est issu de la boîte de dialogue de sélection de fichier (explorateur).
Sort du logiciel en demandant confirmation.
Change l'état de l'ensemble du menu. Le paramètre state peut valoir normal ou disabled. Par exemple, ::audace::menustate disabled rend tous les menus inactifs, et donc on ne peut plus lancer les actions correspondantes.
Commande qui permet de modifier l'apparence du curseur lorsqu'il est sur la zone image de Audace. Les curseurs sont définis par leurs noms. Ainsi le curseur "target" est une cible formé de deux cercles concentriques. Reportez vous à la documentation de TK pour connaître la liste des curseurs disponibles.
Commande qui permet de modifier la couleur du fond de l'écran. Les couleurs sont codées en RGB sous la forme suivante : #rrggbb, où les r, g et b sont des nombres hexadécimaux.
Par exemple :::audace::bg #0000FF
donne un fond bleu.
Tk sait aussi reconnaître certains noms tels que red, green, blue, grey75, etc. Consultez la documentation de TK pour avoir plus de renseignements.
Cette commande réalise la conversion entre des coordonnées écran et des coordonnées canvas. L'argument coord est une liste de deux entiers : les coordonnées x et y du point. En retour, cette fonction renvoie une liste de deux entiers qui correspond aux coordonnées du point dans le repère du canvas. Le canvas en question est celui d'affichage des images dans l'interface principale de Audace.
Cette commande réalise la conversion de coordonnées canvas en coordonnées image : par exemple le point (1,1) de l'image est en bas à gauche de l'image tandis que le point (1,1) du canvas est dans son coin supérieur gauche. L'argument et le résultat sont du même type que pour la fonction screen2Canvas.
Cette commande réalise l'opération inverse de la commande précédente.
Cette commande initialise le comportement de la souris sur le canvas, notamment au niveau du tracé d'une boîte sur l'image, pour désigner une étoile ou autre chose. Ces initialisations consistent en des bindings sur les différents événements de la souris (bouton gauche, droit, mouvement). Les différents rôles que jouent la souris sont codés dans la variable audace(MouseState). Elle peut prendre les valeurs rien, dragging, context suivant que la souris ne fait rien de particulier, est en train de tracer une boîte sur l'image, ou est en train d'afficher un menu contextuel.
Cette commande prend en entrée des coordonnées écran, les transforme en coordonnées image, et affiche dans la barre en bas de la fenêtre principale les coordonnées image du curseur, ainsi que l'intensité du pixel à cet endroit.
Entame une opération de dragging en initialisant la variable audace(box,1) avec les coordonnées canvas du curseur. Toutefois les coordonnées passées au travers de la variable coord sont des coordonnées écran (issues directement du binding). Cette remarque est valable pour les trois commandes box.. Cette commande ne fait rien si aucune image n'est chargée en mémoire.
Cette commande clôture l'opération de dragging en formant la liste audace(box) qui regroupe les coordonnées des deux coins de la boîte, dans l'ordre x1, y1 x2, y2. Si les coordonnées d'arrivée sont égales aux coordonnées de départ alors le cadre est effacé.
Cette commande met à jour la variable audace(box,2) qui est la coordonnée du deuxième coin de la boîte (toujours le curseur). En même temps il y a redimensionnement de la boîte pour la faire correspondre aux coordonnées. boxDrag est appelée en réponse à l'évènement "déplacement avec le bouton gauche appuyé" sur le widget canvas.
Configure les deux barres de seuils pour modifier la dynamique de réglage de ces seuils.
Cette commande change le seuil haut de l'image, en modifiant également la valeur du texte du seuil. Elle est appelée par le binding sur la barre de seuil.
De même que changeHiCut, mais pour le seuil bas.
Affiche la fenêtre d'information sur l'en-tête FITS de l'image en mémoire.
Retourne la date TU sous la forme d'une liste YYYY MM DD hh mm ss.
Le lancement de l'interface graphique consiste à cacher la fenêtre mère, puis à exécuter la commande ::audace::run. C'est cette commande qui met en place toute l'interface graphique et les enchaînements décrits par les bindings. Après qu'elle soit exécutée, Audela rentre dans une boucle d'évènements interne qui dispatche les différents événements tels que ceux de la souris, du clavier, etc. Audela ne sortira de cette boucle que par la commande TCL exit.