«Виола» и организация закладок
«Виола», конечно, глубже любой кроличьей норы — со временем всё больше и больше похороненных идей удаётся находить в её внутренностях. Вчера ночью, просматривая код незавершённых и закомментированных пунктов меню, я заметил интересное место — недописанный интерфейс каталога закладок.
Степень готовности там оказалась очень высокой, поэтому я решил оживить этот фрагмент. В «Виоле» уже есть его конкурент — «Hot List», позволяющий хранить закладки плоским списком. Но «Hot List» куда проще и примитивнее. В отличие от него, каталог позволяет создавать папки и перетаскивать закладки, визуально организуя их так, как больше нравится пользователю.
Несмотря на то, что кажется логичным перетаскивать закладку в папку, чтобы туда её перенести, такого автор, к сожалению, не задумывал — в комментариях к незавершённым кускам достаточно подробно описана логика перетаскивания. Чтобы не нарушать аутентичность, я тоже это не реализовывал.
Я вообще стараюсь придерживаться авторского замысла, но есть тут два места, где мне пришлось придумывать
Звуки в «Виоле»
Как я уже писал, анимацию в «Виоле» можно получить, задействовав скриптовый язык, а что же со звуком?
Из скриптового языка доступны только две функции — bell() издаёт системный «бип» и bellVolume(), позволяющая задавать или получать громкость этого «бипа» в процентах. Функций немного, но и их пришлось чинить — они обе используют вызов XBell(), который на «МакОСи» не работает испокон веков.
Пришлось примотать небольшой код на
Что касается HTML, отдельного тега нет, но небольшими ухищрениями можно заставить проиграть браузер любой файл, имя которого кончается на .au — этот файл передаётся маковской утилите afplay, а она умеет играть файл в целой куче аудиоформатов.
Каноничнее, конечно, использовать именно формат au, тем более, что в него аудио можно преобразовать большинством современных утилит, той же ffmpeg, например.
Так как же проиграть звук из HTML?
Самый простой способ — поставить на аудиофайл ссылку. При переходе на неё файл проигрывается, а не скачивается. Способ позанятнее — использование тега INSERT, аналога современного IFRAME. Он проиграет файл при открытии страницы, а если использовать атрибут AFTER, то ещё и зациклит его с указанной в миллисекундах задержкой.
Так как звук играется асинхронно, в теории, можно было писать игры или делать сайты с фоновой музыкой, для этого уже всё было готово. А если учесть, что скриптовый язык позволяет запускать что угодно (с безопасностью у этого браузера явные проблемы), то можно, запуская ту же утилиту afplay, организовать звуковые эффекты.