rendered paste bodymenu * {
Mp3 Player
.Mp3 Player:MP3
.Add Directory: {
var %x = 1
while ($ini(Mp3Player.ini,Dir,%x)) inc %x
writeini Mp3Player.ini Dir %x $sdir(*,Music Folder)
}
}
menu @Mp3Player {
sclick:{
if ($inrect($mouse.x,$mouse.y,5,60,290,11) == $true) {
moveposbar $calc($mouse.dx -$window($active).x) Moved
set %dot Posbar
halt
}
elseif ($inrect($mouse.x,$mouse.y,140,40,155,11) == $true) {
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 -p seek 0
elseif ($inrect($mouse.x,$mouse.y,281,0,10,15) == $true) {
window -c @mp3player
window -c @Buffer
Exit
halt
}
elseif ($inrect($mouse.x,$mouse.y,271,1,10,15) == $true) {
window -n @mp3player
halt
}
elseif ($inrect($mouse.x,$mouse.y,0,0,300,15) == $true) {
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)) 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 -aCdfpk0 +d @Mp3Player -1 -1 300 350
drawfill -r @Mp3Player $rgb(177,169,255) 0 0 0
drawrect -rnf @Mp3Player $rgb(0,128,192) 1 0 0 300 15
drawtext -rn @Mp3Player $rgb(0,0,0) Tahoma 11 3 1 Mp3 Player
drawrect -rnf @Mp3Player $rgb(255,255,255) 1 5 20 235 17
drawrect -rnf @Mp3Player $rgb(255,255,255) 1 245 20 50 17
drawrect -rnf @Mp3Player $rgb(255,255,255) 1 5 40 100 17
drawrect -rn @Mp3Player $rgb(0,0,0) 1 5 20 235 17
drawrect -rn @Mp3Player $rgb(0,0,0) 1 5 40 100 17
drawrect -rn @Mp3Player $rgb(0,0,0) 1 245 20 50 17
drawrect -rnf @mp3player $rgb(255,255,255) 1 5 103 290 243
drawrect -rn @mp3player $rgb(0,0,0) 1 5 103 290 243
drawtext -rn @mp3player $rgb(255,255,255) Tahoma 11 284 1 ×
drawtext -rn @mp3player $rgb(255,255,255) Tahoma 11 274 0 _
drawtext -rn @mp3player $rgb(255,255,255) Tahoma 10 235 85 +Dir
drawtext -rn @mp3player $rgb(255,255,255) Tahoma 10 260 85 -Dir
buttons | posbar | volbar 100 | dbuffer @Mp3Player @Buffer
$scrollbar(@Mp3Player,283,104,12,241,45,23,37,98,@buffer,15)
drawdot @mp3player
}
alias -l button {
drawrect -rn $iif($9,$9,@Mp3Player) $rgb(255,255,255) 1 $1-4
drawtext -rn $iif($9,$9,@Mp3Player) $6 $7 -12 $calc($1 + $iif($8 != 9,3,5)) $2 $5
}
alias -l buttons {
var %x = 1, %y = 5, %z = 78, %a = 20, %b = 20
while (%x <= 9) {
button %y %z %a %b $gettok(9 7 4 ; < 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(000,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 -p 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(255,255,255) 1 $calc($2 + 4) $3 $calc($4 - 7) $5
draw.buffer $1 $10
while ($hget(scrollbar. $+ $1,%i)) inc %i
hadd -m scrollbar. $+ $1 %i $+($2,/,$3,/,$4,/,$5,/,$6,/,$7,/,$8,/,$9,/,$10,/,$11)
}
}
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)))))
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 $3 $4
drawrect -rf %win $rgb(128,128,255) 1 $calc($1 + 4) $2 $calc($3 - 7) $4
drawrect -r %win $rgb(255,255,255) 1 $calc($1 + 4) $2 $calc($3 - 7) $4
drawrect -rf %win $rgb(128,128,255) 1 %x %y %w %h
drawrect -r %win $rgb(255,255,255) 1 %x %y %w %h
drawline -rf %win $rgb(128,128,255) 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(128,128,255) 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 dbuffer {
window -hl @buffer -1 -1 400 300
clear @buffer
var %x = 1
while ($readini(Mp3Player.ini,Dir,%x)) {
/noop $findfile($readini(Mp3Player.ini,Dir,%x),*.mp3,0,aline -n @buffer $nopath($left($1-,-4)) ® $longfn($1-))
inc %x
}
}
alias draw.buffer {
var %win = $1, %win2 = $2
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 ($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) {
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:13,38,40: {
if ($keyval == 40) HighLight $calc(%@Mp3player +15) @mp3player @buffer
if ($keyval == 38) HighLight $calc(%@mp3player -10) @mp3player @buffer
if ($keyval == 13) Play %song
}
on *:Close:@Mp3Player: Exit
alias -l Exit {
unset %p %song %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 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 $remove($duration($calc($insong.pos / 1000),3),00:0)
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,45) $+ $iif($len(%song) > 45,...)
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 Scroller {
var %mouse.x $2, %mouse.y $$1, %table = $3, %window = $4
var %r = 1
while ($hget(scrollbar. $+ %table,%r)) {
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 -p 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)) {
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).seltext
}
}
}