All pastes #150273 Raw Edit

talim

public text v1 · immutable
#150273 ·published 2006-08-26 17:56 UTC
rendered paste body
alias whilefix { dll $+(", $scriptdir, \Binary, \WhileFix.dll, ") WhileFix | return 1 }

alias open.player {
  window -ak0hdBCpfo +d @MircAmp -1 -1 250 100
  draw.player
}

alias load.playlist {
  if (!$fopen(buffer)) {
    .fopen buffer $+(", $1-, ")
  }
  window -hl @playlist.buffer 
  clear @playlist.buffer
  var %x,%i = 0
  while (!$feof) {
    inc %i
    %x = $fread(buffer)
    if (%x) { iline @playlist.buffer %i %x }
  }
  .fclose buffer
}

alias scrollbar {
  if (!$isid) { return }
  else {
    drawrect -rnf $1 $6 1 $2 $3 $4 $5
    hadd -m scrollbar. $+ $1 1 $+($2, /, $3, /, $4, /, $5, /, $6, /, $7, /, $8, /, $9, /, $10, /, $11)
  }
}

menu @PlayList {
  sclick: {
    if (!$inrect($mouse.x, $mouse.y, 10, 10, $calc($window($active).w - 20), $calc($window($active).h - 20))) {
      if (!$inrect($mouse.x, $mouse.y, $calc($window($active).w - 10), $calc($window($active).h - 10), 10, 10)) {
        var %x = $mouse.x, %y = $mouse.y
        while ($mouse.key & 1) && ($whilefix) {
          window $active $calc($mouse.dx - %x) $calc($mouse.dy - %y)
        }
      }
      else {
        var %x = $calc($window($active).w - $mouse.x), %y = $calc($window($active).h - $mouse.y), %xx, %yy
        while ($mouse.key & 1) && ($whilefix) {
          %xx = $int($calc(($mouse.dx - $window($active).dx) + %x))
          %yy = $int($calc(($mouse.dy - $window($active).dy) + %y))
          if (%xx <= $calc($window($active).w - 10)) || (%xx >= $calc($window($active).w + 10)) || (%yy <= $calc($window($active).h - 10)) || (%yy >= $calc($window($active).h + 10)) {
            window $active $window($active).x $window($active).y %xx %yy
            draw.playlist
          }
        }
      }
    }
    elseif ($inrect($mouse.x,$mouse.y,12,28,$calc($window($active).w - 36), $calc($window($active).h - 42))) {
      hadd playlist selline $calc($int($calc(($mouse.y - 30) / %h)) + $hget(playlist, buffer.y))
      draw.select $mouse.y
    }
    else {
      if ($hget(scrollbar. $+ $active, 1)) {
        tokenize 47 $ifmatch
        while ($mouse.key & 1) && ($whilefix) {
          if ($inrect($mouse.x, $mouse.y, $1, $2, $3, $4)) { 
            scroll.update 1 $ceil($calc((($mouse.y - $2) / $4) * 100)) 
          }
        }
      }
    }
  }
}

alias scroll.update {
  if ($active == @PlayList) {
    if ($1 == 1) { 
      hadd -m playlist inlist $1-
      draw.scroll @PlayList $1-
      draw.buffer 
    }
  }
}

alias draw.scroll {
  var %win = $1,%name = $2,%pos = $3
  tokenize 47 $hget(scrollbar. $+ %win,%name)
  var %sep = $calc($iif($line($9,0) <= $10 ,1,$iif($calc($10 / $line($9,0)) < 0.05,0.05,$calc($10/ $line($9,0))))), %sh = $calc($8 + $rgb(20,20,20))
  var %x $1, %y $calc(((%pos / 100 * $4) * $calc(1 - %sep)) + $2), %w $3, %h $ceil($calc($4 * %sep))
  drawrect -rnf %win $5 1 $1 $2 $3 $4
  drawrect -rnf %win $6 1 %x %y %w %h
  drawrect -rn %win $8 1 %x %y %w %h
  drawline -rnf %win $7 1 $calc(%x + 1) $calc((%y + %h) - 2) $calc(%x + 1) $calc(%y + 1) $calc((%x + %w) - 1) $calc(%y + 1)
  drawline -rnf %win %sh 1 $calc(%x + 1) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc(%y + 1)
  drawdot $active
}

alias open.playlist {
  hfree -w *@PlayList
  if ($window(@PlayList)) { 
    close -@ @PlayList
  }
  window -ak0hdBCpfo +d @PlayList -1 -1 250 100
  draw.playlist
  draw.buffer 1
  draw.scroll @PlayList 1 $calc(($hget(playlist, buffer.y) / $line(@playlist.buffer, 0)) * 100)
}

alias draw.playlist {
  drawrect -rf @PlayList $rgb(223,220,214) 1 0 0 $window(@PlayList).w $window(@PlayList).h
  drawrect -rn @PlayList $rgb(180,180,180) 1 0 0 $window(@PlayList).w $window(@PlayList).h
  drawline -rn @PlayList $rgb(255,255,255) 1 1 $calc($window(@PlayList).h -2) 1 1 $calc($window(@PlayList).w - 2) 1
  drawline -rn @PlayList $rgb(210,210,210) 1 1 $calc($window(@PlayList).h - 2) $calc($window(@PlayList).w - 2) $calc($window(@PlayList).h - 2) $calc($window(@PlayList).w - 2) 1
  drawrect -nrf @PlayList $rgb(243,240,234) 1 10 10 $calc($window(@PlayList).w - 20) $calc($window(@PlayList).h - 22)
  drawline -rn @PlayList $rgb(200,200,200) 1 10 $calc($window(@PlayList).h - 11) 10 10 $calc($window(@PlayList).w - 11) 10
  drawline -rn @PlayList $rgb(255,255,255) 1 10 $calc($window(@PlayList).h - 11) $calc($window(@PlayList).w - 11) $calc($window(@PlayList).h - 11) $calc($window(@PlayList).w - 11) 11
  drawrect -rnf @PlayList $rgb(233,230,224) 1 12 12 $calc($window(@PlayList).w - 24) 15
  drawrect -rn @PlayList $rgb(200,200,200) 1 12 12 $calc($window(@PlayList).w - 24) 15
  drawline -rn @PlayList $rgb(220,220,220) 1 13 25 $calc($window(@PlayList).w - 14) 25 $calc($window(@PlayList).w - 14) 13
  drawline -rn @PlayList $rgb(255,255,255) 1 13 24 13 13 $calc($window(@PlayList).w - 13) 13
  drawtext -rn @PlayList $rgb(255,255,255) tahoma -7 21 15 Playlist
  drawtext -rn @PlayList $rgb(160,160,160) tahoma -7 20 14 Playlist
  $scrollbar(@PlayList, $calc($window(@PlayList).w - 24), 28, 12, $calc($window(@PlayList).h -  40), $rgb(233,230,224), $rgb(233,230,224), $rgb(255,255,255), $rgb(200,200,200), @playlist.buffer, $int($calc(($window(@PlayList).h - 40) / 13)))
  draw.buffer $hget(playlist, buffer.y)
  draw.scroll @Playlist $hget(playlist, inlist)
  drawdot @PlayList
}

alias draw.player {
  drawrect -rf @MircAmp $rgb(223, 220, 214) 1 0 0 $window(@MircAmp).w $window(@MircAmp).h
  drawrect -rn @MircAmp $rgb(180,180,180) 1 0 0 $window(@MircAmp).w $window(@MircAmp).h
  drawline -rn @MircAmp $rgb(255,255,255) 1 1 $calc($window(@MircAmp).h -2) 1 1 $calc($window(@MircAmp).w - 2) 1
  drawline -rn @MircAmp $rgb(210,210,210) 1 1 $calc($window(@MircAmp).h - 2) $calc($window(@MircAmp).w - 2) $calc($window(@MircAmp).h - 2) $calc($window(@MircAmp).w - 2) 1
  drawrect -nrf @MircAmp $rgb(243,240,234) 1 10 10 100 50
  drawline -rn @MircAmp $rgb(200,200,200) 1 10 60 10 10 110 10
  drawline -rn @MircAmp $rgb(255,255,255) 1 10 60 110 60 110 10

  drawdot @MircAmp
}


alias draw.buffer {
  drawrect -rfn @PlayList $rgb(243,240,234) 1 12 28 $calc($window(@PlayList).w - 36)  $calc($window(@PlayList).h - 40)
  var %t = $1, %m.line = $int($calc(($window(@PlayList).h - 40) / 13))
  if ($hget(scrollbar. $+ @PlayList, 1)) {
    tokenize 47 $ifmatch 
  }
  if ($line(@playlist.buffer, 0) <= %m.line) {
    hadd -m playlist buffer.y $int($calc(($mouse.y - $2) / $4 * $line(@playlist.buffer,0)))
  }
  elseif ($line(@playlist.buffer,0) > %m.line) { 
    hadd -m playlist buffer.y $ceil($calc(($mouse.y - $2) / $4 * $calc($line(@playlist.buffer,0) - 9)))) 
  }
  if ($hget(playlist, buffer.y) == 0) { 
    hinc playlist buffer.y
  }
  if (%t) { 
    hadd playlist buffer.y $ifmatch 
  } 
  var %x2 = $hget(playlist, buffer.y), %x = 1
  while (%x <= %m.line) {
    if ($line(@playlist.buffer,%x2)) {
      drawtext -rnc @PlayList $rgb(255,255,255) "verdana" -7 18 $calc((13 * %x) + 18) $calc($window(@PlayList).w - 45) 14 $line(@playlist.buffer, %x2)
      drawtext -rnc @PlayList $rgb(140,140,140) "verdana" -7 17 $calc((13 * %x) + 17) $calc($window(@PlayList).w - 45) 14 $line(@playlist.buffer, %x2)
    }
    inc %x
    inc %x2
  }
  drawdot @PlayList
  if (%select) {
    draw.select 
  }
}

alias draw.select {
  if (!$1) {
    tokenize 32 %selected 
  }
  else {
    set %selected $1
  }
  var %h = $calc($height(T,verdana,-7) + 1), %p = $calc($int($calc(($1 30) / %h)) + $hget(playlist, buffer.y)), %z = $int($calc(($1 - 30) / %h))
  if (%select) {
    drawreplace -nr @PlayList $rgb(219,225,232) $rgb(243,240,234) 14 %select $calc($window(@PlayList).w - 41) 13
    drawrect -rn @PlayList $rgb(243,240,234) 1 14 %select $calc($window(@PlayList).w - 41) 13
  }
  set %select $calc((%z * 13) + 30)
  drawreplace -nr @PlayList $rgb(243,240,234) $rgb(219,225,232) 14 $calc((%z * 13) + 30) $calc($window(@PlayList).w - 41) 13
  drawrect -nr @PlayList $rgb(157,167,177) 1 14 $calc((%z * 13) + 30) $calc($window(@PlayList).w - 41) 13
  drawdot @PlayList
}