Menu "MovieMaker" "Load Panel", MovieMakerInit() "Show Panel", ShowMovieMaker() End Function BtnMakeMovie(ctrlName) : ButtonControl String ctrlName String wlist = WinList("*",";","") if(strsearch(wlist,"MoviePrev",0)==-1) DoAlert 0, "You need to preview the movie first." return 1 endif SetDataFolder MovieMaker SVAR MovieName, WavePattern, CommBox1, CommBox2, CommBox3, CommBox4, saveDF, RecMacro NVAR StartFrame, EndFrame, FrameRate RecMacro=WinRecreation("MoviePrev",0) SetDataFolder saveDF Variable ii, firstimage=1, jj=1 String wt_aux jj=1 for (ii=StartFrame;ii<=EndFrame;ii=ii+1) sprintf wt_aux, WavePattern, ii if (!WaveExists($wt_aux)) continue endif Wave w_aux=$wt_aux Duplicate/O w_aux, MoviePreview Variable/G frame_num=jj execute/Z CommBox1 execute/Z CommBox2 execute/Z CommBox3 execute/Z CommBox4 DoUpdate if (firstimage) firstimage=0 NewMovie/I/L/O/F=(FrameRate) as movieName endif AddMovieFrame jj+=1 endfor if (firstimage!=1) CloseMovie KillVariables frame_num else DoAlert 0, "Could not find any wave with the following pattern: "+WavePattern endif End Function BtnPreview(ctrlName) : ButtonControl string ctrlName SetDataFolder MovieMaker SVAR WavePattern, CommBox1, CommBox2, CommBox3, CommBox4, saveDF, RecMacro NVAR StartFrame, EndFrame String previewwname sprintf previewwname, WavePattern, StartFrame SetDataFolder saveDF if (!WaveExists($previewwname)) DoAlert 0, "There's no wave with this pattern." return 1 endif if (stringmatch(RecMacro,"")) Duplicate/O $(previewwname), MoviePreview DoWindow/K MoviePrev NewImage/N=MoviePrev MoviePreview ModifyImage '' ctab= {*,*,SpectrumBlack,0} Variable/G frame_num=1 execute/Z CommBox1 execute/Z CommBox2 execute/Z CommBox3 execute/Z CommBox4 RecMacro=WinRecreation("MoviePrev",0) else print "preview exists" DoWindow/K MoviePrev execute RecMacro endif string slidercmd sprintf slidercmd, "Slider sliderPreview,win=MovieMaker,limits={%g,%g,1},value= 9,vert= 0", StartFrame, EndFrame execute slidercmd End Function ShowMovieMaker() DoWindow /F MovieMaker End Function MovieMakerInit(): ButtonControl String DF = GetDataFolder(1) // Save if(!DataFolderExists("MovieMaker")) NewDataFolder /O/S MovieMaker String/G saveDF=DF String/G MovieName="data1" Variable/G StartFrame=1 Variable/G EndFrame=9 String/G WavePattern="D%g" Variable/G FrameRate=2 String/G CommBox1="TextBox/C/N=text0/F=0/B=1/G=(65535,65535,65535) \"realization: \"+num2str(frame_num)" String/G CommBox2="DeletePoints 930,300, MoviePreview" String/G CommBox3="" String/G CommBox4="" String/G RecMacro="" endif SetDataFolder DF // and restore string cmd="MovieMaker(\""+DF+"\")" execute cmd End Function SliderProc(ctrlName,sliderValue,event) : SliderControl String ctrlName Variable sliderValue Variable event // bit field: bit 0: value set, 1: mouse down, 2: mouse up, 3: mouse moved if(event %& 0x1) // bit 0, value set SetDataFolder MovieMaker SVAR WavePattern, CommBox1, CommBox2, CommBox3, CommBox4, saveDF NVAR StartFrame, EndFrame String previewwname sprintf previewwname, WavePattern, sliderValue SetDataFolder saveDF wave MoviePreview Duplicate /O $(previewwname), MoviePreview Variable/G frame_num=sliderValue execute/Z CommBox1 execute/Z CommBox2 execute/Z CommBox3 execute/Z CommBox4 //recreationmacro endif return 0 End function MakeTestWaves(ctrlName): ButtonControl string ctrlName variable ii for(ii=1;ii<100;ii+=1) string wname="D"+num2str(ii) make/o/n=(100,100) $wname wave w=$wname w=BesselJ(1,8*(-((p-50)^2+(q-50)^2)/ii^2)) endfor end Window MovieMaker(DF) : Panel String DF SetDataFolder DF+"MovieMaker" PauseUpdate; Silent 1 // building window... NewPanel /W=(564,429,1142,723) as "Movie Maker" SetDrawLayer UserBack SetDrawEnv fsize= 10 DrawText 150,110,"(%g is the frame number (frame_num))" SetDrawEnv fsize= 10 DrawText 150,139,"\"MoviePreview\" is the name of current frame" DrawText 8,261,"Frame" SetVariable setMovieName,pos={13,42},size={130,15},title="Movie Name" SetVariable setMovieName,value= root:MovieMaker:MovieName SetVariable setEndFrame,pos={13,79},size={130,15},title="End Frame" SetVariable setEndFrame,value= EndFrame SetVariable setStartFrame,pos={13,61},size={130,15},title="Start Frame" SetVariable setStartFrame,value= StartFrame SetVariable setWavePattern,pos={13,97},size={130,15},title="Wave Pattern" SetVariable setWavePattern,value= WavePattern Button btnMakeMovie,pos={492,46},size={60,30},proc=BtnMakeMovie,title="Make" Button btnMakeMovie,fColor=(65280,0,0) SetVariable setFrameRate,pos={13,126},size={130,15},title="Frame Rate" SetVariable setFrameRate,value= FrameRate SetVariable setCommBox1,pos={13,154},size={550,15},title="Command Box 1" SetVariable setCommBox1,value= CommBox1 SetVariable setCommBox2,pos={13,173},size={550,15},title="Command Box 2" SetVariable setCommBox2,value= CommBox2 SetVariable setCommBox3,pos={13,192},size={550,15},title="Command Box 3" SetVariable setCommBox3,value= CommBox3 Button btnPreview,pos={426,46},size={60,30},proc=BtnPreview,title="Preview" Button btnPreview,fColor=(0,34816,52224) SetVariable setCommBox4,pos={13,211},size={550,15},title="Command Box 4" SetVariable setCommBox4,value= CommBox4 GroupBox settings,pos={7,14},size={565,218},title="Settings",fStyle=1 Slider sliderPreview,pos={54,247},size={512,38},proc=SliderProc,fSize=6 Slider sliderPreview,limits={1,99,1},value= 65,vert= 0 Button btnMakeTestWaves,pos={340,46},size={80,30},proc=MakeTestWaves,title="Test Waves" Button btnMakeTestWaves,fColor=(0,34816,52224) EndMacro