All pastes #498843 Raw Edit

Couch

public text v1 · immutable
·published 2007-05-20 18:28 UTC
rendered paste body
menu * { 
  Mp3 Player 
  .Mp3 Player:MP3 
  .Add Directory: { 
    var %x = 1 
    while ($ini(Mp3Player.ini,Dir,%x)) { .dll WhileFix.dll WhileFix .inc | %x }
    writeini Mp3Player.ini Dir %x $sdir(*,Music Folder) 
  } 
} 
menu @Mp3Player { 
  sclick:{ 
    if ($inrect($mouse.x,$mouse.y,5,60,290,11)) { 
      moveposbar $calc($mouse.dx -$window($active).x) Moved 
      set %dot Posbar 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,140,40,155,11)) { 
      movevolbar $calc($mouse.dx -$window($active).x) 
      set %dot Volbar 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,205,78,20,20)) CheckMute 
    elseif ($inrect($mouse.x,$mouse.y,185,78,20,20)) CheckRepeat 
    elseif ($inrect($mouse.x,$mouse.y,125,78,20,20)) highlight $calc(%@mp3player + 15) @mp3player @buffer Play 
    elseif ($inrect($mouse.x,$mouse.y,105,78,20,20)) seeksong up 
    elseif ($inrect($mouse.x,$mouse.y,85,78,20,20)) splay stop 
    elseif ($inrect($mouse.x,$mouse.y,65,78,20,20)) splay pause 
    elseif ($inrect($mouse.x,$mouse.y,45,78,20,20)) splay $iif($insong.pause == $true,resume,$iif(%song,$gettok(%song,2,174))) 
    elseif ($inrect($mouse.x,$mouse.y,25,78,20,20)) seeksong down 
    elseif ($inrect($mouse.x,$mouse.y,5,78,20,20)) splay seek 0 
    elseif ($inrect($mouse.x,$mouse.y,281,0,20,15)) { 
      window -c @mp3player 
      window -c @Buffer 
      Exit 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,271,0,10,15)) { 
      window -f @Mp3Player -1 -1 300 $iif($window(@mp3player).h == 352,100,350) 
    } 
    elseif ($inrect($mouse.x,$mouse.y,261,1,10,15)) { 
      window -n @mp3player 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,0,0,300,15)) { 
      movewindow $mouse.x $mouse.y @Mp3Player 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,5,103,275,243)) { 
      highlight $mouse.y @mp3player @buffer 
      halt 
    } 
    elseif ($inrect($mouse.x,$mouse.y,235,85,15,10)) { 
      var %x = 1 
      while ($ini(Mp3Player.ini,Dir,%x)) { .dll WhileFix.dll WhileFix . | inc %x }
      writeini Mp3Player.ini Dir %x $sdir(*,Music Folder) 
    } 
    elseif ($inrect($mouse.x,$mouse.y,260,85,15,10)) dialog -m DelDir DelDir 
    elseif ($mouse.key & 1) Scroller $mouse.x $mouse.y @Mp3Player @Buffer 
  } 
  mouse:{ 
    if (%dot == Posbar) moveposbar $calc($mouse.dx -$window($active).x) Moved 
    elseif (%dot == Volbar) movevolbar $calc($mouse.dx -$window($active).x) Moved 
    elseif ($mouse.key & 1) Scroller $mouse.y $mouse.x @Mp3Player @Buffer 
  } 
  dclick: { 
    if ($inrect($mouse.x,$mouse.y,5,103,290,243)) Play %song 
  } 
  drop: unset %dot 
} 
alias MP3 { 
  if ($window(@Mp3player)) window -c @Mp3Player 
  window -aCdfpk0B +d @Mp3Player -1 -1 300 350 
  drawfill -r  @Mp3Player $rgb(117,169,255) 0      0    0 
  drawrect -rf @Mp3Player $rgb(0,128,192)   1      0    0    300  15 
  drawline -rf @Mp3Player $rgb(0,0,0)       1      0    15   300  15 
  drawtext -r  @Mp3Player $rgb(255,255,255) Tahoma 11   3    1    Mp3 Player 
  drawrect -rf @Mp3Player $rgb(255,255,255) 1      5    20   235  17 
  drawrect -rf @Mp3Player $rgb(255,255,255) 1      245  20   50   17 
  drawrect -rf @Mp3Player $rgb(255,255,255) 1      5    40   100  17 
  drawrect -r  @Mp3Player $rgb(0,0,0)       1      5    20   235  17 
  drawrect -r  @Mp3Player $rgb(0,0,0)       1      5    40   100  17 
  drawrect -r  @Mp3Player $rgb(0,0,0)       1      245  20   50   17 
  drawrect -rf @mp3player $rgb(255,255,255) 1      5    103  290  243 
  drawrect -r  @mp3player $rgb(0,0,0)       1      5    103  290  243 
  drawtext -r  @mp3player $rgb(255,255,255) Webdings 11 284  0 r 
  drawtext -r  @mp3player $rgb(255,255,255) Webdings 11 272  0 2 
  drawtext -r  @mp3player $rgb(255,255,255) Tahoma 11   262  0 _ 
  drawtext -r  @mp3player $rgb(255,255,255) Tahoma 10   235  85 +Dir 
  drawtext -r  @mp3player $rgb(255,255,255) Tahoma 10   260  85 -Dir 
  $scrollbar(@Mp3Player,283,104,12,241,45,23,37,98,@buffer,15) 
  dbuffer @Mp3Player @Buffer 
  scroll.update 1 0 @Mp3Player @Buffer 
  draw.buffer @Mp3Player @Buffer 1 
  drawdot @mp3player 
  drawrect -r @Mp3Player $rgb(0,0,0) 1 0 0 300 350
  buttons | posbar | volbar 100
} 
alias -l button { 
  drawrect -rn @Mp3Player $rgb(255,255,255) 1 $1 $2-4 
  drawtext -rn @Mp3Player $6 $7 15 $calc($1 + 3) $2 $5 
} 
alias -l buttons { 
  var %x = 1, %y = 5 
  while (%x <= 9) { 
    .dll WhileFix.dll WhileFix .
    button %y 78 20 20 $gettok(9 7 4 $chr(59) < 8 : ` W,%x,32) $rgb(255,255,255) Webdings %x 
    inc %x 
    inc %y 20 
    if (%x == 8) inc %y 40 
  } 
} 
alias -l posbar { 
  if ($1 !isnum) tokenize 32 0 
  drawrect -rf @mp3player $rgb(117,169,255) 1 5 60 290 11 
  drawrect -r  @mp3player $rgb(0,0,0)       1 5 63 290 5 
  drawfill -r  @mp3Player $rgb(128,128,255) $rgb(0,0,0) 6 64 
  var %x = $round($calc(($1 / 100) *240 +5),0), %p = $round($calc(($1 / 100) *240 +5),0) 
  if (%x < 5) var %x = 5 
  if (%x > 245) var %x = 245 
  drawrect -rf @mp3player $rgb(0,128,192) 1 %x 60 50 11 
  drawrect -r @mp3player $rgb(0,0,0) 1 %x 60 50 11 
  if ($2 == Moved) { 
    var %length = $sound($insong.fname).length, %pos = $insong.pos, %song = $insong.fname 
    var %time = $round($calc(%length * ($1 / 100)),0) 
    splay seek %time 
  } 
} 
alias -l moveposbar { 
  if ($mouse.key & 1) { 
    .timermoveposbar -om 1 50 moveposbar $calc($mouse.dx -$window($active).x) 
    var %p = $calc($1 -5) 
    if (%p < 0) var %p = 0 
    if (%p > 290) var %p = 290 
    var %p = $round($calc((%p / 290) * 100),0) 
    if ($mouse.key & 1) posbar %p $iif($2 == Moved,Moved) 
  } 
} 
alias -l movevolbar { 
  if ($mouse.key & 1) { 
    .timermovevolbar -om 1 50 movevolbar $calc($mouse.dx -$window($active).x) 
    var %p = $calc($1 -140) 
    if (%p < 0) var %p = 0 
    if (%p > 155) var %p = 155 
    var %p = $round($calc((%p / 155) * 100),0) 
    if ($mouse.key & 1) volbar %p $iif($2 == Moved,Moved) 
  } 
} 
alias -l volbar { 
  if ($1 !isnum) tokenize 32 0 
  drawrect -rf @mp3player $rgb(117,169,255) 1 140 40 155 11 
  drawrect -r @mp3Player 0 1 140 43 155 5 
  drawfill -r @mp3player $rgb(128,128,255) 0 141 44 
  var %x = $round($calc(($1 / 100) *155 +140),0) 
  if (%x < 140) var %x = 140 
  if (%x > 275) var %x = 275 
  drawrect -rf @mp3player $rgb(000,128,192) 1 %x 40 20 11 
  drawrect -r  @mp3player 0 1 %x 40 20 11 
  if ($2 == Moved) vol -v $int($calc(($1 / 100) *65535)) 
} 
alias -l scrollbar { 
  if (!$isid) { return } 
  else { 
    var %i = 1 
    var %win = $1 
    drawrect -rf %win $rgb(128,128,255) 1 $calc($2 + 4) $3 $calc($4 - 7) $5 
    drawrect -r  %win $rgb(0,0,0)       1 $calc($2 + 4) $3 $calc($4 - 7) $5 
    draw.buffer $1 $10 
    while ($hget(scrollbar. $+ $1,%i)) { .dll WhileFix.dll WhileFix . | inc %i }
    hadd -m scrollbar. $+ $1 %i $+($2,/,$3,/,$4,/,$5,/,$6,/,$7,/,$8,/,$9,/,$10,/,$11) 
  } 
} 
alias -l 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))))) 
  var %x $1, %y $calc(((%pos / 100 * $4) * $calc(1 - %sep)) + $2), %w $3, %h $ceil($calc($4 * %sep)) 
  drawrect -rf %win $rgb(255,255,255) 1 $1 $2 $calc($3 -1) $4 
  drawrect -rf %win $rgb(128,128,255) 1 $calc($1 + 4) $2 $calc($3 - 7) $4 
  drawrect -r  %win $rgb(0,0,0)       1 $calc($1 + 4) $2 $calc($3 - 7) $4 
  drawrect -rf %win $rgb(0,128,192)   1 %x %y %w %h 
  drawrect -r  %win $rgb(0,0,0)       1 %x %y %w %h 
  drawline -rf %win $rgb(0,128,192)   1 $calc(%x + 1) $calc((%y + %h) - 2) $calc(%x + 1)        $calc(%y + 1)        $calc((%x + %w) - 1) $calc(%y + 1) 
  drawline -rf %win $rgb(0,128,192)   1 $calc(%x + 1) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc(%y + 1) 
  drawdot %win 
} 
alias -l scroll.update { 
  if ($1 == 1 && $3 == @Mp3Player) { 
    draw.scroll $3 $1 $2 
    draw.buffer $3 $4 
  } 
} 
alias -l movewindow { 
  if ($mouse.key & 1) .timermovewindow -om 1 50 movewindow $1- 
  window $3 $calc($mouse.dx - $1) $calc($mouse.dy - $2) 
} 
alias -l dbuffer { 
  window -hl @buffer -1 -1 400 300 
  clear @buffer 
  var %x = 1 
  while ($readini(Mp3Player.ini,Dir,%x)) { 
    .dll WhileFix.dll WhileFix .
    noop $findfile($readini(Mp3Player.ini,Dir,%x),*.mp3,0,aline -n @buffer $gmt($calc($sound($1-).length / 1000),nn:ss) - $nopath($left($1-,-4)) ® $longfn($1-)) 
    inc %x 
  } 
} 
alias -l draw.buffer { 
  var %win = $1, %win2 = $2, %pos = $3 
  if ($hget(scrollbar. $+ %win,1)) { tokenize 47 $ifmatch } 
  if ($line(%win2,0) <= 10) set %songnum $round($calc(($mouse.y - $2) / $4 * $line(%win2,0)),0) 
  elseif ($line(%win2,0) > 10) { set %songnum $ceil($calc(($mouse.y - $2) / $4 * $calc($line(%win2,0) - 9)))) } 
  if (%songnum == 0) { set %songnum 1 } 
  if (%t) { set %songnum $ifmatch } 
  if (%pos) { set %songnum %pos } 
  if ($window(@Mp3Player)) && (%win == @Mp3Player) { 
    drawrect -rfn %win $rgb(255,255,255) 1 6 104 276 241 
    var %x2 = %songnum 
    var %x = 1 
    while (%x <= 18) { 
      .dll WhileFix.dll WhileFix .
      if ($gettok($line(%win2,%x2),1,174) !isnum) { 
        if ($gettok($line(%win2,%x2),1,174)) drawtext -rnc %win $rgb(0,128,192) "Tahoma" -7 9  $calc((13 * %x) + 93) 271 14 $gettok($line(%win2,%x2),1,174) 
      } 
      inc %x 
      inc %x2 
    } 
  } 
  drawdot %win 
} 
on *:KEYDOWN:@Mp3Player:*: { 
  if ($keyval == 40) HighLight $calc(%@Mp3player +15) @mp3player @buffer 
  elseif ($keyval == 38) HighLight $calc(%@mp3player -10) @mp3player @buffer 
  elseif ($keyval == 13) Play %song 
  elseif ($keyval == 80) splay $iif($insong.pause == $true,resume,pause) 
  elseif ($keyval == 77) Checkmute 
} 
on *:Close:@Mp3Player: Exit 
alias -l Exit { 
  unset %p 
  unset %song 
  unset %songnum 
  splay stop 
} 
alias -l HighLight { 
  var %mouse.y = $1, %win = $2, %win2 $3 
  if (%win == @Mp3Player) { 
    var %h = $calc($height(T,Tahoma,-7) + 2) 
    var %p = $calc($int($calc((%mouse.y - 106) / %h)) + $iif(%songnum,%songnum,1)) 
    var %z = $int($calc((%mouse.y - 106) / %h)) 
    if (%p > $line(%win2,0)) { 
      var %p = 1 
      set $+(%,%win) 107 
    } 
    set %song $line(%win2,%p) 
    if ($($+(%,%win),2) < 328) { 
      drawreplace -nr %win $rgb(255,255,255) $rgb(255,255,255) 6 $($+(%,%win),2) 275 13 
      drawrect -rn %win $rgb(255,255,255) 1 6 $($+(%,%win),2) 275 13 
    } 
    set $+(%,%win) $calc((%z * 13) + 106) 
    if ($4 == Play) Play %song 
    if ($($+(%,%win),2) > 327) halt 
    drawreplace -nr %win $rgb(255,255,255) $rgb(255,255,255) 6 $calc((%z * 13) + 106) 275 13 
    drawrect -nr %win $rgb(117,169,255) 1 6 $calc((%z * 13) + 106) 275 13 
  } 
  drawdot %win 
} 
alias -l Play { 
  if ($insong.pause == $true) splay resume 
  elseif ($1) { 
    splay -p $gettok($1-,2,174) 
    .timerMp3Player -om 0 250 /Mtime 
  } 
} 
alias -l Mtime { 
  if ($window(@Mp3Player)) { 
    drawrect -fr @mp3player $rgb(255,255,255) 1 246 21 48 15 
    if ($insong.fname) { 
      var %song = $nopath($left($insong.fname,-4)) 
      drawtext -r  @mp3player $rgb(117,169,255) Tahoma 11  251 21  $gmt($calc($insong.pos / 1000),nn:ss) 
      drawrect -fr @mp3player $rgb(255,255,255) 1      6   21  233 15 
      drawtext -r  @mp3player $rgb(117,169,255) Tahoma 11  7   21  $left(%song,43) $+ $iif($len(%song) > 43,...) 
      drawrect -rf @Mp3Player $rgb(255,255,255) 1      5   40  100 17 
      drawrect -r  @Mp3Player $rgb(0,0,0)       1      5   40  100 17 
      drawtext -r  @Mp3Player $rgb(117,169,255) Tahoma 11  7   41  $sound($insong.fname).bitrate $+ KBps $int($calc($sound($insong.fname).sample /1000)) $+ KHz 
      posbar $round($calc(($insong.pos /$sound($insong.fname).length)*100),0) 
    } 
    else posbar 0 
  } 
  else .timerMp3Player off 
} 
on *:MP3END: { 
  if ($window(@Mp3Player)) { 
    if ($readini(Mp3Player.ini,Settings,Repeat) != On) HighLight $calc(%@mp3player +15) @mp3player @buffer Play 
    Play %song 
  } 
} 
alias -l Scroller { 
  var %mouse.x $2, %mouse.y $$1, %table = $3, %window = $4 
  var %r = 1 
  while ($hget(scrollbar. $+ %table,%r)) { 
    .dll WhileFix.dll WhileFix .
    tokenize 47 $ifmatch 
    if ($inrect(%mouse.x,%mouse.y,$1,$2,$3,$4)) scroll.update %r $ceil($calc(((%mouse.y - $2) / $4) * 100)) %table %window 
    inc %r 
  } 
} 
alias -l seeksong { 
  if ($mouse.key & 1) { 
    .timerseeksong -om 1 50 seeksong $1 
    splay seek $calc($insong.pos $iif($1 == up,+,-) 300) 
  } 
} 
alias -l CheckMute { 
  if ($vol(master).mute == $false) { 
    drawfill -r @mp3Player $rgb(17,69,255) $rgb(255,255,255) 206 80 
    vol -vu1 
  } 
  else { 
    drawfill -r @mp3Player $rgb(117,169,255) $rgb(255,255,255) 206 80 
    vol -vu2 
  } 
  button 205 78 20 20 W $rgb(255,255,255) Webdings 8 
  drawdot @mp3player 
} 
alias -l CheckRepeat { 
  if ($readini(Mp3Player.ini,Settings,Repeat) != on) { 
    drawfill -r @mp3Player $rgb(17,69,255) $rgb(255,255,255) 187 80 
    writeini Mp3Player.ini Settings Repeat on 
  } 
  else { 
    drawfill -r @mp3Player $rgb(117,169,255) $rgb(255,255,255) 187 80 
    writeini Mp3Player.ini Settings Repeat off 
  } 
  button 185 78 20 20 ` $rgb(255,255,255) Webdings 8 
  drawdot @mp3player 
} 
dialog -l DelDir { 
  title "Delete Directory" 
  size -1 -1 200 87 
  option dbu 
  list 1, 0 0 200 74, size vsbar 
  button "Delete", 2, 1 74 37 12 
} 
on *:Dialog:DelDir:*:*: { 
  if ($devent == init) { 
    var %x = 1 
    while ($readini(Mp3Player.ini,Dir,%x)) { 
      .dll WhileFix.dll WhileFix .
      did -a $dname 1 $readini(Mp3Player.ini,Dir,%x) 
      inc %x 
    } 
  } 
  elseif ($devent == sclick) { 
    if ($did == 2) { 
      if ($did(1).seltext) {
        remini Mp3Player.ini Dir $did(1).sel
        did -r $dname 1
        var %x = 1 
        while ($readini(Mp3Player.ini,Dir,%x)) { 
          .dll WhileFix.dll WhileFix .
          did -a $dname 1 $readini(Mp3Player.ini,Dir,%x) 
          inc %x 
        } 
      }
    } 
  } 
}