Guide de Référence
OpenTool comporte trois types de fichiers de configuration :
-
configuration générale : opentool.ini (Windows) ou .opentoolrc
(Unix)
-
schéma de données : fichiers *.ml
-
interfaces et méthodes : fichier *.br
Les fichiers de configuration générale sont cherchés
dans les répertoires suivants :
-
<tool dir>/bin/
-
C:\WINDOWS (Windows), $HOME (Unix)
-
répertoire courant
Les fichiers .ml et .br sont cherchés dans les répertoires
déclarés dans la variable ConfigPath de la configuration
générale.
Variables de la configuration générale
Options reconnues par l'outil
Les options suivantes peuvent être utilisées dans les
fichiers .ml et .br pour qualifier certaines entités de configuration.
- -abstract (Class) Déclare une classe abstraite.
- -abstract (DIAGRAM,BROWSER) Déclare une config abstraite, c.à d. non exécutable.
- -autoexpand (DIAGRAM) Le taille du père croît pour contenir les entités désignées.
- -color (RULE) Spécifie la couleur associée à la règle.
- -combo (FORM) Force une combo box à la place d'une liste.
- -dblclick (METHOD, DIAGRAM, DO) Action déclenchée sur double-click.
- -destroy (DO) L'action décrit la destruction.
- -dontfollowdaddy (DIAGRAM) Entité graphique ne se déplace pas quand le parent bouge.
- -ei (RULE) Spécifie le niveau d'erreur comme étant égal à i.
- -extend (METHOD) Rallonge une méthode précédemment définie.
- -hide (FORM) quand le WHEN d'un champ n'est pas vérifié, masque plutôt que grise.
- -hline (DIAGRAM) Trait horizontal entre groupes -inbox.
- -icon[name] (Class, CREATE) Associe une icône à l'entité. Utilisée dans la barre d'outils.
- -id (Attribute) attribut identifiant.
-id (RULE) Règle invoquée par CHECKID() pour trouver un nom unique.
- -image[name] (DIAGRAM) Nom d'une image (bitmap ou métafichier) à afficher dans la boîte.
- -inbox (DIAGRAM) Contraint le composant à une organisation en groupes dans son parent.
- -key[key] (DO) Déclenche l'action sur une touche du clavier.
- -left -right -above -below (DIAGRAM) Précise le positionnement de la boîte liée.
- -linkends -linkcenter (DIAGRAM) Lie une boîte à un lien.
- -list (FORM) Force une liste à la place d'une combo box.
- -magnetx (DIAGRAM) à voir
- -menu (INSERT, DO, CREATE) Insère l'action dans la barre de menus.
- -menubefore[label] -menuafter[label] (METHOD, DIAGRAM) Positionne une commande dans la barre de menus.
label est un nom absolu de commande, par ex. File,Quit. label peut contenir des * pour représenter n'importe
quel groupe de lettres.
- -menubefore[label] -menuafter[label] (METHOD, DIAGRAM) Positionne une commande dans la barre de menus.
label est un nom absolu de commande, par ex. File,Quit. label peut contenir des * pour représenter n'importe
quel groupe de lettres.
- -menukill[label] (BROWSER, DIAGRAM, CLUSTER) Supprime des commandes de la barre de menus.
- -menusep (METHOD, DIAGRAM) Insère un séparateur avant l'item de menu.
- -merge (DIAGRAM) obsolète. cf. -merged.
- -merged (DIAGRAM) Fusion de branches.
- -noimplicitidrule (Class) Supprime la règle automatique de vérification des -id.
- -nomenu (INSERT, DO, CREATE) Supprime l'action de la barre de menus.
- -norm (INSERT, CREATE) Pas de suppression ou destruction possible.
- -notool (CREATE) Supprime l'action de la barre de boutons.
- -notselectable (DIAGRAM) Entité graphique non sélectionnable.
- -now (RULE) Règle à déclenchement automatique.
- -paste (CREATE) a voir
- -random (DIAGRAM) Initialisation aléatoire du routage de lien.
- -redefine (METHOD) Remplace une méthode précédemment définie.
- -remove (DO) L'action décrit la suppression.
- -repeat (CREATE) creation en boucle.
- -span (FORM) Le champ occupe toute la place disponible.
- -suffix[suff] (CLUSTER) Déclare le suffixe du répertoire de sauvegarde.
- -tail (DIAGRAM) déclare un lien attaché que d'un coté.
- -tool (DO, INSERT, METHOD, DIAGRAM) Insère l'action dans la barre de boutons.
- -toolsep (DO, INSERT, METHOD, DIAGRAM) Insère un séparateur avant l'item de menu.
- -vspace (DIAGRAM) Espace vertical entre groupes -inbox.
- -warn (RULE) Equivalent à -e3.
- -when[bool] (DIAGRAM) Expression booléenne conditionnant l'affichage.
- -width[expr] -height[expr] (DIAGRAM) Pour dimensionner une boîte. Une valeur positive donne la taille à la création, une valeur négative s'impose en permanence.
Opérateurs du langage OTScript
-
- NOT (b) négation
- STR (x) représentation chaîne de x
- INT (x) convertion de x en entier; pour un objet, retourne son numéro
- REAL (x) convertion de x en réel
- SUBSTR (s,i,j) extraction de sous-chaîne
- STRSUBSTITUTE (s1, s2, s3) substitue dans s1 toutes les occurrences de s2 par s3
- STRSUBSTITUTEID idem, mais substitue seulement des identificateurs entiers
- STRCNT (s) nombre de caractères
- STRUPPER (s) convertit toute la chaîne en majuscules
- STRLOWER (s) convertit toute la chaîne en minuscules
- STRUPPER1ST (s) convertit le premier caractère de la chaîne en majuscule
- STRLOWER1ST (s) convertit le premier caractère de la chaîne en minuscule
- STRGETUPPER (s) conserve uniquement les majuscules de s
- STRISID (s) teste si s est un identificateur valide: 1er caractère lettre ou _, les suivants lettre, chiffre ou _
- STRMATCH (s,pattern) teste si s vérifie le motif pattern; attention, ignore la casse dans la comparaison
- STRINDENT (s,n) modifie l'indentation de s, a gauche ou à droite suivant le signe de n
- CLASSNAME (x) nom de la classe de x
- CHECKID (x) attribue à x un identifiant unique; utilise pour cela les options -id des attributs ou des règles
- CHECKIDEXT (x, id, range) idem, précise en plus le numéro d'id et l'indice de départ
- DESTROY (x) détruit l'entité x
- $CNT (s) nombre d'éléments de s
- $NO (s) TRUE si s est vide
- $SOME (s) TRUE si s est non vide
- $ISEMPTY backward compatibility
- $AT (s,i) extrait le i ème élément de s
- $INDEX (s,e) index de l'élément e dans s
- $FIRST (s) extrait le premier élément de s
- $LAST (s) extrait le dernier élément de s
- $REV (s) inverse l'ordre des éléments de s
- $SORT
- $SET (s) supprime les redondances
- $STR (s) représentation chaîne de s
- $MIN (s) extrait l'élément minimum de s
- $MAX (s) extrait l'élément maximum de s
- $INTERVAL (s) complète s de tous les éléments absents entre son min et son max
-
- INFO (label) ouvre une boîte d'information
- INFOM idem, mais la boîte est non modale
- SHOWMSG backward compatibility
- OK (label) ouvre une boîte oui-non
- INPUTBOOL backward compatibility
- CHOICE (label, nomsBoutons) ouvre une boîte à plusieurs boutons ; retourne le n° de bouton pressé
- SHOWFORM (x) ouvre ou retrouve un formulaire sur l'entité x
- SHOWTEXT (text,label) affiche un texte avec un titre
- SHOWLIST (list,label) ouvre une liste résultat
- INPUTLINE (line,label) saisit une ligne de texte
- INPUTFROMLIST (list,label) ouvre une boîte de choix dans une liste
- CLICKINLIST (list,label) idem, sauf dans un diagramme, attend un clic
- REQUESTFILER (nomDéfaut, suffixes) ouvre un dialogue de saisie de fichier pour lecture (bouton ouvrir)
- REQUESTFILEW (nomDéfaut, suffixes) ouvre un dialogue de saisie de fichier pour écriture (bouton enregistrer)
- HELP (n) ouvre le fichier d'aide en ligne html de nom n, situé dans hlplang. Le # est autorisé.
-
- GETCONFIG (sect,clé) lit une entrée dans le fichier de configuration (.opentoolrc ou opentool.ini)
- GETENV (key) lit une variable d'environnement.
- SETENV (key,val) affecte une variable d'environnement.
- SYS (expr) exécute une commande système (sans attente de la terminaison de la commande)
- SYSW (expr) exécute une commande système (avec attente de la terminaison de la commande)
- EDIT (file) ouvre un fichier document (par ex., si file = toto.doc, lance Word et charge toto.doc)
- BEEP
- BIP backward compatibility
- SAVEDIR répertoire de sauvegarde du fichier courant
- TOOLDIR répertoire d'installation d'OpenTool
- CONFIGDIRS répertoires de configuration d'OpenTool (ConfigPath)
- DIRSEP séparateur de nom de fichier ; \ ou /
- MAIN nom de la configuration courante
- OPENBUFF ouvre un stream en écriture sur un tampon interne
- FOPENW (filename) ouvre un stream en écriture sur un fichier
- FEOL (code) convention de fin de ligne: 1 CrLf, 2 Lf, 3 Cr, 4 Transparent
- DDEEXECUTE (service,topic,data) connexion DDE
- DDEREQUEST (service,topic,item)
- DDEPOKE (service,topic,item,data)
- DDEOPEN
- CLOSE ferme le stream courant (FOPENW ou OPENBUFF)
- FCLOSE backward compatibility
- PUT écrit s sur le stream courant
- PUTPREFIX déclare un préfixe de début de ligne ; pris en compte par les PUT()
- INDENT déclare un niveau d'indentation ; pris en compte par les PUT()
- DOCOPENW (file,format) prépare la génération de doc sur le fichier file au format format
- DOCCLOSE termine la génération de doc
- MKDIR (d) créé un répertoire (tous les niveaux intermédiaires)
- DIRLIST (d) liste le contenu du répertoire d
- FILEEXISTS (f)teste si le fichier f existe
- FILECOPY (f1,f2) copie le fichier f1 sur f2
- FILEDELETE (f) détruit le fichier f
- FILEDATE (f) date de modification du fichier f
- \set (var,val) affecte une variable easyDoc
- FIG (diagram, scale, légende) insère une figure
- IMAGERELOAD (name) force le rechargement de l'image name
- UNIX teste si la plateforme courante est unix
- WIN teste si la plateforme courante est Windows (3.xx, 95 ou NT)
- GC déclenche un garbage collector
-
- TRANSCRIPT (s) écrit une ligne dans là fenêtre principale
- TRANSCRIPTN (s) idem, sans saut de ligne à la fin
-
- CHECKRULESMATCHINGENTITY
- CHECKRULESMATCHING
-
- TIMENOW retourne le temps courant, en secondes depuis la date origine
- TIMETOSTR (t,format) convertit le temps t en chaîne, suivant le format spécifié.
-
- STRTOKENIZESTK
- SEARCHINFILE
- REPLACEINFILE
-
- COMPAREFLOAT renvoie 1, 0 ou -1
Format des dates-heures :
Lettre UNIX Libellé Exemple
M B Mois en toutes lettres janvier
m b Mois abrégé jan
J A Jour de la semaine en toutes lettres lundi
j a Jour de la semaine en abrégé lun
K Jour de la semaine super abrégé lu
Y Y Année sur 4 chiffres 1997
y y Année sur 2 chiffres 97
n e Mois sur 1 ou 2 chiffres 5
d Jour du mois sur 1 ou 2 chiffres 3
H k Heure (24) sur 1 ou 2 chiffres 4
h l Heure (12) sur 1 ou 2 chiffres 4
u Minute sur 1 ou 2 chiffres 5
s Seconde sur 1 ou 2 chiffres 7
N m Mois sur 2 chiffres 01
D d Jour du mois sur 2 chiffres 03
I H Heure (24) sur 2 chiffres 04
i I Heure (12) sur 2 chiffres 04
U M Minute sur 2 chiffres 05
S S Seconde sur 2 chiffres 07
Méthodes prédéfinies
VAR G_Pasting: Boolean;
METHOD Entity_::print: PRIMITIVE String;
METHOD Entity_::fullId: PRIMITIVE String;
METHOD Entity_::title: print;
METHOD Entity_::aggregatedEntities: PRIMITIVE Entity_;
METHOD Entity_::formFind: PRIMITIVE Entity_;
METHOD Entity_::formOpen: PRIMITIVE Entity_;
METHOD Entity_::class_: PRIMITIVE Class_;
METHOD Entity_::rootClass_: PRIMITIVE Class_;
METHOD Entity_::allCategories_: PRIMITIVE Category_;
METHOD Class_::category: PRIMITIVE Category_;
METHOD Class_::source: PRIMITIVE Text;
METHOD Class_::members: PRIMITIVE ClassMember_;
METHOD Class_::superClass: PRIMITIVE Class_;
METHOD Class_::subClasses: PRIMITIVE Class_;
METHOD Class_::allSubClasses: PRIMITIVE Class_;
METHOD ClassMember_::category: PRIMITIVE Category_;
METHOD ClassMember_::source: PRIMITIVE Text;
METHOD ClassMember_::compile(A1: Text): PRIMITIVE Text;
METHOD Entity_::diagramShow(A1: Entity_): PRIMITIVE Entity_;
METHOD Entity_::diagramHide(A1: Entity_): PRIMITIVE Entity_;
METHOD Entity_::diagramIsShowing(A1: Entity_): PRIMITIVE Boolean;
METHOD Entity_::getEditorSelection: PRIMITIVE Entity_;
METHOD Entity_::snoScan(A1: String): PRIMITIVE Boolean;
METHOD Entity_::snoRaiseError(A1: String): PRIMITIVE Entity_;
METHOD Entity_::snoGetError: PRIMITIVE String;
METHOD Entity_::otscriptEval(A1: String): PRIMITIVE Entity_;
METHOD Entity_::otscriptEvalFile(A1: String): PRIMITIVE Entity_;
Routines de DISPLAY
DISPLAY SimpleName(attributs, label)
DISPLAY SimpleBox(attributs, label)
DISPLAY BoxWithLists(attributs, label)
DISPLAY Link (
attributs trait,
label milieu,
attributs début,
attributs fin,
label début,
label fin )
Le type énumération G contient les sous-types suivants :
- GColor :
- GLocation :
- GOption :
- Default
- Thick
- Dash
- Filled
- Text
- Small
- Large
- Bold
- Italic
- Opt1
- Opt2
- Opt3
- Left
- Center
- Right
- GBoxShape :
- Square
- Round
- HorizontalSticks
- VerticalSticks
- Sausage
- Ellipse
- Circle
- BullsEye
- Hexagon
- Octogon
- Lozenge
- Folder
- Sheet
- Letter
- Man
- LifeLine
- Cube
- GLinkShape :
- OpenArrowTip
- ClosedArrowTip
- HalfArrowTip
- BallTip
- BoxTip
- PegTip
- BarTip
- CrossTip
- DiamondTip
Notion de transaction
Les actions OTScript s'exécutent dans une transaction :
Début de transaction
Initialise la transaction
Fin de transaction
Envoie le message create à tous les objects créés.
Applique les règles sur les objets modifiés1.
En cas d'erreur bloquante, undo les modifications et stoppe
Re-vérifie les anciennes erreurs
Envoie le message modified à tous les objets modifiés.
Mise à jour des éditeurs
1 Les objets modifiés
incluent les objects créés.
Méthodes appelées dans des circonstances particulières
Les méthodes suivantes sont susceptibles d'être appelées
par OpenTool au cours de la vie d'une entité :
- clusterClose envoyé lors de la fermeture d'un cluster.
- clusterName Demande à l'entité racine le nom du cluster.
- clusterOpen envoyé lors de l'ouverture d'un cluster.
- clusterRename gère le renommage d'un cluster lors de l'activation de 'save As'.
- clusterSaved envoyé après la sauvegarde d'un cluster.
- mcRequired liste les entités requises lors de l'export
- mcSynchro après m.à j. d'une entité externe
- initialize lors du NEW
- create en fin de transaction, sur les objets créés
- modified en fin de transaction, sur les objets modifiés
- destroyed lors du DESTROY
- print représention textuelle par défaut
- info texte de la bulle d'information
- title , <t>Title , <n><t>Title
avec <n> = nom de config d'éditeur
et <t> = browser, diagram, form
retourne le titre
- color pour obtenir la couleur d'une entité à afficher
- clusterName envoyé à l'entité racine pour calculer le nom du cluster
- clusterRename envoyé lors de l'activation de save as
- copyList , copyRefList utilisé par le copier/coller
- upgrade_to_x_y_z envoyé à l'entité racine lors du chargement d'un cluster, si le numéro de version de config diffère
- dropFiles(files) envoyé à l'entité racine lorsque des fichiers sont
droppés sur l'éditeur principal
Préprocesseur OTScript
Directives reconnues :
#ifdef SYM
#ifndef SYM
#endif
#define
Symboles prédéfinis: tous les noms de modules figurant dans
le MAIN, en majuscules.
Une symbole défini par #define est visible dans tout ce qui est
lu après, même dans un autre module.
Contrairement au langage C, les directives peuvent apparaître
en milieu de ligne.