value__ntId__ntName __ntTemplatetitle viewBounds viewFormat stepChildren viewFlags beforeScript viewJustify declareSelf drawframeoptionsmyStyleviewSetupFormScriptdatain floatviewcopy  __ntDatatype __ntFlagsÿ( CLAS@    TEXTDragonDrop    RECTlefttoprightbottomÿÿÿÿœ    NUMB    ARAY     __ntDeclare   viewSetupDoneScript   ÿ¤fsSpec¤ The Tornado¨é$âBDГDragonDropViewÐΪˆÚÙPRTONTP1DragonDrop - 0d1Гý:The Tornado:Desktop Folder:DragonDrop - 0d1:DragonDropView ¨¨afpm9Yu•žRD5/2 jXopher & The Tornado The TornadoJ. Christopher Bellÿÿ USER@    RECT  ! "ÿÿÿÿìÿÿÿÿì   ÿÀ NUMB    NUMB   ÿT// be sure to call inherited:?ViewSetupFormScript() func() begin foreach element in datain do :AddNewSymbol(0,0, element); inherited:?ViewSetupFormScript(); end SCPT userProto view1 ÿ   ÿ $   €/* ** Written by Sine of the Times Development team */  EVAL   ÿÀ $    'base ?   ÿ¥Ø{ // SYMBOLS // Symbols not in Newton character set are drawn on a 12 x 12 grid from the middle (hmid, vmid) // integrate: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "integrate(a,b)", type: "Calculus", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // for the limits annotate:=:options(context, "integrate"); // annotate:=[]; if length(annotate)=2 then begin r.right:=max(annotate[0][1].right,annotate[1][1].right)+10; annotate[1][0]:=offsetshape(annotate[1][0],10,0); v:=shapebounds(annotate[0][0]); annotate[0][0]:=offsetshape(annotate[0][0],10,r.bottom-v.bottom); addarrayslot(garray,annotate[0][0]); addarrayslot(garray,annotate[1][0]); end; mypoint:=makepolygon([2,r.bottom-4 ,4,r.bottom-2 ,6,r.bottom-4 ,6,4, 8,2, 10,4]); addarrayslot(garray,mypoint); return [garray,r]; end, }, alpha: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "alpha", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid+3, vmid-2, hmid+2, vmid-2, hmid+1, vmid-1, hmid, vmid, hmid-1, vmid+1, hmid-2, vmid+2, hmid-3, vmid+1, hmid-3, vmid, hmid-3, vmid-1, hmid-2, vmid-2, hmid-1, vmid-1, hmid, vmid, hmid+1, vmid+1, hmid+2, vmid+2, hmid+3, vmid+2]); addarrayslot(garray,mypoint); return [garray,r]; end, }, beta: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "beta", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"beta","ß",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, sdelta: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:13,top:0,bottom:0}, example : "sdelta", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid+2, vmid-2, hmid+1, vmid-3, hmid, vmid-4, hmid-1, vmid-3, hmid-2, vmid-2, hmid-1, vmid-1, hmid, vmid, hmid-1, vmid+1, hmid-2, vmid+2, hmid-2, vmid+3, hmid-2, vmid+4, hmid-1, vmid+5, hmid, vmid+6, hmid+1, vmid+5, hmid+2, vmid+4, hmid+2, vmid+3, hmid+2, vmid+2, hmid+1, vmid+1, hmid, vmid]); addarrayslot(garray,mypoint); return [garray,r]; end; }, delta: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "delta", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"delta",""",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, epsilon: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "epsilon", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid, vmid-2, hmid-1, vmid-3, hmid-2, vmid-3, hmid-3, vmid-2, hmid-3, vmid-1, hmid-2, vmid, hmid-1, vmid, hmid-2, vmid, hmid-3, vmid+1, hmid-3, vmid+2, hmid-2, vmid+3, hmid-1, vmid+3, hmid, vmid+2]); addarrayslot(garray,mypoint); return [garray,r]; end, }, gamma: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "gamma", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid-3, vmid-1, hmid-2, vmid-2, hmid-1, vmid-1, hmid, vmid, hmid, vmid+1, hmid-1, vmid+2, hmid-1, vmid+3, hmid, vmid+4, hmid+1, vmid+3, hmid+1, vmid+2, hmid, vmid+1, hmid, vmid, hmid+1, vmid-1, hmid+1, vmid-2]); addarrayslot(garray,mypoint); return [garray,r]; end, }, lambda: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "lambda", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid-4, vmid-3, hmid-3, vmid-3, hmid-2, vmid-2, hmid-1, vmid-1, hmid, vmid, hmid-1, vmid+1, hmid-2, vmid+2, hmid-3, vmid+3, hmid-4, vmid+3, hmid-3, vmid+3, hmid-2, vmid+2, hmid-1, vmid+1, hmid, vmid, hmid+1, vmid+1, hmid+2, vmid+2, hmid+3, vmid+3, hmid+4, vmid+3]); addarrayslot(garray,mypoint); return [garray,r]; end, }, // omega: {viewjustify: vjSiblingRightH + vjParentFullV, // viewbounds: {left:0,right:12,top:0,bottom:0}, // example : "omega", // type: "Symbols", // image:func(r,context,style) // begin // local garray:=[]; // local mypoint:=nil; // // vmid := RinttoL(r.bottom/2); // hmid := RinttoL(r.right/2); // // mypoint:=makepolygon([hmid-4, vmid+4, hmid-3, vmid+3, hmid-2, vmid+2, hmid-1, vmid+1, hmid, vmid, // hmid+1, vmid-1, hmid+2, vmid-2, hmid+3, vmid-2, hmid+4, vmid-1, hmid+4, // vmid, hmid+4, vmid+1, hmid+3, vmid+2, hmid+2, vmid+2, hmid+1, vmid+2, hmid, vmid+1, hmid, vmid]); // // addarrayslot(garray,mypoint); // // return [garray,r]; // end, // }, pi: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:0}, example : "pi", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"pi","À",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, //psi: {viewjustify: vjSiblingRightH + vjParentFullV, // viewbounds: {left:0,right:12,top:0,bottom:0}, // example : "psi", // type: "Symbols", // image:func(r,context,style) // begin // local garray:=[]; // local mypoint:=nil; // // vmid := RinttoL(r.bottom/2); // hmid := RinttoL(r.right/2); // // mypoint:=makepolygon([hmid-4, vmid+4, hmid-3, vmid+3, hmid-2, vmid+2, hmid-1, vmid+1, hmid, vmid, // hmid+1, vmid-1, hmid+2, vmid-2, hmid+3, vmid-2, hmid+4, vmid-1, hmid+4, // vmid, hmid+4, vmid+1, hmid+3, vmid+2, hmid+2, vmid+2, hmid+1, vmid+2, hmid, vmid+1, hmid, vmid]); // // addarrayslot(garray,mypoint); // // return [garray,r]; // end, // }, // rho: {viewjustify: vjSiblingRightH + vjParentFullV, // viewbounds: {left:0,right:12,top:0,bottom:0}, // example : "rho", // type: "Symbols", // image:func(r,context,style) // begin // local garray:=[]; // local mypoint:=nil; // // vmid := RinttoL(r.bottom/2); // hmid := RinttoL(r.right/2); // // mypoint:=makepolygon([hmid-4, vmid+4, hmid-3, vmid+3, hmid-2, vmid+2, hmid-1, vmid+1, hmid, vmid, // hmid+1, vmid-1, hmid+2, vmid-2, hmid+3, vmid-2, hmid+4, vmid-1, hmid+4, // vmid, hmid+4, vmid+1, hmid+3, vmid+2, hmid+2, vmid+2, hmid+1, vmid+2, hmid, vmid+1, hmid, vmid]); // // addarrayslot(garray,mypoint); // // return [garray,r]; // end, // }, sigma: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "sigma", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid+1, vmid-2, hmid+2, vmid-1, hmid+2, vmid, hmid+2, vmid+1, hmid+1, vmid+2, hmid, vmid+2, hmid-1, vmid+2, hmid-2, vmid+1, hmid-2, vmid, hmid-2, vmid-1, hmid-1, vmid-2, hmid, vmid-2, hmid+1, vmid-2, hmid+2, vmid-2, hmid+3, vmid-2, hmid+4, vmid-3]); addarrayslot(garray,mypoint); return [garray,r]; end, }, tau: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "tau", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid+3, vmid-4, hmid+2, vmid-3, hmid+1, vmid-3, hmid, vmid-3, hmid-1, vmid-3, hmid-2, vmid-3, hmid-3, vmid-2, hmid-2, vmid-3, hmid-1, vmid-3, hmid, vmid-3, hmid, vmid-2, hmid, vmid-1, hmid, vmid, hmid, vmid+1, hmid, vmid+2, hmid, vmid+3, hmid+1, vmid+4, hmid+2, vmid+3]); addarrayslot(garray,mypoint); return [garray,r]; end, }, theta: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:12,top:0,bottom:0}, example : "theta", type: "Symbols", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; vmid := RinttoL(r.bottom/2); hmid := RinttoL(r.right/2); mypoint:=makepolygon([hmid-2, vmid, hmid-2, vmid-1, hmid-2, vmid-2, hmid-1, vmid-3, hmid, vmid-3, hmid+1, vmid-3, hmid+2, vmid-2, hmid+2, vmid-1, hmid+2, vmid, hmid+1, vmid, hmid, vmid, hmid-1, vmid, hmid-2, vmid, hmid-2, vmid+1, hmid-2, vmid+2, hmid-1, vmid+3, hmid, vmid+3, hmid+1, vmid+3, hmid+2, vmid+2, hmid+2, vmid+2, hmid+2, vmid]); addarrayslot(garray,mypoint); return [garray,r]; end, }, //RELATIONS lesst: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:0}, example : "lesst", type: "Relations", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"lesst","<",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, grt: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "grt", type: "Relations", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"grt",">",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, grte: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "grte", type: "Relations", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"grte",""e",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, lesste: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "lesste", type: "Relations", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"lesste",""d",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, equal: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "equal", type: "Relations", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(context,"equal","=",nil); r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, //CALCULUS lim: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:0,top:0,bottom:0}, example : "lim(a-)", type: "Calculus", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; ss:=strfontwidth("lim",style.font); r.right:=ss+4; middle:=rinttol(r.bottom/2); mypoint:=maketext("lim",2,middle-8,strfontwidth("lim",style.font)+2,middle+8); addarrayslot(garray,mypoint); // for the limits annotate:=:options(context, "lim"); // annotate:=[]; local s:={}; if length(annotate)=1 then begin s:=shapebounds(annotate[0][0]); annotate[0][0]:=offsetshape(annotate[0][0],r.right+1,middle+8); r.right:=r.right+s.right+4; addarrayslot(garray,annotate[0][0]); end; if s.right then middle:=middle+8+rinttol(s.bottom/2); mypoint:=makeline(2,middle, ss, middle); addarrayslot(garray,mypoint); mypoint:=makepolygon([ss-4,middle-3,ss+2,middle,ss-4,middle+3]); addarrayslot(garray,mypoint); return [garray,r]; end, }, ddx: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "d/dx", type: "Calculus", }, partial: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : ""/"x", type: "Calculus", }, // Delimiters // Delimiters not in Newton character set are drawn on a 12 x 12 grid from the middle (hmid, vmid) // Lparen: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : ")", type: "Delimiters", }, Rparen: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "(", type: "Delimiters", }, Lbrac: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "[", type: "Delimiters", }, Rbrac: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "]", type: "Delimiters", }, //OPERATOR |^|: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "x^2", type: "Operator", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; caret:=strpos(context,"^",0); first:=substr(context,0,caret); second:=substr(context,caret+1,strlen(context)); // calculate the images size r.bottom:=style.font.size+8; fs:=strfontwidth(first,style.font); ss:=strfontwidth(second,style.font); r.right:=fs+ss+2; mypoint:=maketext(first,0,4,fs,r.bottom-4); addarrayslot(garray, mypoint); mypoint:=maketext(second,fs,0,fs+ss,r.bottom-8); addarrayslot(garray, mypoint); return [garray,r]; end, }, |_|: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "a_0", type: "Operator", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; caret:=strpos(context,"_",0); first:=substr(context,0,caret); second:=substr(context,caret+1,strlen(context)); // calculate the images size r.bottom:=style.font.size+8; fs:=strfontwidth(first,style.font); ss:=strfontwidth(second,style.font); r.right:=fs+ss+2; mypoint:=maketext(first,0,0,fs,r.bottom-4); addarrayslot(garray, mypoint); mypoint:=maketext(second,fs,0,fs+ss,r.bottom); addarrayslot(garray, mypoint); return [garray,r]; end, }, |/|: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "1/2", type: "Operator", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; caret:=strpos(context,"/",0); first:=substr(context,0,caret); second:=substr(context,caret+1,strlen(context)); // calculate the images size r.bottom:=style.font.size*2; fs:=strfontwidth(first,style.font); ss:=strfontwidth(second,style.font); r.right:=max(fs,ss)+4; middle:=rinttol(r.bottom/2); mypoint:=maketext(first,2,0,r.right,middle-2); addarrayslot(garray, mypoint); mypoint:=makeline(2,middle,r.right-2,middle); addarrayslot(garray, mypoint); mypoint:=maketext(second,2,middle,r.right,r.bottom+2); addarrayslot(garray, mypoint); return [garray,r]; end, }, dot: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "x "y", type: "Operator", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; local replace:=clone(Context); strreplace(replace,"dot","x " y",nil); r.right:=strfontwidth(replace,style.font)+2; mypoint:=maketext(replace,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); return [garray,r]; end, }, |!|: {viewjustify: vjSiblingRightH + vjParentFullV, viewbounds: {left:0,right:10,top:0,bottom:0}, example: "!", type: "Operator", image:func(r,context,style) begin local garray:=[]; local mypoint:=[]; middle:=rinttol(r.right/2); mypoint:=makeline(middle,0,middle,r.bottom); addarrayslot(garray,mypoint); return [garray,r]; end; }, //OTHER sum: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:0}, example : "sum(i=0,n)", type: "Other", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // for the limits annotate:=:options(context, "sum"); // annotate:=[]; local f:={bottom: 0}; if length(annotate)=2 then begin local t:=max(annotate[0][1].right,annotate[1][1].right); r.right:=max(r.right,t); f:=shapebounds(annotate[1][0]); annotate[1][0]:=offsetshape(annotate[1][0],rinttol((r.right-f.right)/2),0); s:=shapebounds(annotate[0][0]); annotate[0][0]:=offsetshape(annotate[0][0],rinttol((r.right-s.right)/2),18+f.bottom); r.bottom:=r.bottom+f.bottom+s.bottom; addarrayslot(garray,annotate[0][0]); addarrayslot(garray,annotate[1][0]); end; middle:=rinttol(r.right/2); mypoint:=makepolygon([middle+5,f.bottom+2,middle-5,f.bottom+2,middle+3,f.bottom+10,middle-5,f.bottom+18,middle+5,f.bottom+18]); addarrayslot(garray,mypoint); r.bottom:=r.bottom+20; return [garray,r]; end, }, text: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:20}, example : "text", type: "Other", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // calculate the images size r.bottom:=style.font.size+8; r.right:=strfontwidth(context,style.font)+2; mypoint:=maketext(context,0,4,r.right,r.bottom-4); addarrayslot(garray, mypoint); mypoint:=maketext("",0,0,r.right,r.bottom); addarrayslot(garray, mypoint); return [garray,r]; end, }, product: {viewjustify: vjSiblingRightH + vjParentCenterV, viewbounds: {left:0,right:20,top:0,bottom:0}, example : "product(n=1,m)", type: "Other", image:func(r,context,style) begin local garray:=[]; local mypoint:=nil; // for the limits annotate:=:options(context, "product"); // annotate:=[]; local f:={bottom: 0}; if length(annotate)=2 then begin t:=max(annotate[0][1].right,annotate[1][1].right); r.right:=max(r.right,t); f:=shapebounds(annotate[1][0]); annotate[1][0]:=offsetshape(annotate[1][0],rinttol((r.right-f.right)/2),0); s:=shapebounds(annotate[0][0]); annotate[0][0]:=offsetshape(annotate[0][0],rinttol((r.right-s.right)/2),18+f.bottom); r.bottom:=r.bottom+f.bottom+s.bottom; addarrayslot(garray,annotate[0][0]); addarrayslot(garray,annotate[1][0]); end; middle:=rinttol(r.right/2); mypoint:=makeline(middle-7,f.bottom+2,middle+7,f.bottom+2); addarrayslot(garray,mypoint); mypoint:=makeline(middle-3,f.bottom+2,middle-3,f.bottom+18); addarrayslot(garray,mypoint); mypoint:=makeline(middle+3,f.bottom+2,middle+3,f.bottom+18); addarrayslot(garray,mypoint); r.bottom:=r.bottom+20; return [garray,r]; end, }, } ?€   ÿzfunc(context,function) begin // no nesting! params:=clone(context); nc:=strreplace(params,function,"",nil); Print(function); if nc>1 then self:notify(knotifyqalert,kappname,"Nesting of secondary symbols is not permitted." && " You may only nest primary symbols such as text, or superscripts, or subscripts, etc."); local annotate:=substr(params,1,strlen(params)-2); b:=strtokenize(annotate,$,); local da:=[]; local data:=call b with (); while data do begin addarrayslot(da, data); data:=call b with (); end; Print(da); local garray:=[]; foreach ts in da do begin local sym:=nil; foreach index, element in drawframe do if strpos(ts,sprintobject(index),0)<>nil then begin sym:=index; break; end; if sym=nil then sym:='text; local newimage:=drawframe.(sym):image({top:0,bottom:0,right:0,left:0},ts,mystyle); addarrayslot(garray,newimage); end; return garray; end SCPT   nil ?   ÿ// be sure to call inherited:?ViewSetupFormScript() func() begin b:={}; foreach index,element in drawframe do begin element:=clone(element); element._parent:=self; b.(index):=element; end; self.drawframe:=clone(b); inherited:?ViewSetupFormScript(); end SCPT   [] EVAL   nil EVAL     BOOLclView myapp