Команды управления внутренним списком

У вас есть возможность хранения аудиофайлов в так называемом внутреннем списке MMB, в который вы можете добавлять файлы форматов mp3/ogg/wma/asf или импортировать файлы из внешних плейлистов m3l/m3u/pls/txt. Не смотря на то, что внутренний список в первую очередь предназначен для хранения аудиофайлов, вы можете использовать его как хранилище ссылок на файлы любых форматов. Добавленные файлы содержатся во внутреннем списке <List>.

Смотрите файл mp3tags.mbd.



SongListReset()
Пояснение
Удаляет все элементы из внутреннего списка <List>. Эта команда полезна в тех случаях, когда вы хотите заменить текущий плейлист новым содержимым.
Пример
SongListReset()



SongListAdd("Путь")
Пояснение
Добавляет во внутренний список <List> аудиофайл (видеофайл, изображение и т.д.)
Примеры
** Добавление файла во внутренний список
SongListAdd("<SrcDir>\mysound.mp3")

/* Добавление файла, выбранного в диалоговом окне "Открыть
файл" */
OpenFile("Все файлы (*.*)","*.*")
If (OpenFile$<>'') Then
  SongListAdd("OpenFile$")
End

И, наконец, более сложный пример, заполняющий обычный список и внутренний список содержимым выбранного каталога с сортировкой обоих списков по именам

** Выбор каталога
BrowseForFolder("Выберите каталог:","")
** Присвоение выбранного пути переменной Path$
Path$=CBK_OpenDir
If
(Path$<>'') Then
  ** Поиск файлов в выбранном каталоге и заполнение внутреннего списка
  SearchForFiles("Path$","")
  ** Сброс списка
  ListBoxAddItem("ListBox","RESET")
  ** Заполнение списка содержимым внутреннего списка
  ListBoxAddItem("ListBox","<List>")
  ** Сортировка списка по именам
  ListBoxSortItems("ListBox","NAME")
  ** Сброс внутреннего списка
  SongListReset()
  ** Заполнение внутреннего списка отсортированным содержимым обычного списка
  ListBoxGetItems("ListBox","<List>")
End



SongListDel("НомерЭлемента")
Пояснение
Удаляет заданный элемент из внутреннего списка <List>.
Примеры
** Удаление первого элемента внутреннего списка
SongListDel("1")

** Удаление элементов 1-10 из внутреннего списка
For i=1 To 10
  SongListDel("i")
Next i



SongListPlay("НомерЭлемента")
Пояснение
Начинает воспроизведение внутреннего списка аудиофайлов. При этом вы можете указать номер элемента, с которого следует начать воспроизведение. Если номер не указан, то воспроизведение начнется с первого элемента.
Примеры
** Воспроизведение первого элемента внутреннего списка
SongListPlay("")

** Воспроизведение файла, выделенного в объекте-списке
ListBoxGetSelectedItems("SongList","Items$,ItemsNum$,#,Count")
num$=GetArrayItem(ItemsNum$,#,1)
SongListPlay("VAL(num$)")



SongListNext()
Пояснение
Начинает воспроизведение следующего трека из внутреннего списка <List>.
Пример
** Воспроизведение следующего трека из внутреннего списка
SongListNext()



SongListPrev()
Пояснение
Начинает воспроизведение предыдущего трека из внутреннего списка <List>.
Пример
** Воспроизведение предыдущего трека из внутреннего списка
SongListPrev()



SongListLoad("Путь","Формат")
Пояснение
Загружает во внутренний список <List> содержимое внешнего плейлиста.
Поддерживаемые форматы: *.m3l, *.m3u, *.pls, *.txt (обычный текстовый файл)

В поле "Формат" вы можете указать формат чтения (M3L, M3U, PLS, TXT), поскольку TXT-файл может быть прочитан как файл формата M3L, а M3L - как TXT. Это может быть полезно в некоторых особых случаях (например, для редактирования), потому что все эти форматы отличны друг от друга, и иногда вам может понадобиться прочитать формат M3U как обычный текстовый файл. Кроме того, если список не содержит ссылки на аудиофайлы, то чтение в формате TXT гарантирует, что список файлов будет прочитан как обычный текст, а не плейлист (т. е. будет исключена попытка чтения длительности файлов, что сэкономит время загрузки).

Также, если вы хотите использовать обычный текстовый файл в качестве плейлиста, то вы всегда должны использовать загрузку в формате M3L, так как этот формат использует некоторые усовершенствования при загрузке файлов.

Если формат не указан, то команда SongListLoad будет загружать файлы в исходном формате (т.е. m3u как m3u, txt как txt, ...)
Примеры
** Загрузка плейлиста в формате m3u
SongListLoad("<SrcDir>\playlist.m3u","m3u")

/* Загрузка выбранного плейлиста во внутренний список и в
обычный объект-список */

OpenFile("Списки воспроизведения (*.m3l;*.m3u;*.pls;*.txt)|*.m3l;*.m3u;*.pls;*.txt|Все файлы|*.*||","")
If (OpenFile$<>'') Then
  SongListReset()
  ListBoxAddItem("SongList","RESET")
  SongListLoad("OpenFile$","")
  ListBoxAddItem("SongList","<List>")
End



SongListRND()
Пояснение
Случайная сортировка внутреннего списка <List>.
Примеры
** Случайная сортировка внутреннего списка <List>
SongListRND()

/* Загрузка выбранного плейлиста во внутренний список и
случайная сортировка с последующей загрузкой в обычный объект-
список */

OpenFile("Списки воспроизведения (*.m3l;*.m3u;*.pls;*.txt)|*.m3l;*.m3u;*.pls;*.txt|Все файлы|*.*||","")
If (OpenFile$<>'') Then
  ** Сброс списков
  SongListReset()
  ListBoxAddItem("SongList","RESET")
  ** Загрузка нового плейлиста
  SongListLoad("OpenFile$","")
  ** Случайная сортировка загруженного плейлиста
  SongListRND()
  ** Загрузка плейлиста в список SongList
  ListBoxAddItem("SongList","<List>")
End



SongListEdit()
Пояснение
Открывает специальное окно, которое позволяет пользователю редактировать внутренний список, сохранять его или загружать с диска. Добавить новые файлы в список очень легко - просто перетащите необходимые файлы из проводника в окно редактирования внутреннего списка. Начиная с версии MMB 4.9, вы можете сохранять/загружать или изменять внутренний список с помощью отдельных команд (SongListLoad, SongListSave, SongListDel и т.д.)
Пример
** Открывает окно редактирования внутреннего списка
SongListEdit()



SongListSave("Список","Путь")
Пояснение
Сохраняет внутренний список в файл. Если путь не указан, то будет открыто диалоговое окно "Сохранить как". С помощью этой команды также можно сохранить содержимое обычного списка - для этого в качестве первого параметра необходимо указать имя объекта-списка. Если первый параметр не указан, то по умолчанию используется внутренний список.
Примеры
/* Открывает диалоговое окно "Сохранить как" для сохранения
внутреннего списка в файл */
SongListSave("","")

Если вы хотите сохранить содержимое списка в файл с расширением отличным от m3l, то обратите внимание на нижеследующий пример. Конечно же, по структуре такой файл ничем не будет отличаться от файла с расширением m3l ;)

/* Открывает диалоговое окно "Сохранить как" для выбора
каталога и имени файла, затем сохраняет внутренний список в
указанный файл с расширением .pls */
SaveFile("Список воспроизведения (*.pls)|*.pls|Все файлы|*.*||","")
If (OpenFile$<>'') Then
  SongListSave("<List>","OpenFile$")
End



SongListTime()
Пояснение
Вычисляет общую продолжительность композиций (или видео) в списке <List> и помещает полученное значение в константу CBK_TotalList или CBK_TotalListSec. Значения этих констант не вычисляются сразу после загрузки файлов во внутренний список, так как подсчет суммарной продолжительности элементов больших списков может занять много времени (особенно на слабых компьютерах). Поэтому мы решили сделать процесс вычисления длительности всех файлов списка не автоматическим, а обеспечить его командой SongListTime.
Пример
/* Просто используйте эту функцию при необходимости, например,
после загрузки плейлиста, и не забудьте создать текстовый
объект с именем CBK_TotalList или CBK_TotalListSec */

OpenFile("Списки воспроизведения (*.m3l;*.m3u;*.pls;*.txt)|*.m3l;*.m3u;*.pls;*.txt|Все файлы|*.*||","")
If (OpenFile$<>'') Then
  SongListReset()
  ListBoxAddItem("SongList","RESET")
  SongListLoad("OpenFile$","")
  ListBoxAddItem("SongList","<List>")
  SongListTime()
End

MMB Программирование без границ :: dgilmour, перевод на русский язык, 2006 :: Все права защищены :: www.mmbscript.ru