Création de menus dynamiques

Vous pouvez définir ou modifier tout ou partie d'un menu nommé name avec :

    (menu-bind name . prog)

et ajouter de nouveaux articles à un menu nommé name avec :

    (menu-extend name . prog)

Ici, prog est un programme qui représente les articles d'un menu. Examinez les fichiers situés dans le répertoire :

    $TEXMACS_PATH/progs/menu

pour voir comment les menus standards de TeXmacs sont définis.

En fait, le programme prog dans menu-set ou menu-append consiste en une liste d'articles qui peuvent prendre l'une des formes suivantes :

    (=> "pulldown menu name" menu-definition)

(-> "pullright menu name" menu-definition)

("entry" action)

–-

(if condition menu-definition)

(link variable)

Les constructeurs => et -> sont utilisés pour créer des menus déroulants vers le bas ou la droite et menu-definition doit contenir un programme qui crée le sous-menu. Le constructeur ("entry" action) crée une entrée ordinaire, pour laquelle action est compilée et exécutée quand on clique sur entry. Les articles d'un menu peuvent être séparés avec –-. Le constructeur if est utilisé pour insérer des articles de menus si et seulement si une certaine condition est satisfaite (par exemple, si on est en mode math).

Enfin, si l'on déclare un menu name, on peut utiliser ce menu indirectement avec le constructeur link. Cette façon de faire procure deux avantages :

Les menus standards principaux de TeXmacs sont : texmacs-menu, texmacs-menu, texmacs-popup-menu, texmacs-main-icons, texmacs-context-icons et texmacs-extra-icons. Les autres menus standards indirects sont : file-menu, edit-menu, insert-menu, text-menu, paragraph-menu, document-menu, options-menu et help-menu.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".