/***************************************************************/ /* */ /* helpServerS.PKG */ /* */ /* module HelpServer */ /* serveur */ /* */ /* Loïc Berthelot juillet 2000 */ /* */ /***************************************************************/ /* racine de l'arbre d'aide */ typeof hlpsRoot = [HlpsEl r1 r1 r1 r1];; fun _sendHelp (u, node, accu) = if (node == nil) then _DMSeventTag this u "answer" (strbuild (listcat accu ((" "::"4"::" "::nil)::nil) )) nil nil else ( let TREE_Val node -> val in let val.ref_HlpsEl::(itoa val.type_HlpsEl)::(_locCli this (UtoC u) val.ref_HlpsEl nil)::nil -> hlpEl in _sendHelp u (TREE_NextBrother node) (listcat accu (hlpEl::nil)); );; fun _actionAskCb (from, u, action, param, ulist, tag) = /* on récupère les coordonées du noeud à partir de */ /* la référence passée en paramètre */ let _hlpsRefToList param nil -> coord in /* on récupère le noeud à partir des coord. */ let TREE_SearchNodeWithCoordinates hlpsRoot coord -> node in if (!strcmp param "0_0") /* on envoie la racine de l'aide */ then ( let TREE_Val hlpsRoot -> val in /* titre */ let (val.ref_HlpsEl::"3"::(_locCli this (UtoC u) val.ref_HlpsEl nil)::nil):: /* espace */ (" "::"4"::" "::nil)::nil -> accu in _sendHelp u (TREE_FirstChild hlpsRoot) accu; ) /* on envoie la référence demandée */ else ( let TREE_Father node -> father in let TREE_Val node -> val in let TREE_Val father -> fatherVal in /* titre */ let (val.ref_HlpsEl::"3"::(_locCli this (UtoC u) val.ref_HlpsEl nil)::nil):: /* espace */ (" "::"4"::" "::nil):: /* bouton previous */ (fatherVal.ref_HlpsEl::"2"::" "::nil)::nil -> accu in _sendHelp u (TREE_FirstChild node) accu; ); 1;; /************************************/ /* */ /* IniDMI */ /* */ /* initialisation du module */ /* */ /************************************/ fun IniDMI(filename) = /* on charge l'arbre des références de l'aide */ set hlpsRoot = hlpsLoadTree; _DMSdefineActions this ["ask" @_actionAskCb]::nil;;