//$menu window=main;popup=experiments;name=Clone experiment type...;insertafter=remove experiment type DIALOG dlg; integer i,finished,expernr; string experlist,experstr,expername,experclass,newexpername; XMLNODE docnode,node; for i=1 to DbGetExperCount do { if (DbGetExperclass(i)="FPR") or (DbGetExperclass(i)="CHR") or (DbGetExperclass(i)="SEQ") then experlist=experlist+str(i,1,0)+". "+DbGetExperName(i)+" "; } DlgAddText(dlg,"Select experiment to clone:",15,15,200,15); DlgAddList(dlg,experlist,experstr,15,40,300,150,"LIST"); DlgAddText(dlg,"Name of the new experiment:",15,210,200,15); DlgAddEdit(dlg,newexpername,15,235,150,20); finished=0; while not(finished) do { if not(DlgShow(dlg,"Clone experiment type",340,330)) then stop; finished=1; if (finished) and (experstr="") then { message("ERROR: You should select an experiment to clone"); finished=0; } if (finished) and (newexpername="") then { message("ERROR: You should enter a name for the new experiment"); finished=0; } if (finished) then { expernr=0; for i=1 to DbGetExperCount do if newexpername=DbGetExperName(i) then expernr=i; if expernr>0 then { message("ERROR: this experiment exists already"); finished=0; } } } //expername=splitstring(experstr expernr=val(splitstring(experstr,".")); expername=DbGetExperName(expernr); experclass=DbGetExperClass(expernr); XMLNodeCreateDoc("EXPR",docnode,node); DbGetExperSettings(expernr,node); DbCreateExperType(newexpername,experclass); expernr=0; for i=1 to DbGetExperCount do if newexpername=DbGetExperName(i) then expernr=i; if expernr=0 then { message("ERROR: experiment not found");stop; } DbSetExperSettings(expernr,node);