/* Module guestControl 1.0 by iri */ /* rev 1.1 by iri */ /* rev 1.2 by iri */ /* Module guestControl 2.0 - part Editor */ /* by iri : info@irizone.net - 02/2004 */ /* utilisation : licence type GNU/GPL */ /* code repris à 0 depuis les versions 1.x */ /* rev 2.1 - by iri - 03/2004 */ /* Copyright (c) 2004 iri. Ce fichier fait partie du plugin "guestControl". guestControl est un programme libre; vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU General Public License (Licence Publique Générale GNU) telle qu'elle a été publiée par la Free Software Foundation : soit la version 2 de la licence, soit (comme vous le souhaitez) toute version ultérieure. guestControl est distribué dans l'espoir qu'il sera utile, mais SANS LA MOINDRE GARANTIE; pas même la garantie implicite de COMMERCIABILITE ou d'ADEQUATION A UN BUT PARTICULIER. Voir la GNU General Public License pour plus de détails. Vous devriez avoir reçu une copie de la GNU General Public License en même temps que ce programme (fichier "COPYING", version 2 de la GNU General Public License); sinon, merci d'écrire à la Free Software Foundation, Inc, 59 Temple Place, Suite 330, Boston, MA02111-1307 USA. De plus, guestControl peut être intégré à toute distribution de tout ou partie du SCS (Set Construction Set) et basé sur la technologie Scol, à l'exclusion de toute distribution complète ou partielle payante (autre que le prix d'envoi ou d'édition du support de la distribution). Vous devez respecter la GNU General Public License à tous les égards. Si vous modifiez ce fichier, vous pouvez étendre cette exception à votre version du fichier, mais n'êtes pas obligé de le faire. Si vous ne souhaitez pas le faire, supprimez cette déclaration l'exception de votre version. */ /****************************************/ /* Variable pouvant être modifiéé */ /* pour augmenter le nombre de boutons */ /* Relancer l'éditeur ensuite. */ /* nbControl : number of buttons, */ /* can be changed (restart editor after)*/ /****************************************/ var nbControl = 10;; /* DO NOT MODIFY BELOW - NE PS MODIFIER CI-DESSOUS */ typeof control = tab ObjText;; /* nbControl control */ typeof editWin = ObjWin;; /* win editor */ typeof aide = ObjText;; typeof bmp = ObjText;; /* contient le chemin du bitmap des boutons */ typeof bg = ObjText;; /* contient le chemin du bitmap de fond */ var color = 0;; /* couleur par défaut du titre des boutons */ /* callback sélection des fichiers */ fun _OpenBmp(box, b, s)= let _PtoScol s -> name in if name == nil then nil else if b == 1 then _SETtext aide name else if b == 2 then _SETtext bg name else if b == 3 then _SETtext bmp name else nil; 0;; fun _aide(a, b)= _DLGrflopen (_DLGOpenFile _channel editWin _GETtext aide nil "TEXTE_JPEG (*.txt;*.jpg)\0*.txt;*.jpg\0\0") @_OpenBmp 1;; fun _bg(a, b)= _DLGrflopen (_DLGOpenFile _channel editWin _GETtext bg nil "JPEG (*.jpg)\0*.JPG\0\0") @_OpenBmp 2;; fun _bmp(a, b)= _DLGrflopen (_DLGOpenFile _channel editWin _GETtext bmp nil "JPEG (*.jpg)\0*.JPG\0\0") @_OpenBmp 3;; fun _paintE(win, h)= let _GETwindowPositionSize editWin -> [x y w h2] in _PAINTrectangle editWin 90 h w-95 20 DRAW_SOLID 1 0 DRAW_SOLID color;; /* détermine si le clic a eu lieu dans une zone précise de la fenêtre de l'éditeur */ fun is_in_box(x, y, bx, by, bw, bh)= (x>=bx) && (x<=(bx+bw)) && (y>=by) && (y<=(by+bh));; /* affecte la couleur choisie */ fun _color(c)=if c!=nil then set color=c else nil;; /* callbck clic ds la fenêtre d'édition */ /* si clic ds la pastille colorée, ouverture de la map */ fun _clickE(win, h, x, y, button)= if button then ( let _GETwindowPositionSize editWin -> [x2 y2 w2 h2] in if is_in_box x y 90 h w2-95 20 then _CRcolorMap _channel editWin 100 100 (_locEditor "choosecolor" nil) @_color color else nil; 0 ) else 0;; fun creaButton(i, w)= let ((i*5)+(i*20))+5 -> p in let _GETwindowPositionSize editWin -> [x y w h] in ( _CRtext _channel editWin 5 p 80 20 ET_BORDER strcat (_locEditor "control" nil) itoa i+1; _CReditLine _channel editWin 90 p w-95 20 ET_DOWN|ET_ALIGN_LEFT "" );; fun creaControl()= set control = create_tab nbControl @creaButton 0;; fun setControl(l, i)= if l == nil || i >= nbControl then 0 else let l->[a n] in (_SETtext control.i a; setControl n i+1);; fun getControl(l)= if l==nil then nil else let l->[q n] in if !strcmp hd q "control" then (hd tl q)::getControl n else getControl n;; fun load(l)= _SETtext aide getInfo l "filehelp"; _SETtext bg getInfo l "bmpBG"; _SETtext bmp getInfo l "bmpButton"; set color = atoi getInfo l "colorTitle"; setControl getControl l 0; 0;; fun getText(i)= if i==nbControl then nil else let _GETtext control.i -> t in if (t==nil) || (strlen t)==0 then getText i+1 else ("event"::(_GETtext control.i)::nil):: ("control"::(_GETtext control.i)::nil):: getText i+1;; fun save(s, n)= let (_GETtext aide)::(_GETtext bmp)::(_GETtext bg)::nil -> l in ("registerF"::l):: ("action"::"start"::"start"::nil):: ("action"::"destroy"::"destroy"::nil):: ("event"::"shown"::"shown"::nil):: ("event"::"destroyed"::"destroyed"::nil):: ("event"::"started"::"started"::nil):: ("event"::"click"::nil):: ("zoneC"::"Control"::nil):: ("filehelp"::(_GETtext aide)::nil):: ("bmpBG"::(_GETtext bg)::nil):: ("bmpButton"::(_GETtext bmp)::nil):: ("colorTitle"::(itoa color)::nil):: getText 0;; fun IniEditor(filename)= let 315 -> w in let (((nbControl+4)*5)+((nbControl+4)*20))+5 -> h in let startEditor _channel nil 0 0 w h WN_NORMAL EDITOR_NORMAL filename "dms/admin/guestcontrol/guestcontrol.dmc" nil nil @load @save nil -> ed in ( set editWin = getEditWin ed; creaControl; let (nbControl*5) + (nbControl*20) -> hControl in ( _CBbutton _CRbutton _channel editWin 5 hControl+5 80 20 0 (_locEditor "aide" nil) @_aide 0; set aide = _CRtext _channel editWin 90 hControl+5 w-95 20 ET_DOWN let _GETtext aide -> s in if s != nil then s else "dms/admin/guestcontrol/res/aide.txt"; _CBbutton _CRbutton _channel editWin 5 hControl+30 80 20 0 (_locEditor "background" nil) @_bg 0; set bg = _CRtext _channel editWin 90 hControl+30 w-95 20 ET_DOWN let _GETtext bg -> s in if s != nil then s else "dms/admin/guestcontrol/res/bg.jpg"; _CBbutton _CRbutton _channel editWin 5 hControl+55 80 20 0 (_locEditor "button" nil) @_bmp 0; set bmp = _CRtext _channel editWin 90 hControl+55 w-95 20 ET_DOWN let _GETtext bmp -> s in if s != nil then s else "dms/admin/guestcontrol/res/bmp.jpg"; _CRtext _channel editWin 5 hControl+80 80 20 ET_BORDER (_locEditor "couleur" nil); _CBwinPaint editWin @_paintE hControl+80; _CBwinClick editWin @_clickE hControl+80 ); if filename==nil then nil else openDMI ed ); 0;;