Требуется Winamp plugin 0.6 и dsMenu plugin 0.1
dsMenu plugin 0.1 я послал Ergo, он выложит как сможет... Раз уж послал сам выкладывать не буду.
- Код: выделить все
; (c) dAnIK SeNT. На основе скрипта by Sane, Ergo & Smart
; вызывать так: .playlist() или .playlist("adv")
; во втором случае - расширенное меню (оно достаточно сильно
; тормозит при большом количестве треков - у меня при 400 треках
; думает несколько секунд).
local div, div_current, i, n, m, s, adv_menu, str
static vars_set, max_len, max_height, path_winamp
; Переменные
if (vars_set != 1) do
; Путь к Winamp'у
path_winamp = "d:programswinamp" ++ "winamp.exe"
; максимальная длина названия в символах
max_len = 45
; максимальная высота меню - в пикселях
; надо установить в 0 чтобы бала во весь экран
max_height = 400
vars_set = 1
endif
; количество треков отображаемых в одном меню
; пока не работает
; div = arg(1)
; div = 50
if (arg(1)=="adv") do
adv_menu = 1
else
adv_menu = 0
endif
if (not winamp.running) do
Do(RunFile, path_winamp)
endif
menu.reset()
m = menu.create(max_height)
len = winamp.pls("length")
str = "Total: " ++ len ++ " track"
if (len>1) do
str = str ++ "s"
endif
menu.insert(m, 10000, str, "", "")
str = winamp.trackinfo("title", "noindex", "!error")
if (length(str)>max_len) do
str = select(str, max_len) ++ "..."
endif
menu.insert(m, 10000, str, "", "")
menu.insert(m, 10000, "", "-")
for (i=1; i<=len; i = i + 1)
n = "&" ++ (i%10)
if (len >= 10) do
n = ((i/10)%10) ++ n
if (len >= 100) do
n = ((i/100)%10) ++ n
endif
endif
str = n ++ ". " ++ winamp.track(i-1, "title", "!error")
if (length(str)>max_len) do
str = select(str, max_len) ++ "..."
endif
if (adv_menu == 1) do
s = menu.create()
menu.insert(s, 5, "Play", "", "!" ++ (i-1))
menu.insert(s, 5, "Remove", "", "@" ++ (i-1))
menu.insert(s, 5, "Delete (no confirm!)", "", "#" ++ (i-1))
menu.insert(m, 10000, str, "s", s)
else
menu.insert(m, 10000, str, "", "!" ++ (i-1))
endif
endfor
i = menu.show(m)
if ( not (i == "")) Do
ch = select(i, 1)
no = replacechars(i, "!@#$%^&* ")
if (ch == "!") do
winamp.pls("setcur", no)
winamp.playback("play")
elseif (ch == "@") do
winamp.track(no, "select")
winamp.seltracks("remove")
elseif (ch == "#") do
winamp.track(no, "delete")
endif
endif
menu.destroy(m)
; Все! На всякий случай обновляем панельку, где у вас, возможно
; отображается название проигрываемой композиции, если это вам не нужно
; или вас донимает ошибками Wait - закоментируйте оставшиеся строки
; Wait 1
; Bar Format Bar !` refresh