// by iri - http://www.irizone.net // may 2005 /* affiche un champ de recherche vers l'encyclopédie libre Wikipedia (hhtp://www.wikipedia.org) sur l'interface cliente d'un site DMS */ /* PART CLIENT */ typeof png = AlphaBitmap;; // ressource graphique du logo wikipedia typeof Cont = ObjContainer;; // container de l'interface typeof lang = S;; // langage à utiliser pour la recherche sur wikipedia typeof col = I;; // couleur du fond de l'interface /* resize de l'interface cliente */ fun _resize(x, s)= let x -> [win x y w h] in _SIZEcontainer Cont x y w h; 0 ;; /* destruction du module */ fun _end(a)= _DSalphaBitmap png; _DScontainer Cont; _DMSdelete this ;; /* fournie la valeur de langue renvoyé par le Scol Voy@ger */ /* <- S : valeur à renvoyer */ fun getLangScolpediaRsc()= let _getress "DefaultLanguage" -> l in if !strcmpi l "dutch" then "nl" else if !strcmpi l "french" then "fr" else if !strcmpi l "german" then "de" else if !strcmpi l "italian" then "it" else if !strcmpi l "japanese" then "ja" else if !strcmpi l "portuguese" then "pt" else if !strcmpi l "spanish" then "es" else if !strcmpi l "swedish" then "sv" else "en" ;; /* callback clic sur le logo wikipedia si clic droit, génération de l'événement éponyme sinon lancement de la recherche */ /* obj -> CompBitmap text -> CompText : champ de saisie x -> I : coordonnée x du clic dans l'objet y -> I : coordonnée y du clic dans l'objet btn -> I : bouton de la souris (gauche, mileu ou droit) mask -> I : touche CTRL, SHIFT ... associée au clic <- I */ fun cbGo(obj, text, x, y, btn, mask)= let _GETcompText text -> word in if RBUTTON == btn then // clic avec le bouton droit de la souris _DMSevent this "rightClicked" word nil else // autre clic ( _openbrowserhttp strcat "http://www.wikipedia.org/search-redirect.php?search=" strcat word strcat "&language=" lang; _DMSevent this "found" nil nil; ) ;; /* validation de la recherche par la touche Entrée ou par clik hors de l'objet */ /* obj -> CompText u -> I : paramètre utilisateur non utilisé type -> I : type de validation (non utilisé) t -> S : contenu du champ de recherche <- I */ fun cbGo2(obj, u, type, t)= _openbrowserhttp strcat "http://www.wikipedia.org/search-redirect.php?search=" strcat t strcat "&language=" lang; _DMSevent this "found" nil nil ;; /* callback de resize de l'interface */ /* obj -> ObjContainer ntext -> ObjNode : objet à resizer state -> I w -> I : nouvelle largeur h -> I : nouvelle hauteur <- ObjContainer */ fun cbContSize(obj, ntext, state, w, h)= _SIZEobjNode ntext w-35 20 0; _PAINTcontainer Cont ;; /* création de l'interface */ /* father -> ObjWin : fenêtre père (celle définie dans l'interface cliente du SCS) x -> I : coordonnée x par rapport à la fenêtre mère y -> I : " y " w -> I : largeur de l'interface h -> I : hauteur de l'interface title -> S : titre de l'interface le cas échéant flag -> I : zone définie dans le SCS (1) ou non (0) c -> I : couleur de fond de l'interface <- I : inutilisée */ fun createInterf(father, x, y, w, h, title, flag, c)= // ressource graphique set png = _LDalphaBitmap _channel _checkpack "dms/tools/scolpedia/scolpedia.png"; let if c == nil then 0 else c -> color in // création interface let _CRwindow _channel father x y w h if flag then WN_CHILDINSIDE|WN_NOCAPTION|WN_NOBORDER else WN_MENU title -> win in let _CRcontainerFromObjWin _channel win 0 0 w h CO_CHILDINSIDE color title -> cont in // // champ de saisie let _CRcontainerFromObjCont _channel cont 2 5 w-35 20 CO_CHILDINSIDE|CO_3DBORDER 0xffffff nil -> cont2 in let _CRcompText _channel cont2 nil [2 0] OBJ_ENABLE|OBJ_VISIBLE|OBJ_MW_FLEX|OBJ_RH_FLEX|CT_LEFT|CT_EDITLINE 0 w-39 20 nil _CRfont _channel 14 0 0 "Arial" [0 0 0 0] [0 85] nil nil -> text in // // bouton de lancement de la recherche / logo wikipedia let _CRcompBitmap _channel cont nil [w-30 5] OBJ_ENABLE|OBJ_VISIBLE|OBJ_LW_FLEX|OBJ_RH_FLEX 0 png 0 0 25 25 -> go in let _CONVERTcompTextToObjNode text -> ntext in ( // info bulle sur le logo / bouton _CRtoolTipDefault ntext 100 _loc this "SCOLPEDIA_SEARCH" nil 0 _CRfont _channel 14 0 0 "Arial" make_rgb 220 220 50; // callbacks _CBcompBitmapClick go @cbGo text; _CBcontainerSize cont @cbContSize ntext; _CBcompTextValidation text @cbGo2 0 CT_VALIDENTER|CT_VALIDCLICK; set Cont = cont; _PAINTcontainer cont2; _PAINTcontainer cont; ); _DMSevent this "shown" nil nil ;; /* fonction emettant directement une recherche sans passer par l'interface */ /* from -> DMI action -> S param -> S others -> [S r1] tag -> S <- I */ fun search(from, action, param, others, tag) = _openbrowserhttp strcat "http://www.wikipedia.org/search-redirect.php?search=" strcat param strcat "&language=" lang; _DMSevent this "found" nil nil ;; /* fonction affectant une nouvelle langue de recherche */ /* from -> DMI action -> S param -> S others -> [S r1] tag -> S <- I */ fun chgLang(from, action, param, others, tag) = set lang = param; _DMSevent this "changed" param nil ;; /* fonction affichant l'interface */ /* from -> DMI action -> S param -> S others -> [S r1] tag -> S <- I */ fun show(from, action, param, others, tag) = if Cont == nil then // l'interface est à créer let _DMSgetZone this "scolpedia" nil @_resize @_end -> [win x y w h] in let if w < 80 then 80 else w -> w in let if h < 30 then 30 else h -> h in if win == nil then // aucune zone définie pour ce module dans le SCS createInterf DMSwin nil nil 350 30 "scolpedia" 0 col else // une zone pour ce module a été définie dans le SCS createInterf win x y w h "scolpedia" 1 col else // l'interface est créée mais cachée. La montre ( _SHOWcontainer Cont CONTAINER_UNHIDDEN; 0 ) ;; /* fonction cachant l'interface */ /* from -> DMI action -> S param -> S others -> [S r1] tag -> S <- I */ fun hide(from, action, param, others, tag) = _SHOWcontainer Cont CONTAINER_HIDDEN; _DMSevent this "hidden" nil nil ;; /* initialisation du client */ /* param -> S : chaine fournie par le serveur avec les paramètres du dms <- I : non utilisée */ fun IniDMI (param)= // détermination de la langue à utiliser d'après la configuration du Scol Voy@ger set lang = getLangScolpediaRsc; // couleur de fond de l'interface telle que définie dans le dms set col = atoi param; // définition des fonctions associées aux actions clientes disponibles _DMSdefineActions this ["search" @search] :: ["chgLang" @chgLang]:: ["show" @show] :: ["hide" @hide] :: nil; 0;;