Computational routine
eng

##
tkscaleblk

### File content

    function block=tkscaleblk(block,flag)
    // Copyright INRIA
      blknb=string(curblock())
      if flag==4 then
        cur=%cpr.corinv(curblock())
        if size(cur,'*')==1 then // open widget only if the block
                                 // is in main Scicos editor window
          o=scs_m.objs(cur).graphics.orig;
          sz=scs_m.objs(cur).graphics.sz
          pos=point2pixel(1000,o)
          pos(1)=pos(1)+width2pixel(1000,sz(1)) // widget position
          geom='wm geometry $w +'+string(pos(1))+'+'+ string(pos(2));
          title=block.label
          if title==[] then title="TK source",end
          tit='wm title $w Scale'+blknb // write block label
          bounds=block.rpar(1:2)
          bnds='-from '+string(bounds(1))+' -to '+string(bounds(2))
          cmd='-command ""f'+blknb+' $w.frame.scale""'
          lab='-label ""'+title+'""';
          L='-length 100'
          I='-tickinterval '+string((bounds(2)-bounds(1))/4)
          scale=strcat(['scale $w.frame.scale -orient vertical',..
                        lab,bnds,cmd,L,I],' ')
          initial=mean(bounds) // initial value is the mean
          txt=['set w .vscale'+blknb;
               'set y'+blknb+' 0';
               'catch {destroy $w}';
               'toplevel $w';
               tit
               geom
               'frame $w.frame -borderwidth 10';
               'pack $w.frame';
               scale
               'frame $w.frame.right -borderwidth 15';
               'pack $w.frame.scale -side left -anchor ne';
               '$w.frame.scale set '+string(initial);
               'proc f'+blknb+' {w height} {global y'+blknb+';set y'+blknb+' $height}'
              ];
          TCL_EvalStr(txt) // call TCL interpretor to create widget
          block.outptr(1)=mean(block.rpar(1:2))/block.rpar(3);
        end
      elseif flag==1 then // evaluate output during simulation
        block.outptr(1)=evstr(TCL_GetVar('y'+blknb))/block.rpar(3);
      end
    endfunction ///\withPrompt{}