All pastes #717841 Raw Edit

Loading Bar

public text v1 · immutable
#717841 ·published 2007-09-27 22:15 UTC
rendered paste body
alias drawpbar { 
  var %err = //echo $color(info) -a * $iif($isid,$chr(36),/) $+ DRAWPBAR Invalid Parameters. 
  tokenize 32 $remove($1-,$chr(37)) 
  if (-* iswm $1) { var %switch = $1 | tokenize 32 $2- } 
  if (!$5) { %err | halt } 
  if ($2 isnum) var %col = $rgb($2) 
  var %win = $1,%x = $3,%y = $4,%w = $5,%h = $6,%p = $iif($7 >= 99.4,99.4,$iif($7,$7,0)) 
  if (!%col) { %err | halt } 
  var %b = $iif(%w >= %h,%W,%H),%v = $iif(%w >= %h,%H,%W),%c = $iif(%w >= %h,%x,%y),%n = $iif(%w >= %h,%y,%x),%q = 1 
  while (%q <= 3) { 
    if ($gettok(%col,%q,44) > 256) { %err | goto done } 
    inc %q 
  } 
  drawline -rn %win $rgb(178,178,178) 1 $calc(%c + 1) $calc(%n -1) $calc(%c + (%b -1)) $calc(%n -1) 
  drawline -rn %win $rgb(178,178,178) 1 $calc(%c + 1) $calc(%n + %v) $calc(%c + (%b -1)) $calc(%n + %v) 
  drawline -rn %win $rgb(178,178,178) 1 %c %n %c $calc(%n + %v) 
  drawline -rn %win $rgb(178,178,178) 1 $calc(%c + %b -1) %n $calc(%c + %b -1) $calc(%n + %v) 
  var %o = 1,%1 = 243 
  while (%o <= %v) { 
    drawline -rn %win $rgb(%1,%1,%1) 1 $calc(%c +1) $calc(%n + %o -1) $calc(%c + %b -1) $calc(%n + %o -1) 
    dec %1 5 
    inc %o 
  } 
  var %per = $calc((%p /100) * %b), %g = 1, %1 = $gettok(%col,1,44), %2 = $gettok(%col,2,44), %3 = $gettok(%col,3,44) 
  while (%g <= %v) { 
    drawline -rn %win $rgb($iif(%1 > 0,%1,0),$iif(%2 > 0,%2,0),$iif(%3 > 0,%3,0)) 1 $calc(%c +1) $calc(%n + %g -1) $calc(%c + %per +1) $calc(%n + %g -1) 
    dec %1 5 
    dec %2 5 
    dec %3 5 
    inc %g 
  } 
  if (*l* iswm %switch) drawtext -rn %win $rgb(250,250,250) Tahoma 9 $calc(%c + 3)    $calc(%n +1) $iif($ceil(%p) >= 100,Load Complete.,Loading $str(.,$and(3,%p))) 
  if (*p* iswm %switch) drawtext -rn %win $rgb(250,250,250) Tahoma 9 $calc(%b /2 - 5) $calc(%n +1) $+($ceil(%p),$chr(37)) 
  drawdot %win 
  :done 
} 
alias LoadBar { 
  window -adpk0Bf +b @Loading -1 -1 250 13 
  clear @Loading 
  Loadsequence 0 $iif($($1,2) isnum,$v1) 
} 
alias -l Loadsequence { 
  if (!$window(@Loading)) halt 
  var %f = $iif($2 isnum,$2,00070365) 
  drawpbar -lp @Loading %f -1 0 252 13 $1 
  if ($1 <= 100) { .timerBoth -m 1 50 Loadsequence $calc($1 + 1) %f | halt } 
  else  .timerLS -m 1 200 Loadsequence 0 %f 
}