/* ----------------------------------------------------------------------------- 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 ----------------------------------------------------------------------------- */ fun cbCloseEdit(p)= let p -> [ctrltexture ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex ctrlpath ctrlisurl ctrlurl ctrlstates ctrlwidth ctrlheight ctrlposx ctrlposy ctrlxpercent ctrlypercent ctrlwpercent ctrlhpercent ctrlxoffset ctrlyoffset ctrlwoffset ctrlhoffset ctrlxalign ctrlyalign ctrlopacity ctrltransition ctrltrans ctrldelay ctrlshow ctrllabel ctrlfname ctrlfcolor ctrlfsize ctrlfbold ctrlzorder] in let getEdCtrlCheckState ctrltexture -> istexture in let getEdCtrlTextLineValue ctrlobjname -> objname in let getSelectedEdCtrlSelect ctrlmatname -> matname in let getSelectedEdCtrlSelectPos ctrlmattech -> technique in let getSelectedEdCtrlSelectPos ctrlmatpass -> pass in let getSelectedEdCtrlSelectPos ctrlmattex -> texture in let getEdCtrlTextLineValue ctrlpath -> path in let getEdCtrlCheckState ctrlisurl -> isurl in let getEdCtrlTextLineValue ctrlurl -> url in //let getSelectedEdCtrlSelectPos ctrlstates -> btnstates in let ftoi getEdCtrlFloatValue ctrlposx -> posx in let ftoi getEdCtrlFloatValue ctrlposy -> posy in let ftoi getEdCtrlFloatValue ctrlwidth -> width in let ftoi getEdCtrlFloatValue ctrlheight -> height in let getEdCtrlCheckState ctrlxpercent -> xpercent in let getEdCtrlCheckState ctrlypercent -> ypercent in let getEdCtrlCheckState ctrlwpercent -> wpercent in let getEdCtrlCheckState ctrlhpercent -> hpercent in let ftoi getEdCtrlFloatValue ctrlxoffset -> xoffset in let ftoi getEdCtrlFloatValue ctrlyoffset -> yoffset in let ftoi getEdCtrlFloatValue ctrlwoffset -> woffset in let ftoi getEdCtrlFloatValue ctrlhoffset -> hoffset in let getSelectedEdCtrlSelectPos ctrlxalign -> xalign in let getSelectedEdCtrlSelectPos ctrlyalign -> yalign in let ftoi getEdCtrlFloatValue ctrlopacity -> opacity in let ftoi getEdCtrlFloatValue ctrltransition -> transition in let getEdCtrlCheckState ctrltrans -> transparency in let ftoi getEdCtrlFloatValue ctrldelay -> delay in let getEdCtrlCheckState ctrlshow -> show in let ftoi getEdCtrlFloatValue ctrlzorder -> zorder in let getEdCtrlTextLineValue ctrlfname -> fname in let getEdCtrlColorButtonColor ctrlfcolor -> fcolor in let ftoi (getEdCtrlFloatValue ctrlfsize) -> fsize in let getEdCtrlCheckState ctrlfbold -> fbold in let getEdCtrlEditTextValue ctrllabel -> label in ["istexture" itoa istexture]:: ["object" objname]:: ["material" matname]:: ["technique" itoa technique]:: ["pass" itoa pass]:: ["texture" itoa texture]:: ["isurl" itoa isurl]:: ["url" url]:: ["path" path]:: //["btnstates" itoa btnstates]:: ["posx" itoa posx]:: ["posy" itoa posy]:: ["width" itoa width]:: ["height" itoa height]:: ["xpercent" itoa xpercent]:: ["ypercent" itoa ypercent]:: ["wpercent" itoa wpercent]:: ["hpercent" itoa hpercent]:: ["xoffset" itoa xoffset]:: ["yoffset" itoa yoffset]:: ["woffset" itoa woffset]:: ["hoffset" itoa hoffset]:: ["xalign" itoa xalign]:: ["yalign" itoa yalign]:: ["opacity" itoa opacity]:: ["transition" itoa transition]:: ["transparency" itoa transparency]:: ["delay" itoa delay]:: ["show" itoa show]:: ["zorder" itoa zorder]:: ["label" label]:: ["fontname" fname]:: ["fontsize" itoa fsize]:: ["fontcolor" itoa fcolor]:: ["fontbold" itoa fbold]:: nil;; fun fillMaterialTextureSelector(viewstr, ctrlselect, mat, tech, pass)= if mat == nil then nil else let V3DgetDefaultSession viewstr -> sessionstr in let SO3MaterialNumberOfTexturesByTechniqueAndPass mat tech pass -> size in let 0 -> i in let nil -> lmatname in ( while i < size do ( let SO3MaterialTextureUnitGetNameByIndex mat tech pass i -> matname in set lmatname = lcat lmatname matname::nil; set i = i + 1; ); fillEdCtrlSelect ctrlselect lmatname; ); 0;; fun cbMatPassName(ctrlstr, pos, elem, p)= let p -> [inst viewstr group ctrlmatname ctrlmattech ctrlmattex] in let getSelectedEdCtrlSelectPos ctrlmattech -> tech in let getSelectedEdCtrlSelect ctrlmatname -> matname in let V3DgetDefaultSession viewstr -> sessionstr in let if matname != nil then SO3SceneGetMaterial (V3DgetSession sessionstr) group matname else nil -> mat in fillMaterialTextureSelector viewstr ctrlmattex mat tech pos; 0;; fun fillMaterialPassSelector(viewstr, p, mat, tech)= let p -> [ctrlselect ctrlmatname ctrlmattech ctrlmattex] in if mat == nil then nil else let V3DgetDefaultSession viewstr -> sessionstr in let SO3MaterialNumberOfPassesByTechnique mat tech -> size in let 0 -> i in let nil -> lmatname in ( while i < size do ( let SO3MaterialPassGetNameByIndex mat tech i -> matname in let if (!strcmp matname "") then (itoa i) else matname -> matname in set lmatname = lcat lmatname matname::nil; set i = i + 1; ); fillEdCtrlSelect ctrlselect lmatname; fillMaterialTextureSelector viewstr ctrlmattex mat tech 0; ); 0;; fun cbMatTechniqueName(ctrlstr, pos, elem, p)= let p -> [inst viewstr group ctrlmatname ctrlmatpass ctrlmattex] in let getSelectedEdCtrlSelect ctrlmatname -> matname in let V3DgetDefaultSession viewstr -> sessionstr in let if matname != nil then SO3SceneGetMaterial (V3DgetSession sessionstr) group matname else nil -> mat in fillMaterialPassSelector viewstr [ctrlmatpass ctrlmatname ctrlstr ctrlmattex] mat pos; 0;; fun fillMaterialTechSelector(viewstr, p, mat)= let p -> [ctrlselect ctrlmatname ctrlmatpass ctrlmattex] in if mat == nil then nil else let V3DgetDefaultSession viewstr -> sessionstr in let SO3MaterialNumberOfTechniques mat -> size in let 0 -> i in let nil -> lmatname in ( while i < size do ( let SO3MaterialTechniqueGetNameByIndex mat i -> matname in set lmatname = lcat lmatname matname::nil; set i = i + 1; ); fillEdCtrlSelect ctrlselect lmatname; fillMaterialPassSelector viewstr [ctrlmatpass ctrlmatname ctrlselect ctrlmattex] mat 0; ); 0;; fun cbMatName(ctrlstr, pos, elem, p)= let p -> [inst viewstr group ctrlmattech ctrlmatpass ctrlmattex] in let V3DgetDefaultSession viewstr -> sessionstr in let if elem != nil then SO3SceneGetMaterial (V3DgetSession sessionstr) group elem else nil -> mat in fillMaterialTechSelector viewstr [ctrlmattech ctrlstr ctrlmatpass ctrlmattex] mat; 0;; fun fillMaterialSelector(viewstr, p, objname)= let p -> [inst ctrlselect ctrlmattech ctrlmatpass ctrlmattex] in if objname == nil then nil else let V3DgetDefaultSession viewstr -> sessionstr in let SO3SceneGetObject (V3DgetSession sessionstr) objname -> obj in let SO3EntityGetResourceGroup obj -> group in let SO3EntityMaterialList obj -> lmat in let nil -> lmatname in ( setEdCtrlSelectCb ctrlselect mkfun4 @cbMatName [inst viewstr group ctrlmattech ctrlmatpass ctrlmattex]; setEdCtrlSelectCb ctrlmattech mkfun4 @cbMatTechniqueName [inst viewstr group ctrlselect ctrlmatpass ctrlmattex]; setEdCtrlSelectCb ctrlmatpass mkfun4 @cbMatPassName [inst viewstr group ctrlselect ctrlmattech ctrlmattex]; let sizelist lmat -> size in let 0 -> i in while i < size do ( let nth_list lmat i -> mat in let SO3MaterialGetName mat -> matname in set lmatname = lcat lmatname matname::nil; set i = i + 1; ); fillEdCtrlSelect ctrlselect lmatname; fillMaterialTechSelector viewstr [ctrlmattech ctrlselect ctrlmatpass ctrlmattex] (SO3SceneGetMaterial (V3DgetSession sessionstr) group (hd lmatname)); ); 0;; fun cbSelectObj(val, type, p)= let p -> [inst winstr viewstr ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] in let V3DgetDefaultSession viewstr -> sessionstr in let SO3SceneGetObject (V3DgetSession sessionstr) val -> obj in if obj == nil then nil else ( setEdCtrlTextLineValue ctrlobjname val; fillMaterialSelector viewstr [inst ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] val; ); 0;; fun cbCloseRes(ctrlbtn)= setEdCtrlButtonEnable ctrlbtn 1; 0;; fun cbBtnPickObj(ctrlbtn, p)= let p -> [inst winstr viewstr ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex objname] in ( setEdCtrlButtonEnable ctrlbtn 0; dlgSelectPluginInstanceResource inst winstr iTypeEntity objname mkfun3 @cbSelectObj [inst winstr viewstr ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] mkfun1 @cbCloseRes ctrlbtn 0; ); 0;; fun cbDlgGetPath(pfile, p)= let p -> [inst ctrlbtn winstr ctrlpath ctrlurl ctrlisurl ctrlwidth ctrlheight ctrlwpercent ctrlhpercent ctrlstates] in ( if pfile == nil then nil else let _PtoScol pfile -> file in if file == nil then ( _DLGMessageBox _channel winstr.EDW_win (loc "OS3DAREA_0011") (loc "OS3DAREA_0042") 0; 0; ) else ( setEdCtrlTextLineValue ctrlpath file; setEdCtrlTextLineValue ctrlurl nil; setEdCtrlCheckState ctrlisurl 0; let G2DloadBmp _channel file -> bmp in let _GETbitmapSize bmp -> [bw bh] in //let getSelectedEdCtrlSelectPos ctrlstates -> btnstates in ( setEdCtrlFloatValue ctrlwidth (itof bw); setEdCtrlFloatValue ctrlheight (itof (bh / 2/*(btnstates + 1)*/)); setEdCtrlCheckState ctrlwpercent 0; setEdCtrlCheckState ctrlhpercent 0; _DSbitmap bmp; ); 0; ); setEdCtrlButtonEnable ctrlbtn 1; ); 0;; fun cbBtnPickFile(ctrlbtn, p)= let p -> [inst winstr ctrlpath ctrlurl ctrlisurl ctrlwidth ctrlheight ctrlwpercent ctrlhpercent ctrlstates] in let getEdCtrlTextLineValue ctrlpath -> path in let _GETdesktopSize -> [sw sh] in let getEdWindowPos mainInterf.MINT_winMain -> [nx ny] in let getEdWindowSize mainInterf.MINT_winMain -> [nmw nmh] in let [750 450] -> [iw ih] in let crEdOpenFileBitmapDialog _channel winstr nx + ((nmw / 2) - (iw / 2)) ny + ((nmh / 2) - (ih / 2)) iw ih "" ["Bitmaps" "bmp"::"jpg"::"png"::"tga"::nil]::["Bitmap" "bmp"::nil]::["Jpeg" "jpg"::nil]::["PNG" "png"::nil]::["Targa" "tga"::nil]::nil EDFILE_DIALOG_LIST_FOLDERS|EDFILE_DIALOG_SHOW_TOOLBAR nil path -> dlgfstr in ( setEdWindowIcon dlgfstr.EDFD_dialog sWinDlgIcon; setEdOpenFileDialogCb dlgfstr mkfun2 @cbDlgGetPath [inst ctrlbtn winstr ctrlpath ctrlurl ctrlisurl ctrlwidth ctrlheight ctrlwpercent ctrlhpercent ctrlstates]; setEdCtrlButtonEnable ctrlbtn 1; ); 0;; fun cbCheckUrl(ctrl, state, p)= let p -> [ctrlurl ctrlpath pickbtn] in if state then ( setEdCtrlTextLineEnable ctrlurl 1; setEdCtrlTextLineValue ctrlpath nil; setEdCtrlButtonEnable pickbtn 0; ) else ( setEdCtrlTextLineEnable ctrlurl 0; setEdCtrlButtonEnable pickbtn 1; ); 0;; fun cbCheckTexture(ctrl, state, p)= let p -> [pickbtn ctrlposx ctrlxpercent ctrlxalign ctrlposy ctrlypercent ctrlyalign ctrlwpercent ctrlhpercent ctrlxoffset ctrlyoffset ctrlwoffset ctrlhoffset ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] in if state then ( setEdCtrlFloatEnable ctrlposx 0; setEdCtrlFloatEnable ctrlposy 0; setEdCtrlCheckEnable ctrlxpercent 0; setEdCtrlCheckEnable ctrlypercent 0; setEdCtrlSelectEnable ctrlxalign 0; setEdCtrlSelectEnable ctrlyalign 0; setEdCtrlCheckEnable ctrlwpercent 0; setEdCtrlCheckEnable ctrlhpercent 0; setEdCtrlFloatEnable ctrlxoffset 0; setEdCtrlFloatEnable ctrlyoffset 0; setEdCtrlFloatEnable ctrlwoffset 0; setEdCtrlFloatEnable ctrlhoffset 0; setEdCtrlSelectEnable ctrlmatname 1; setEdCtrlSelectEnable ctrlmattech 1; setEdCtrlSelectEnable ctrlmatpass 1; setEdCtrlSelectEnable ctrlmattex 1; setEdCtrlButtonEnable pickbtn 1; ) else ( setEdCtrlFloatEnable ctrlposx 1; setEdCtrlFloatEnable ctrlposy 1; setEdCtrlCheckEnable ctrlxpercent 1; setEdCtrlCheckEnable ctrlypercent 1; setEdCtrlSelectEnable ctrlxalign 1; setEdCtrlSelectEnable ctrlyalign 1; setEdCtrlCheckEnable ctrlwpercent 1; setEdCtrlCheckEnable ctrlhpercent 1; setEdCtrlFloatEnable ctrlxoffset (getEdCtrlCheckState ctrlxpercent); setEdCtrlFloatEnable ctrlyoffset (getEdCtrlCheckState ctrlypercent); setEdCtrlFloatEnable ctrlwoffset (getEdCtrlCheckState ctrlwpercent); setEdCtrlFloatEnable ctrlhoffset (getEdCtrlCheckState ctrlhpercent); setEdCtrlSelectEnable ctrlmatname 0; setEdCtrlSelectEnable ctrlmattech 0; setEdCtrlSelectEnable ctrlmatpass 0; setEdCtrlSelectEnable ctrlmattex 0; setEdCtrlButtonEnable pickbtn 0; ); 0;; fun cbRefreshBtn(pickbtn, p)= let p -> [inst winstr ctrlobjname] in setEdCtrlTextLineValue ctrlobjname ""; 0;; fun cbRefreshBtnSpec(pickbtn, p)= let p -> [ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] in ( setEdCtrlTextLineValue ctrlobjname ""; fillEdCtrlSelect ctrlmatname nil; fillEdCtrlSelect ctrlmattech nil; fillEdCtrlSelect ctrlmatpass nil; fillEdCtrlSelect ctrlmattex nil; ); 0;; fun cbSelectType(ctrlstr, pos, elem, p)= let p -> [ctrlpath ctrlwidth ctrlheight ctrlwpercent ctrlhpercent] in if (pos <= 0) then nil else ( let getEdCtrlTextLineValue ctrlpath -> path in let G2DloadBmp _channel path -> bmp in let _GETbitmapSize bmp -> [bw bh] in if (bmp == nil) then nil else ( setEdCtrlFloatValue ctrlwidth (itof bw); setEdCtrlFloatValue ctrlheight (itof (bh / (pos + 1))); setEdCtrlCheckState ctrlwpercent 0; setEdCtrlCheckState ctrlhpercent 0; _DSbitmap bmp; ); ); 0;; fun cbPercentCheck(ctrlstr, state, ctrlfloat)= setEdCtrlFloatEnable ctrlfloat state; 0;; fun dynamicedit(ewinstr, inst, viewstr, applybtn)= let [455 660] -> [iw ih] in let 10 -> ypos in ( let (getPluginInstanceParam inst "path") -> path in let atoi (getPluginInstanceParam inst "isurl") -> isurl in let if isurl == nil then 0 else isurl -> isurl in let (getPluginInstanceParam inst "url") -> url in /*let atoi (getPluginInstanceParam inst "btnstates") -> btnstates in let if btnstates == nil then 0 else btnstates -> btnstates in */ let (getPluginInstanceParam inst "object") -> objname in let (getPluginInstanceParam inst "material") -> matname in let atoi (getPluginInstanceParam inst "technique") -> technique in let if technique == nil then 0 else technique -> technique in let atoi (getPluginInstanceParam inst "pass") -> pass in let if pass == nil then 0 else pass -> pass in let atoi (getPluginInstanceParam inst "texture") -> texture in let if texture == nil then 0 else texture -> texture in let atoi (getPluginInstanceParam inst "istexture") -> istexture in let if istexture == nil then 0 else istexture -> istexture in let atoi (getPluginInstanceParam inst "xpercent") -> xpercent in let if xpercent == nil then 0 else xpercent -> xpercent in let atoi (getPluginInstanceParam inst "xalign") -> xalign in let if xalign == nil then 0 else xalign -> xalign in let atoi (getPluginInstanceParam inst "posx") -> posx in let if posx == nil then 0 else posx -> posx in let atoi (getPluginInstanceParam inst "ypercent") -> ypercent in let if ypercent == nil then 0 else ypercent -> ypercent in let atoi (getPluginInstanceParam inst "yalign") -> yalign in let if yalign == nil then 0 else yalign -> yalign in let atoi (getPluginInstanceParam inst "posy") -> posy in let if posy == nil then 0 else posy -> posy in let atoi (getPluginInstanceParam inst "wpercent") -> wpercent in let if wpercent == nil then 0 else wpercent -> wpercent in let atoi (getPluginInstanceParam inst "width") -> width in let if width == nil then 100 else width -> width in let atoi (getPluginInstanceParam inst "hpercent") -> hpercent in let if hpercent == nil then 0 else hpercent -> hpercent in let atoi (getPluginInstanceParam inst "height") -> height in let if height == nil then 100 else height -> height in let atoi (getPluginInstanceParam inst "xoffset") -> xoffset in let if xoffset == nil then 0 else xoffset -> xoffset in let atoi (getPluginInstanceParam inst "yoffset") -> yoffset in let if yoffset == nil then 0 else yoffset -> yoffset in let atoi (getPluginInstanceParam inst "woffset") -> woffset in let if woffset == nil then 0 else woffset -> woffset in let atoi (getPluginInstanceParam inst "hoffset") -> hoffset in let if hoffset == nil then 0 else hoffset -> hoffset in let getPluginInstanceParam inst "fontname" -> fname in let if fname == nil then "Arial" else fname -> fname in let atoi (getPluginInstanceParam inst "fontcolor") -> fcolor in let if fcolor == nil then 0 else fcolor -> fcolor in let atoi (getPluginInstanceParam inst "fontsize") -> fsize in let if fsize == nil then 12 else fsize -> fsize in let atoi (getPluginInstanceParam inst "fontbold") -> fbold in let if fbold == nil then 0 else fbold -> fbold in let getPluginInstanceParam inst "label" -> label in let if label == nil then "" else label -> label in let atoi (getPluginInstanceParam inst "opacity") -> opacity in let if opacity == nil then 100 else opacity -> opacity in let atoi (getPluginInstanceParam inst "transition") -> transition in let if transition == nil then 0 else transition -> transition in let atoi (getPluginInstanceParam inst "transparency") -> trans in let if (trans == nil) then 0 else trans -> trans in let atoi (getPluginInstanceParam inst "cursor") -> cursor in let if cursor == nil then 1 else cursor -> cursor in let atoi (getPluginInstanceParam inst "delay") -> delay in let if delay == nil then 1000 else delay -> delay in let atoi (getPluginInstanceParam inst "show") -> show in let if (show == nil) then 1 else show -> show in let atoi (getPluginInstanceParam inst "zorder") -> zorder in let if zorder == nil then 100 else zorder -> zorder in ( if (!istexture) then nil else set ih = ih + 160; setEdWindowSize ewinstr iw ih; let crEdFrameWindowEx _channel ewinstr 0 0 iw 180 EDWIN_RESIZE_MW nil (loc "OS3DAREA_0021") (loc "OS3DAREA_0023") !istexture -> winfrm in let crEdWindow _channel winfrm 0 18 iw 160 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlCheck winstr 10 ypos 280 20 (loc "OS3DAREA_0006") EDWIN_RESIZE_MW -> ctrltexture in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0025") nil -> labelobj in let crEdCtrlTextLine winstr 180 ypos 170 20 objname nil EDWIN_RESIZE_MW -> ctrlobjname in let crEdCtrlButton winstr 360 ypos 55 20 "..." nil -> pickbtn in let crEdCtrlButton winstr 420 ypos 35 20 "X" nil -> refreshobjname in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0020") nil -> labelmat in let crEdCtrlSelect winstr 180 ypos (iw - 180) 120 EDWIN_RESIZE_MW -> ctrlmatname in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0022") nil -> labeltech in let crEdCtrlSelect winstr 180 ypos (iw - 180) 120 EDWIN_RESIZE_MW -> ctrlmattech in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0035") nil -> labelpass in let crEdCtrlSelect winstr 180 ypos (iw - 180) 120 EDWIN_RESIZE_MW -> ctrlmatpass in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0028") nil -> labelpass in let crEdCtrlSelect winstr 180 ypos (iw - 180) 120 EDWIN_RESIZE_MW -> ctrlmattex in let crEdFrameWindow _channel ewinstr 0 0 iw 110 EDWIN_RESIZE_MW nil (loc "OS3DAREA_0012") (loc "OS3DAREA_0023") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 90 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) (iw - 20) 20 (loc "OS3DAREA_0037") nil -> labelbp in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 100 20 (loc "OS3DAREA_0040") EDWIN_RESIZE_MW -> ctrlisurl in let crEdCtrlTextLine winstr 180 ypos (iw - 200) 20 url nil EDWIN_RESIZE_MW -> ctrlurl in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0007") nil -> labelobj in let crEdCtrlTextLine winstr 180 ypos 170 20 path nil EDWIN_RESIZE_MW -> ctrlpath in let crEdCtrlButton winstr 360 ypos 55 20 "..." nil -> pickfilebtn in let crEdCtrlButton winstr 420 ypos 35 20 "X" nil -> refreshpath in /*let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0013") nil -> labelstates in let crEdCtrlSelect winstr 180 ypos 160 120 EDWIN_RESIZE_MW -> ctrlstates in */ let crEdFrameWindow _channel ewinstr 0 0 iw 130 EDWIN_RESIZE_MW nil (loc "OS3DAREA_0031") (loc "OS3DAREA_0023") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 110 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) 90 20 (loc "OS3DAREA_0029") nil -> labelx in let crEdCtrlFloat winstr 110 ypos 60 20 itof posx (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlposx in let crEdCtrlCheck winstr 180 ypos 40 20 "(%)" EDWIN_RESIZE_MW -> ctrlxpercent in let crEdCtrlLabel winstr 220 (ypos + 2) 60 20 (loc "OS3DAREA_0026") nil -> labelxo in let crEdCtrlFloat winstr 285 ypos 60 20 itof xoffset (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlxoffset in let crEdCtrlSelect winstr 355 ypos 100 120 EDWIN_RESIZE_MW -> ctrlxalign in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 90 20 (loc "OS3DAREA_0030") nil -> labely in let crEdCtrlFloat winstr 110 ypos 60 20 itof posy (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlposy in let crEdCtrlCheck winstr 180 ypos 40 20 "(%)" EDWIN_RESIZE_MW -> ctrlypercent in let crEdCtrlLabel winstr 220 (ypos + 2) 60 20 (loc "OS3DAREA_0026") nil -> labelyo in let crEdCtrlFloat winstr 285 ypos 60 20 itof yoffset (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlyoffset in let crEdCtrlSelect winstr 355 ypos 100 120 EDWIN_RESIZE_MW -> ctrlyalign in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 90 20 (loc "OS3DAREA_0041") nil -> labelw in let crEdCtrlFloat winstr 110 ypos 60 20 itof width 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlwidth in let crEdCtrlCheck winstr 180 ypos 40 20 "(%)" EDWIN_RESIZE_MW -> ctrlwpercent in let crEdCtrlLabel winstr 220 (ypos + 2) 60 20 (loc "OS3DAREA_0026") nil -> labelwo in let crEdCtrlFloat winstr 285 ypos 60 20 itof woffset (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlwoffset in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 90 20 (loc "OS3DAREA_0017") nil -> labelh in let crEdCtrlFloat winstr 110 ypos 60 20 itof height 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlheight in let crEdCtrlCheck winstr 180 ypos 40 20 "(%)" EDWIN_RESIZE_MW -> ctrlhpercent in let crEdCtrlLabel winstr 220 (ypos + 2) 60 20 (loc "OS3DAREA_0026") nil -> labelho in let crEdCtrlFloat winstr 285 ypos 60 20 itof hoffset (-.10000.0) 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlhoffset in let crEdFrameWindow _channel ewinstr 0 0 iw 220 EDWIN_RESIZE_MW nil (loc "OS3DAREA_0036") (loc "OS3DAREA_0023") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 195 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) 160 20 (loc "OS3DAREA_0015") nil -> labelfname in let crEdCtrlTextLine winstr 180 ypos 170 20 fname nil EDWIN_RESIZE_MW -> ctrlfname in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0014") nil -> labelcolor in let crEdCtrlColorButton winstr 180 ypos 100 20 fcolor 0 EDWIN_RESIZE_MW nil -> ctrlfcolor in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0016") nil -> labelfsize in let crEdCtrlFloat winstr 180 ypos 60 20 (itof fsize) 1.0 1024.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlfsize in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DAREA_0008") EDWIN_RESIZE_MW -> ctrlfbold in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 170 20 (loc "OS3DAREA_0018") nil -> labeltext in let crEdCtrlEditText winstr 10 (set ypos = ypos + 25) iw-20 60 label nil EDWIN_RESIZE_MW -> ctrllabel in let crEdFrameWindow _channel ewinstr 0 0 iw 185 EDWIN_RESIZE_MW nil (loc "OS3DAREA_0024") (loc "OS3DAREA_0023") -> winfrm in let crEdWindow _channel winfrm 0 18 iw 160 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) 160 20 (loc "OS3DAREA_0002") nil -> labeldelay in let crEdCtrlFloat winstr 180 ypos 60 20 (itof delay) 0.0 100000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrldelay in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0027") nil -> labelo in let crEdCtrlFloat winstr 180 ypos 100 20 itof opacity 0.0 100.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlopacity in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0033") nil -> labeltransition in let crEdCtrlFloat winstr 180 ypos 100 20 itof transition 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrltransition in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3DAREA_0043") nil -> labelz in let crEdCtrlFloat winstr 180 ypos 100 20 itof zorder 0.0 10000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlzorder in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DAREA_0039") EDWIN_RESIZE_MW -> ctrltrans in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) 280 20 (loc "OS3DAREA_0034") EDWIN_RESIZE_MW -> ctrlshow in let V3DgetDefaultSession viewstr -> sessionstr in let SO3SceneGetObject (V3DgetSession sessionstr) objname -> obj in let SO3EntityGetResourceGroup obj -> group in ( setEdCtrlCheckState ctrlshow show; setEdCtrlCheckState ctrltrans trans; setEdCtrlCheckState ctrlisurl isurl; setEdCtrlCheckState ctrlfbold fbold; //fillEdCtrlSelect ctrlstates "Active"::(loc "OS3DAREA_0005")::(loc "OS3DAREA_0004")::(loc "OS3DAREA_0003")::nil; //selectEdCtrlSelectByPos ctrlstates btnstates; //setEdCtrlSelectCb ctrlstates mkfun4 @cbSelectType [ctrlpath ctrlwidth ctrlheight ctrlwpercent ctrlhpercent]; fillEdCtrlSelect ctrlxalign (loc "OS3DAREA_0019")::(loc "OS3DAREA_0010")::(loc "OS3DAREA_0032")::nil; fillEdCtrlSelect ctrlyalign (loc "OS3DAREA_0038")::(loc "OS3DAREA_0010")::(loc "OS3DAREA_0009")::nil; selectEdCtrlSelectByPos ctrlxalign xalign; selectEdCtrlSelectByPos ctrlyalign yalign; setEdCtrlCheckState ctrltexture istexture; setEdCtrlCheckState ctrlxpercent xpercent; setEdCtrlCheckState ctrlypercent ypercent; setEdCtrlCheckState ctrlwpercent wpercent; setEdCtrlCheckState ctrlhpercent hpercent; fillMaterialSelector viewstr [inst ctrlmatname ctrlmattech ctrlmatpass ctrlmattex] objname; selectEdCtrlSelect ctrlmatname matname; let SO3SceneGetMaterial (V3DgetSession sessionstr) group matname -> mat in if mat == nil then nil else ( fillMaterialTechSelector viewstr [ctrlmattech ctrlmatname ctrlmatpass ctrlmattex] mat; selectEdCtrlSelectByPos ctrlmattech technique; fillMaterialPassSelector viewstr [ctrlmatpass ctrlmatname ctrlmattech ctrlmattex] mat technique; selectEdCtrlSelectByPos ctrlmatpass pass; fillMaterialTextureSelector viewstr ctrlmattex mat technique pass; selectEdCtrlSelectByPos ctrlmattex texture; ); setEdCtrlCheckCbState ctrltexture mkfun3 @cbCheckTexture [pickbtn ctrlposx ctrlxpercent ctrlxalign ctrlposy ctrlypercent ctrlyalign ctrlwpercent ctrlhpercent ctrlxoffset ctrlyoffset ctrlwoffset ctrlhoffset ctrlmatname ctrlmattech ctrlmatpass ctrlmattex]; setEdCtrlButtonCb pickbtn mkfun2 @cbBtnPickObj [inst winstr viewstr ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex objname]; setEdCtrlTextLineEnable ctrlobjname 0; setEdCtrlButtonCb refreshobjname mkfun2 @cbRefreshBtnSpec [ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex]; setEdCtrlCheckCbState ctrlxpercent mkfun3 @cbPercentCheck ctrlxoffset; setEdCtrlCheckCbState ctrlypercent mkfun3 @cbPercentCheck ctrlyoffset; setEdCtrlCheckCbState ctrlwpercent mkfun3 @cbPercentCheck ctrlwoffset; setEdCtrlCheckCbState ctrlhpercent mkfun3 @cbPercentCheck ctrlhoffset; setEdCtrlFloatEnable ctrlxoffset (getEdCtrlCheckState ctrlxpercent); setEdCtrlFloatEnable ctrlyoffset (getEdCtrlCheckState ctrlypercent); setEdCtrlFloatEnable ctrlwoffset (getEdCtrlCheckState ctrlwpercent); setEdCtrlFloatEnable ctrlhoffset (getEdCtrlCheckState ctrlhpercent); setEdCtrlButtonCb pickfilebtn mkfun2 @cbBtnPickFile [inst winstr ctrlpath ctrlurl ctrlisurl ctrlwidth ctrlheight ctrlwpercent ctrlhpercent nil /*ctrlstates*/]; setEdCtrlCheckCbState ctrlisurl mkfun3 @cbCheckUrl [ctrlurl ctrlpath pickfilebtn]; setEdCtrlTextLineEnable ctrlpath 0; setEdCtrlButtonCb refreshpath mkfun2 @cbRefreshBtn [inst winstr ctrlpath]; if !isurl then ( setEdCtrlTextLineEnable ctrlurl 0; setEdCtrlButtonEnable pickfilebtn 1; ) else ( setEdCtrlTextLineEnable ctrlurl 1; setEdCtrlButtonEnable pickfilebtn 0; ); if istexture then ( setEdCtrlFloatEnable ctrlposx 0; setEdCtrlFloatEnable ctrlposy 0; setEdCtrlCheckEnable ctrlxpercent 0; setEdCtrlCheckEnable ctrlypercent 0; setEdCtrlSelectEnable ctrlxalign 0; setEdCtrlSelectEnable ctrlyalign 0; setEdCtrlCheckEnable ctrlwpercent 0; setEdCtrlCheckEnable ctrlhpercent 0; setEdCtrlFloatEnable ctrlxoffset 0; setEdCtrlFloatEnable ctrlyoffset 0; setEdCtrlFloatEnable ctrlwoffset 0; setEdCtrlFloatEnable ctrlhoffset 0; setEdCtrlSelectEnable ctrlmatname 1; setEdCtrlSelectEnable ctrlmattech 1; setEdCtrlSelectEnable ctrlmatpass 1; setEdCtrlSelectEnable ctrlmattex 1; setEdCtrlButtonEnable pickbtn 1; ) else ( setEdCtrlFloatEnable ctrlposx 1; setEdCtrlFloatEnable ctrlposy 1; setEdCtrlCheckEnable ctrlxpercent 1; setEdCtrlCheckEnable ctrlypercent 1; setEdCtrlSelectEnable ctrlxalign 1; setEdCtrlSelectEnable ctrlyalign 1; setEdCtrlCheckEnable ctrlwpercent 1; setEdCtrlCheckEnable ctrlhpercent 1; setEdCtrlFloatEnable ctrlxoffset (getEdCtrlCheckState ctrlxpercent); setEdCtrlFloatEnable ctrlyoffset (getEdCtrlCheckState ctrlypercent); setEdCtrlFloatEnable ctrlwoffset (getEdCtrlCheckState ctrlwpercent); setEdCtrlFloatEnable ctrlhoffset (getEdCtrlCheckState ctrlhpercent); setEdCtrlSelectEnable ctrlmatname 0; setEdCtrlSelectEnable ctrlmattech 0; setEdCtrlSelectEnable ctrlmatpass 0; setEdCtrlSelectEnable ctrlmattex 0; setEdCtrlButtonEnable pickbtn 0; ); [mkfun1 @cbCloseEdit [ctrltexture ctrlobjname ctrlmatname ctrlmattech ctrlmatpass ctrlmattex ctrlpath ctrlisurl ctrlurl nil /*ctrlstates*/ ctrlwidth ctrlheight ctrlposx ctrlposy ctrlxpercent ctrlypercent ctrlwpercent ctrlhpercent ctrlxoffset ctrlyoffset ctrlwoffset ctrlhoffset ctrlxalign ctrlyalign ctrlopacity ctrltransition ctrltrans ctrldelay ctrlshow ctrllabel ctrlfname ctrlfcolor ctrlfsize ctrlfbold ctrlzorder] nil]; ); ); );;