Sommaire
Index
OpenTool
March 3, 1998

Guide de Référence



OpenTool comporte trois types de fichiers de configuration :

Les fichiers de configuration générale sont cherchés dans les répertoires suivants :
  1. <tool dir>/bin/
  2. C:\WINDOWS (Windows), $HOME (Unix)
  3. 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.