SUPER_f
function [x,y,typ]=SUPER_f(job,arg1,arg2)
// Copyright INRIA
x=[];y=[],typ=[]
select job
case 'plot' then
standard_draw(arg1)
s_port_names(arg1)
case 'getinputs' then
[x,y,typ]=standard_inputs(arg1)
case 'getoutputs' then
[x,y,typ]=standard_outputs(arg1)
case 'getorigin' then
[x,y]=standard_origin(arg1)
case 'set' then
y=needcompile // in case leaving with Exit
while %t do
[x,newparameters,needcompile,edited]=scicos(arg1.model.rpar)
arg1.model.rpar=x
// x=arg1
[ok,arg1]=adjust_s_ports(arg1)
if ok then
x=arg1
y=needcompile
typ=newparameters
%exit=resume(%f)
else
%r=2
%r=message(['SUPER BLOCK needs to be edited;';
'Edit or exit by removing all recent changes'],['Edit'; ...
'Exit'])
if %r==2 then
xdel(curwin)
typ=list()
%exit=resume(%t),
else
global %scicos_navig
global Scicos_commands
global inactive_windows
%scicos_navig=[];Scicos_commands=[]
%diagram_open=%t
scf(curwin)
indx=find(curwin==inactive_windows(2))
if size(indx,'*')==1 then
inactive_windows(1)(indx)=null();inactive_windows(2)(indx)=[]
elseif size(indx,'*')>1 then
disp('SUPER'),pause
end
end
end
end
case 'define' then
scs=scicos_diagram();
scs.props.title='Super Block';
model=scicos_model();
model.sim='super';
model.in=1;
model.out=1;
model.rpar=scs;
model.blocktype='h';
model.dep_ut=[%f %f];
gr_i=['thick=xget(''thickness'');xset(''thickness'',2);';
'xx=orig(1)+ [2 4 4]*(sz(1)/7);';
'yy=orig(2)+sz(2)-[2 2 6]*(sz(2)/10);';
'xrects([xx;yy;[sz(1)/7;sz(2)/5]*ones(1,3)]);';
'xx=orig(1)+ [1 2 3 4 5 6 3.5 3.5 3.5 4 5 5.5 5.5 5.5]*sz(1)/7;';
'yy=orig(2)+sz(2)-[3 3 3 3 3 3 3 7 7 7 7 7 7 3 ]*sz(2)/10;';
'xsegs(xx,yy,0);';
'xset(''thickness'',thick)']
x=standard_define([2 2],model,[],gr_i)
end
endfunction