/* ----------------------------------------------------------------------------- This source file is part of OpenSpace3D For the latest info, see http://www.openspace3d.com Copyright (c) 2012 I-maginer This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt ----------------------------------------------------------------------------- */ struct CurveSettings = [ CSET_sName : S, CSET_fMin : F, CSET_fMax : F, CSET_iNbDecimals : I, CSET_iColor : I ]mkCurveSettings;; fun saveList(l)= let sizelist l -> size in let nil -> ndata in let 0 -> i in ( while i < size do ( let nth_list l i -> [name curvestr] in set ndata = [(strcat "curveName" (itoa i)) name]:: //Here param names should have an underscore. Ex: "curveName_". Hopefully, not too serious here because values only, no path, node, etc. [(strcat "curveMin" (itoa i)) ftoa curvestr.CSET_fMin]:: [(strcat "curveMax" (itoa i)) ftoa curvestr.CSET_fMax]:: [(strcat "curveNbdec" (itoa i)) itoa curvestr.CSET_iNbDecimals]:: [(strcat "curveColor" (itoa i)) itoa curvestr.CSET_iColor]:: ["ACTION" (strcat "Input " name)]:: ndata; set i = i + 1; ); ndata; );; fun cbCloseEdit(p)= let p -> [posstr ctrldisplaytime ctrlupdaterate ctrlvgraduations ctrlhgraduations ctrllegend ctrllist ctrlprefix ctrlformat ctrlsavecsv ctrlsavesize ctrlpicturewidth ctrlpictureheight ctrlshow ctrlenable [lcstr]] in let ftoi (getEdCtrlFloatValue ctrldisplaytime) -> displaytime in let ftoi (getEdCtrlFloatValue ctrlupdaterate) -> updaterate in let ftoi (getEdCtrlFloatValue ctrlvgraduations) -> vgraduations in let ftoi (getEdCtrlFloatValue ctrlhgraduations) -> hgraduations in let getEdCtrlCheckState ctrllegend -> legend in let getEdCtrlTextLineValue ctrlprefix -> fileprefix in let getSelectedEdCtrlSelectPos ctrlformat -> dateformat in let getEdCtrlCheckState ctrlsavecsv -> savecsv in let getEdCtrlCheckState ctrlsavesize -> savesize in let ftoi (getEdCtrlFloatValue ctrlpicturewidth) -> picturewidth in let ftoi (getEdCtrlFloatValue ctrlpictureheight) -> pictureheight in let getEdCtrlCheckState ctrlshow -> show in let getEdCtrlCheckState ctrlenable -> enable in let saveList lcstr -> curvesave in let getInterfaceSaveData posstr -> possave in ["displaytime" itoa displaytime]:: ["updaterate" itoa updaterate]:: ["vgraduations" itoa vgraduations]:: ["hgraduations" itoa hgraduations]:: ["legend" itoa legend]:: ["fileprefix" fileprefix]:: ["dateformat" itoa dateformat]:: ["savecsv" itoa savecsv]:: ["savesize" itoa savesize]:: ["picturewidth" itoa picturewidth]:: ["pictureheight" itoa pictureheight]:: ["show" itoa show]:: ["enable" itoa enable]:: (lcat curvesave possave);; fun ftoaNd(val, nbdec)= if nbdec >= 6 then ftoa val else if nbdec == 0 then itoa (ftoi val) else if nbdec == 1 then ftoa1d val else if nbdec == 2 then ftoa2d val else if nbdec == 3 then ftoa3d val else if nbdec == 4 then ftoa4d val else if nbdec == 5 then ftoa5d val else nil;; fun loadCurves(inst)= let nil -> l in let nil -> curvename in let 0 -> i in ( while ((set curvename = getPluginInstanceParam inst (strcat "curveName" (itoa i))) != nil) do ( let atof (getPluginInstanceParam inst (strcat "curveMin" (itoa i))) -> curvemin in let atof (getPluginInstanceParam inst (strcat "curveMax" (itoa i))) -> curvemax in let atoi (getPluginInstanceParam inst (strcat "curveNbdec" (itoa i))) -> curvenbdec in let atoi (getPluginInstanceParam inst (strcat "curveColor" (itoa i))) -> curvecolor in let mkCurveSettings[curvename curvemin curvemax curvenbdec curvecolor] -> curvestr in set l = [curvename curvestr]::l; set i = i + 1; ); revertlist l; );; fun addCurve(l, name, curvemin, curvemax, nbdec, color)= let switchstr l name -> curvestr in if (curvestr != nil) then l else let mkCurveSettings[name curvemin curvemax nbdec color] -> curvestr in set l = lcat l [name curvestr]::nil;; fun removeCurve(l, name)= set l = remove_sid_from_list l name;; fun getCurveByName(l, name)= switchstr l name;; fun fillCurvesList(ctrllist, lcstr)= while (lcstr != nil) do ( let hd lcstr -> [name curvestr] in addEdCtrlList ctrllist name nil nil; set lcstr = tl lcstr; ); 0;; fun cbSelectList(ctrlstr, pos, elem, lval, type, p)= let p -> [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals [lcstr]] in let getCurveByName lcstr elem -> curvestr in if (curvestr != nil) then ( setEdCtrlColorButtonEnable ctrlcolor 1; setEdCtrlFloatEnable ctrlminvalue 1; setEdCtrlFloatEnable ctrlmaxvalue 1; setEdCtrlFloatEnable ctrlnbdecimals 1; setEdCtrlColorButtonColor ctrlcolor curvestr.CSET_iColor; setEdCtrlFloatValue ctrlminvalue curvestr.CSET_fMin; setEdCtrlFloatValue ctrlmaxvalue curvestr.CSET_fMax; setEdCtrlFloatValue ctrlnbdecimals (itof curvestr.CSET_iNbDecimals); setEdCtrlButtonEnable ctrlbtndel 1; setEdCtrlButtonEnable ctrlbtnren 1; ) else ( setEdCtrlColorButtonEnable ctrlcolor 0; setEdCtrlFloatEnable ctrlminvalue 0; setEdCtrlFloatEnable ctrlmaxvalue 0; setEdCtrlFloatEnable ctrlnbdecimals 0; setEdCtrlColorButtonColor ctrlcolor 0x0000ff; setEdCtrlFloatValue ctrlminvalue 0.0; setEdCtrlFloatValue ctrlmaxvalue 100.0; setEdCtrlFloatValue ctrlnbdecimals 1.0; setEdCtrlButtonEnable ctrlbtndel 0; setEdCtrlButtonEnable ctrlbtnren 0; ); 0;; fun cbBtnNewCurve(ctrlstr, text, p)= let p -> [[ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr] winstr ctrltext] in let dlcstr -> [lcstr] in let getEdCtrlTextLineValue ctrltext -> name in let getCurveByName lcstr name -> curvestr in if (curvestr != nil) then nil else ( mutate dlcstr <- [addCurve lcstr name 0.0 100.0 1 0x0000ff]; addEdCtrlList ctrllist name nil nil; selectEdCtrlList ctrllist name; cbSelectList ctrllist 0 name nil nil [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; dsEdWindow winstr; ); 0;; fun cbBtnCancelCurve(ctrlbtn, winstr)= dsEdWindow winstr; 0;; fun cbBtnNew(ctrlstr, p)= let p -> [ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr] in let [330 90] -> [iw ih] in let getEdWindowScreenPos ewinstr -> [px py] in let getEdWindowSize ewinstr -> [pw ph] in let [(px + ((pw / 2) - (iw / 2))) (py + ((ph / 2) - (ih / 2)))] -> [x y] in let setEdWindowIcon (crEdModalDialogWindow _channel ewinstr x y iw ih WN_NOSCOL|WN_MENU|WN_DIALOG nil (loc "OS3DREALTIMEGRAPH_0018")) sWinDlgIcon -> winstr in let crEdCtrlLabel winstr 10 12 120 20 (loc "OS3DREALTIMEGRAPH_0018") nil -> label in let crEdCtrlTextLine winstr 140 10 (iw - 150) 20 "" nil EDWIN_RESIZE_MW -> ctrltext in ( setEdctrlTextLineFocus ctrltext; setEdCtrlTextLineCbValidate ctrltext mkfun3 @cbBtnNewCurve [p winstr ctrltext]; setEdCtrlButtonCb (crEdCtrlButton winstr 10 (ih - 30) 90 20 (loc "OS3D_0282") EDWIN_RESIZE_MW) mkfun2 mkfun3 @cbBtnNewCurve [p winstr ctrltext] nil; setEdCtrlButtonCb (crEdCtrlButton winstr (iw - 100) (ih - 30) 90 20 (loc "OS3D_0084") EDWIN_RESIZE_MW) mkfun2 @cbBtnCancelCurve winstr; ); 0;; fun cbBtnRenameCurve(ctrlstr, text, p)= let p -> [[ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr] curvestr winstr ctrltext] in let dlcstr -> [lcstr] in let getEdCtrlTextLineValue ctrltext -> name in let getCurveByName lcstr name -> ocurvestr in if (!strcmp name curvestr.CSET_sName) then ( dsEdWindow winstr; ) else if (ocurvestr != nil) then nil else ( renameEdCtrlListElement ctrllist curvestr.CSET_sName name; mutate dlcstr <- [rename_sid_from_list lcstr curvestr.CSET_sName name]; set curvestr.CSET_sName = name; selectEdCtrlList ctrllist name; cbSelectList ctrllist 0 name nil nil [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; dsEdWindow winstr; ); 0;; fun cbBtnRename(ctrlstr, p)= let p -> [ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr] in let dlcstr -> [lcstr] in let getSelectedEdCtrlList2 ctrllist -> [pos name _ _] in let getCurveByName lcstr name -> curvestr in if (curvestr == nil) then nil else ( let [330 90] -> [iw ih] in let getEdWindowScreenPos ewinstr -> [px py] in let getEdWindowSize ewinstr -> [pw ph] in let [(px + ((pw / 2) - (iw / 2))) (py + ((ph / 2) - (ih / 2)))] -> [x y] in let setEdWindowIcon (crEdModalDialogWindow _channel ewinstr x y iw ih WN_NOSCOL|WN_MENU|WN_DIALOG nil (loc "OS3DREALTIMEGRAPH_0018")) sWinDlgIcon -> winstr in let crEdCtrlLabel winstr 10 12 120 20 (loc "OS3DREALTIMEGRAPH_0018") nil -> label in let crEdCtrlTextLine winstr 140 10 (iw - 150) 20 name nil EDWIN_RESIZE_MW -> ctrltext in ( setEdctrlTextLineFocus ctrltext; setEdCtrlTextLineCbValidate ctrltext mkfun3 @cbBtnRenameCurve [p curvestr winstr ctrltext]; setEdCtrlButtonCb (crEdCtrlButton winstr 10 (ih - 30) 90 20 (loc "OS3D_0282") EDWIN_RESIZE_MW) mkfun2 mkfun3 @cbBtnRenameCurve [p curvestr winstr ctrltext] nil; setEdCtrlButtonCb (crEdCtrlButton winstr (iw - 100) (ih - 30) 90 20 (loc "OS3D_0084") EDWIN_RESIZE_MW) mkfun2 @cbBtnCancelCurve winstr; ); ); 0;; fun cbSelectListDbClick(ctrlstr, pos, elem, lval, type, p)= cbBtnRename nil p; 0;; fun cbBtnDel(ctrlstr, p)= let p -> [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr] in let getSelectedEdCtrlList2 ctrllist -> [pos name _ _] in if (name == nil) then nil else let dlcstr -> [lcstr] in ( delEdCtrlList ctrllist name; mutate dlcstr <- [removeCurve lcstr name]; selectEdCtrlListByPos ctrllist pos; let getSelectedEdCtrlList ctrllist -> [name _ _] in cbSelectList ctrllist 0 name nil nil [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; ); 0;; fun cbCurveColorChange(ctlstr, color, p)= let p -> [ctrllist [lcstr]] in let getSelectedEdCtrlList ctrllist -> [name _ _] in let getCurveByName lcstr name -> curvestr in if (curvestr == nil) then nil else set curvestr.CSET_iColor = color; 0;; fun cbCurveMinChange(ctlstr, value, p)= let p -> [ctrllist ctrlminvalue ctrlmaxvalue [lcstr]] in ( setEdCtrlFloatMinValue ctrlmaxvalue value; let getSelectedEdCtrlList ctrllist -> [name _ _] in let getCurveByName lcstr name -> curvestr in if (curvestr == nil) then nil else set curvestr.CSET_fMin = value; ); 0;; fun cbCurveMaxChange(ctlstr, value, p)= let p -> [ctrllist ctrlminvalue ctrlmaxvalue [lcstr]] in ( setEdCtrlFloatMaxValue ctrlminvalue value; let getSelectedEdCtrlList ctrllist -> [name _ _] in let getCurveByName lcstr name -> curvestr in if (curvestr == nil) then nil else set curvestr.CSET_fMax = value; ); 0;; fun cbCurveNbDecimalsChange(ctlstr, value, p)= let p -> [ctrllist [lcstr]] in let getSelectedEdCtrlList ctrllist -> [name _ _] in let getCurveByName lcstr name -> curvestr in if (curvestr == nil) then nil else set curvestr.CSET_iNbDecimals = ftoi value; 0;; fun cbCheckSaveSize(ctrlstr, state, p)= let p -> [labelsavesize ctrlpicturewidth ctrlpictureheight] in ( setEdCtrlLabelEnable labelsavesize state; setEdCtrlFloatEnable ctrlpicturewidth state; setEdCtrlFloatEnable ctrlpictureheight state; ); 0;; fun dynamicedit(ewinstr, inst, viewstr, applybtn)= let [455 510] -> [iw ih] in let 10 -> ypos in ( setEdWindowSize ewinstr iw ih; let loadCurves inst -> lcstr in let atoi (getPluginInstanceParam inst "displaytime") -> displaytime in let if displaytime == nil then 30 else displaytime -> displaytime in let atoi (getPluginInstanceParam inst "updaterate") -> updaterate in let if updaterate == nil then 50 else updaterate -> updaterate in let atoi (getPluginInstanceParam inst "vgraduations") -> vgraduations in let if vgraduations == nil then 5 else vgraduations -> vgraduations in let atoi (getPluginInstanceParam inst "hgraduations") -> hgraduations in let if hgraduations == nil then 6 else hgraduations -> hgraduations in let atoi (getPluginInstanceParam inst "legend") -> legend in let if legend == nil then 0 else legend -> legend in let getPluginInstanceParam inst "fileprefix" -> fileprefix in let if fileprefix == nil then "%document%/realtimegraph/" else fileprefix -> fileprefix in let atoi (getPluginInstanceParam inst "dateformat") -> dateformat in let if dateformat == nil then 1 else dateformat -> dateformat in let atoi (getPluginInstanceParam inst "savecsv") -> savecsv in let if savecsv == nil then 0 else savecsv -> savecsv in let atoi (getPluginInstanceParam inst "savesize") -> savesize in let if savesize == nil then 0 else savesize -> savesize in let atoi (getPluginInstanceParam inst "picturewidth") -> picturewidth in let if picturewidth == nil then 1920 else picturewidth -> picturewidth in let atoi (getPluginInstanceParam inst "pictureheight") -> pictureheight in let if pictureheight == nil then 1080 else pictureheight -> pictureheight in let atoi (getPluginInstanceParam inst "show") -> show in let if show == nil then 1 else show -> show in let atoi (getPluginInstanceParam inst "enable") -> enable in let if enable == nil then 1 else enable -> enable in ( if !savecsv && !savesize then nil else set ih = ih + 135; setEdWindowSize ewinstr iw ih; let crPositionInterface inst viewstr ewinstr (loc "OS3DMENU_0007") (iPOS_INTERFACE_2D_NO_BACKGROUND_NO_KEEPRATIO | iPOS_INTERFACE_MAT | iPOS_INTERFACE_3D/* | iPOS_INTERFACE_VR*/) iw ih -> posstr in let crEdFrameWindow _channel ewinstr 0 0 iw 155 EDWIN_RESIZE_MW nil (loc "OS3DREALTIMEGRAPH_0001") (loc "OS3DREALTIMEGRAPH_0005") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 135 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 (set ypos = 10) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0003") nil -> labeldisplaytime in let crEdCtrlFloat winstr 180 ypos 100 20 (itof displaytime) 0.0 100000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrldisplaytime in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0004") nil -> labelupdaterate in let crEdCtrlFloat winstr 180 ypos 100 20 (itof updaterate) 0.0 1000000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlupdaterate in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0006") nil -> labelvgraduations in let crEdCtrlFloat winstr 180 ypos 100 20 (itof vgraduations) 0.0 1000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlvgraduations in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0007") nil -> labelhgraduations in let crEdCtrlFloat winstr 180 ypos 100 20 (itof hgraduations) 0.0 1000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlhgraduations in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DREALTIMEGRAPH_0026") EDWIN_RESIZE_MW -> ctrllegend in let crEdFrameWindow _channel ewinstr 0 0 iw 255 EDWIN_RESIZE_MW nil (loc "OS3DREALTIMEGRAPH_0002") (loc "OS3DREALTIMEGRAPH_0005") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 235 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlList winstr 10 (set ypos = 10) (iw - 20) 90 LB_BORDER|LB_VSCROLL|ET_TABFOCUS EDWIN_RESIZE_MW|EDWIN_RESIZE_MH -> ctrllist in let crEdCtrlLabel winstr 10 (set ypos = ypos + 95) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0012") nil -> labelcolor in let crEdCtrlColorButton winstr 180 ypos 100 20 0x0000ff 0 EDWIN_RESIZE_MW nil -> ctrlcolor in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0013") nil -> labelminvalue in let crEdCtrlFloat winstr 180 ypos 100 20 0.0 (-.10000.0) 100.0 0.1 6 nil EDWIN_RESIZE_MW -> ctrlminvalue in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0014") nil -> labelmaxvalue in let crEdCtrlFloat winstr 180 ypos 100 20 100.0 0.0 10000.0 0.1 6 nil EDWIN_RESIZE_MW -> ctrlmaxvalue in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0011") nil -> labelnbdecimals in let crEdCtrlFloat winstr 180 ypos 100 20 1.0 0.0 6.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlnbdecimals in let crEdCtrlButton winstr (iw - 225) (set ypos = ypos + 35) 70 20 (loc "OS3DREALTIMEGRAPH_0015") EDWIN_RESIZE_MW -> ctrlbtnadd in let crEdCtrlButton winstr (iw - 150) ypos 70 20 (loc "OS3DREALTIMEGRAPH_0016") EDWIN_RESIZE_MW -> ctrlbtnren in let crEdCtrlButton winstr (iw - 75) ypos 70 20 (loc "OS3DREALTIMEGRAPH_0017") EDWIN_RESIZE_MW -> ctrlbtndel in let crEdFrameWindowEx _channel ewinstr 0 0 iw 155 EDWIN_RESIZE_MW nil (loc "OS3DREALTIMEGRAPH_0025") (loc "OS3DREALTIMEGRAPH_0005") !savecsv -> winfrm in let crEdWindow _channel winfrm 0 18 iw 135 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 (set ypos = 10) + 2 160 20 (strcat (loc "OS3DREALTIMEGRAPH_0020") " ") nil -> labelprefix in let crEdCtrlTextLine winstr 180 ypos 200 20 fileprefix nil EDWIN_RESIZE_MW -> ctrlprefix in let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 160 20 (loc "OS3DREALTIMEGRAPH_0021") nil -> labelformat in let crEdCtrlSelect winstr 180 ypos 200 120 EDWIN_RESIZE_MW -> ctrlformat in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DREALTIMEGRAPH_0019") EDWIN_RESIZE_MW -> ctrlsavecsv in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DREALTIMEGRAPH_0027") EDWIN_RESIZE_MW -> ctrlsavesize in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DREALTIMEGRAPH_0028") nil -> labelsavesize in let crEdCtrlFloat winstr 180 ypos 60 20 (itof picturewidth) 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlpicturewidth in let crEdCtrlFloat winstr 250 ypos 60 20 (itof pictureheight) 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlpictureheight in let crEdFrameWindow _channel ewinstr 0 0 iw 80 EDWIN_RESIZE_MW nil (loc "OS3DREALTIMEGRAPH_0008") (loc "OS3DREALTIMEGRAPH_0005") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 60 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlCheck winstr 10 (set ypos = 10) 280 20 (loc "OS3DREALTIMEGRAPH_0009") EDWIN_RESIZE_MW -> ctrlshow in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DREALTIMEGRAPH_0010") EDWIN_RESIZE_MW -> ctrlenable in let [lcstr] -> dlcstr in ( setEdCtrlCheckState ctrllegend legend; fillCurvesList ctrllist lcstr; setEdCtrlListCbClick ctrllist mkfun6 @cbSelectList [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; setEdCtrlListCbDbClick ctrllist mkfun6 @cbSelectListDbClick [ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; selectEdCtrlListByPos ctrllist 0; let getSelectedEdCtrlList ctrllist -> [name _ _] in cbSelectList ctrllist 0 name nil nil [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; setEdCtrlColorButtonCb ctrlcolor mkfun3 @cbCurveColorChange [ctrllist dlcstr]; setEdCtrlFloatCbChange ctrlminvalue mkfun3 @cbCurveMinChange [ctrllist ctrlminvalue ctrlmaxvalue dlcstr]; setEdCtrlFloatCbChange ctrlmaxvalue mkfun3 @cbCurveMaxChange [ctrllist ctrlminvalue ctrlmaxvalue dlcstr]; setEdCtrlFloatCbChange ctrlnbdecimals mkfun3 @cbCurveNbDecimalsChange [ctrllist dlcstr]; setEdCtrlButtonCb ctrlbtnadd mkfun2 @cbBtnNew [ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; setEdCtrlButtonCb ctrlbtnren mkfun2 @cbBtnRename [ewinstr ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; setEdCtrlButtonCb ctrlbtndel mkfun2 @cbBtnDel [ctrllist ctrlbtndel ctrlbtnren ctrlcolor ctrlminvalue ctrlmaxvalue ctrlnbdecimals dlcstr]; fillEdCtrlSelect ctrlformat (loc "OS3DREALTIMEGRAPH_0022")::(loc "OS3DREALTIMEGRAPH_0023")::(loc "OS3DREALTIMEGRAPH_0024")::nil; selectEdCtrlSelectByPos ctrlformat dateformat; setEdCtrlCheckState ctrlsavecsv savecsv; setEdCtrlCheckState ctrlsavesize savesize; cbCheckSaveSize ctrlsavesize savesize [labelsavesize ctrlpicturewidth ctrlpictureheight]; setEdCtrlCheckCbState ctrlsavesize mkfun3 @cbCheckSaveSize [labelsavesize ctrlpicturewidth ctrlpictureheight]; setEdCtrlCheckState ctrlshow show; setEdCtrlCheckState ctrlenable enable; [mkfun1 @cbCloseEdit [posstr ctrldisplaytime ctrlupdaterate ctrlvgraduations ctrlhgraduations ctrllegend ctrllist ctrlprefix ctrlformat ctrlsavecsv ctrlsavesize ctrlpicturewidth ctrlpictureheight ctrlshow ctrlenable dlcstr] nil]; ); ); );;