пятница, 2 августа 2013 г.

fooRemote - модуль управления foobar2000 через медиаплеер на базе альтернативных прошивок от moservices.org


Для начала небольшое лирическое отступление. После покупки медиаплеера ASUS O!Play HDP-R3 Air был разочарован в отсутствии поддержки нормальных онлайн-сервисов. Кроме как крутить медиаконтент с ПК, увы, больше ничего не умеет. Звук на аналоговых выходах никакой. Кинулся перепрошивать альтернативными прошивками amp_r* с http://www.moservices.org/forum/. Появился YouTube, IPTV и возможность писать свои модули. Так появился модуль fooRemote :).
Собсно, о модуле fooRemote. Писал для своего аналогового "звукового тракта". В одной комнате стоит ПК с коллекцией музыки, установленным foobar2000 и хорошей звуковой картой. В другой - ЖК панель, усилитель, трехполосная AC и медиаплеер. Сигнал на усилитель подается по аналогу от звуковой карты (кабель 10м, Luxman), медиаплеер соединен с ПК витухой. Пример: Вы лежите на диване в зале и слушаете музыку, цифрованную звуковой картой ПК, щумящим всеми своими кулерами в другой комнате, и управляете воспроизведением пультом плеера.
fooRemote - модуль управления foobar2000 через медиаплеер
fooRemote - модуль управления foobar2000 через медиаплеер
Возможности модуля:
  • полное управление воспрозведением;
  • отображение информации о трэке (название/исполнитель/обложка/прогресс воспроизведения и т.п.);
  • управление активным плэйлистом;
  • выбор плейлиста;
  • фидбэк от foobar'a со стороны ПК;
Баги и что не реализовано, но возможно будет:
  • модификация плэйлиста (удаление трэков, изменение порядка и т.п.);
  • изменение порядка возпроизведения;
  • медленная скорость обновления скрипта (~10 сек.);
  • кнопки пульта иногда срабатывают через раз;
Требования:
Установка:
  • установить foo_httpcontrol, в настройках foobar: Preferences\Tools\HTTP Control\Listen on прописать адрес ПК и порт;
  • установить ajquery 0.69 темплэйт для foo_httpcontrol;
  • в папке темплэйта найти файл config, изменить строку playlist_items_per_page - выставить playlist_items_per_page=1000 (вместо дефолтных 30);
  • скачать модуль fooremote_r2.zip, распаковать;
  • в файле модуля fooremote.config.php, в переменную $fooremote_config->foo_httpcontrol_template_url, прописать адрес и порт, указанный в foo_httpcontrol (файл редактировать в utf-8!);
  • через ftp в /usr/local/etc/mos/www/modules/ создать папку fooremote и скопировать в нее все файлы модуля;
  • опционально: добавить секцию о модуле в mos'овские файлы installed и packages (см. http://www.moservices.org/forum/viewtopic.php?f=16&t=263);
Клавиши (пульт от O!Play HDP-R3):
  • кнопка плэй/пауза - плэйПаузит текущий воспроизводимый трэк;
  • prev/next - предыдущий/следующий трэк в плэйлисте;
  • стоп - останавливает текущий трэк (при этом название и обложка трека сбрасываются);
  • вверх/вниз - выбор трэка в плэйлисте;
  • OK - начать воспроизведение выбранного трэка из плэйлиста;
  • zoom - выбрать плэйлист;
  • влево/вправо - перемотка трэка на 5 сек назад/вперед;
Версии:
  • r1 - первая публичная, бажная, но скинованная под iconbit;
  • r2: настойки вынесены в файл fooremote.config.php, добавлены индикаторы загрузки (вертушки);

пятница, 18 января 2013 г.

Исправленная компонента TfrxXMLExport или правильный экспорт из FastReport 3.x в Excel XML


На днях обнаружил ошибки при экспорте в Excel из компонент TfrxXLSExport и TfrxXMLExport (FastReport 3.x). Именно: если у бэнда установлен Stretch=true и у memo объектов StretchToMaxHeight=true (т.е. установка высоты memo объектов по высоте бенда с переносом слов, если текст не входит по ширине) высота ячеек в выгружаемом Excel файле вычисляется неверно и текст обрезается. Мы получаем что-то вроде этого:

TfrxXMLExport

Как всегда, пришлось дорабатывать напильником. Экспорт OLE неактуален, был исправлен модуль XML экспорта из FR3 (frxExportXML.pas). Суть доработки: добавлено public свойство AutoRowHeight, определяющее вывод свойства height для тега Row в Excel XML файле. Отстутствие данного свойства в теге Row дает автоматическое вычисление высоты строки Excel'ем при открытии файла. Что собсно... и оно :). Проверено на FR 3.24.

Установка:
  • cкопровать модуль в FastReport\Sources\ExportPack из архива;
  • прописать путь FastReport\Sources\ExportPack в Library Path;
  • билдим свой проект;

Скачать frxexportxml.zip

среда, 30 ноября 2011 г.

wzsTools - обновление пакетов

Очередное обновление wzsTools.

wzsToolsCommon 1.15
  • добавлены TwzsImageIndexProperty, TwzsImageIndexEditor: универсальный редактор свойства ImageIndex, заменяющий стандартный выпадающий список удобной формой для выбора иконки. Поддерживаются любые ImageList'ы, включая 32bpp + альфа канал. Устанавливается для любого контрола со свойствами Images и ImageIndex как редактор свойства или как редактор компонента (в контекстное меню). Установка: см. общее описание.

wzsComponents 1.9
  • TwzsDBLookupCheckBox: багфиксы;
wzsOraDBTools 3.4
  • TwzsOraProcExecutor: добавлена поддержка остановки выполнения вложенных pl/sql процедур;
+ Delphi 5/6 более не поддерживается!

вторник, 30 августа 2011 г.

Обновление пакетов wzsTools

Очередное обновление wzsTools. Исправлена БОЛЬШАЯ недоработка во всех пакетах: изменены пути (OutputPath, SearchPath) во всех пакетах на относительные (до этого пакеты не компилировались без правки их опций). Delphi 5/6 более не поддерживается. Также:

wzsToolsCommon 1.12
  • добавлены функции GetComputerNetName, ExtractParArg, GetCmdLnParam;
wzsComponents 1.6
  • TwzsDBLookupCheckBox: доб «отметить все», «снять отметки» и исправлена отрисовка скроллбара, добавлен рефреш итемов по событию DataLink.DataChange;
wzsDBToolsEh 3.9
  • исправлены ошибки;
wzsOraDBTools 3.3
  • TwzsOracleDataset: метод SQLExprSetOrderBy;
  • u_wzsOraDBToolsCommon: добавлена функция GetOraConnectInfo;
  • исправлены ошибки;

вторник, 15 февраля 2011 г.

Обновление пакетов wzsTools

Обновлены пакеты wzsTools:

wzsToolsCommon 1.6
  • TwzsStyler: устранена утечка gdi-хэндлов при прорисовке контролов, что приводило к падению приложения и системы уцелом :);
  • добавлена функция CurrentMemoryUsage, возвращаяющая MemoryUsage приложения;
wzsOraDBToolsEh 2.7
  • TwzsOraProcExecutor: исправлен баг в дизайне, блокирующий очистку свойства ResultVariable;

вторник, 21 декабря 2010 г.

wzsTools - обновление пакетов

Обновлены следующие пакеты wzsTools:

wzsToolsCommon 1.3
  • TwzsStyler: добавлен стиль fs3DFlat;
wzsDBSearch 1.8
  • TwzsDBSearchEdit: добавлена поддержка custom-framing через TwzsStyler, исправлены ошибки;
wzsDBToolsEh 3.4
  • TwzsMonthDBEdit: добавлена поддержка custom-framing через TwzsStyler;

пятница, 15 октября 2010 г.

wzsTools - библиотека компонент и контролов для Delphi


wzsTools - набор бесплатных компонент и data-aware контролов для работы с БД (Delphi)
(с) Протасов Сергей


wzsTools - набор бесплатных компонент и data-aware контролов для работы с БД (Delphi)
Скачать wzsTools.zip

ПокаБез license

wzsTools - бесплатная библиотека оригинальных классов, компонент и контролов для Delphi.

Пакеты библиотеки:

wzsToolsCommon - пакет, содержащий общие и утилитарные функции, компоненты, custom-классы, редакторы компонентов и свойств. Должен быть установлен первым, т.к. на него ссылаются все остальные пакеты библиотеки.
  • TwzsStyler: движок для отрисовки "плоских" контролов (custom-framing,  hot-tracking, скругление углов и т.д.). Стили отрисовки поддерживаются для всех контролов библиотеки wzsTools;
  • TwzsImageIndexProperty, TwzsImageIndexEditor: универсальный редактор свойства ImageIndex, заменяющий стандартный выпадающий список удобной формой для выбора иконки. Поддерживаются любые ImageList'ы, включая 32bpp + альфа канал. Устанавливается для любого контрола со свойствами Images и ImageIndex как редактор свойства или как редактор компонента (в контекстное меню). Для установки редактора под требуемые контролы, достаточно изменить код процедуры u_wzsImageIndexEditor.Register и скомпилировать пакет.
  • TwzsFilterExprBuilder: формирование валидных выражений для стандартного фильтра TDataset с поддержкой операций сравнения (>, <, >= );
  • GetDatasetRecord: получение записи датасета в виде массива variant;
  • WalkDir: перебор файлов по маске;
  • NextFileNumSuffix: получение уникального имени файла в папке с добавлением числового суффикса (напр.: file000001.txt);
  • ApplyProcOnControl, ApplyProcOnComponent - быстрый перебор объектов внутри других обектов, с фильтром по классу и по маске имени;
  • ApplyProcOnActionCategory - перебор объектов TAction с фильтром по свойству TAction.Category;
  • ExtractParArg, GetCmdLnParam - функции разбора коммандной строки вида "/параметр:аргумент";
  • GetComputerNetName - получение имени хоста;
  • RegisterComponentEditorByClassName, RegisterPropEditorByClassName - регистрация редакторов компонент и свойств для имени класса, переданного в виде строки.

Требования: Delphi 7

wzsComponents - компоненты и контролы, унаследованные от стандартного VCL:
  • TwzsDBLookupCheckBox - компонент, отображающий значения wzsTools - набор бесплатных компонент и data-aware контролов для работы с БД (Delphi) поля ListField датасета в виде списка, элементы которого можно пометить и получить соответсвующие значения ключей KeyField в виде variant массива или sql-совместимой строки с разделителями. 
  • TwzsStringsAction: стандартный TAction, расширенный свойством StringList: TStrings;
Требования: Delphi 7

wzsDBSearch - компоненты и контролы для построения интерфейса фильтрации и поиска по датасету:
  • поиск в датасете реализуется через компонент TwzsSearchEngine и связанные с ним контролы для ввода выражений фильтра TwzsDBSearchEdit;
  • фильтрация по lookup-полям с выпадающим списком;
  • сочетание в TwzsDBSearchEdit фильтра и инкрементного поиска по датасету;
  • поддержка операций сравнения (>, <, =, <>, <=, >=) при вводе пользователем выражений фильтра;
  • настраиваемые кнопки фильтра, поиска и т.д. в полях ввода выражений, горячие клавиши;
  • отдельные кнопки TwzsGroupFilterButton и TwzsGroupClearButton для группового применения/сброса фильтра;
wzsDBSearch - компоненты Delphi для фильтрации и поиска в TDataset
Требования: Delphi 7

wzsDBToolsEh - пакет компонент, унаследованных от контролов библиотеки Ehlib, с расширениями и поддержкой стилей отрисовки через TwzsStyler. Прорисовка через стайлер во всех контролах включается при установленном Flat = true и связкой через свойство Additional.Styler.
  • TwzsDBGrid - грид, унаследованный от TDBGridEhwzsTools - набор бесплатных компонент и data-aware контролов для работы с БД (Delphi), и расширенный встроенным фильтром для STFilter, включая поддержку lookup-полей и наполнение списков через внутренний TMemTableEh. Также: опциональная подкраска колонок в зависимости от свойств полей readonly/required, настройка горячих клавиш для фильтра, поддержка стилей отрисовки, поиск связанного датасета через контекстное меню компоненты;
  • TwzsDBEdit, TwzsDBComboBox, TwzsDBDateTimeEdit, TwzsDBNumberEdit, TwzsDBLookupCombobox - data-aware контролы, потомки аналогичных контролов EhLib, расширенные отрисовкой через TwzsStyler;
  • TwzsMonthDBEdit - контрол для выбора даты в виде месяца с выпадающим списком и кнопками для «перелистывания» месяцев по типу следующий/предыдущий, выбора пустой даты или выбора "даты по умолчанию". 
wzsDBToolsEh - data-aware контролы для Delphi на базе Ehlib
Требования: Delphi 7, установленный Ehlib 4 или выше.

wzsOraDBTools - пакет компонент на базе Direct Oracle Access.
  • TwzsOraProcExecutor - компонент, позволяющий wzsTools - набор бесплатных компонент и data-aware контролов для работы с БД (Delphi) запускать хранимые процедуры Oracle с возможностью получения сообщений из этих процедур в Delphi приложении в реальном времени. Функция получения сообщений в компоненте может быть использована для протоколирования, построения прогресс-баров, отладки - т.е. в тех случаях, когда требуется отправить клиентскому приложению любую информацию из хранимой процедуры во время ее выполнения.
    • хранимые процедуры можно запускать как в потоке приложения, так и в отдельном потоке;
    • получение сообщений из хранимых процедур Oracle через событие в компоненте, используя механизм dbms_pipe (режим emPipe) или механизм опроса таблицы в автономной транзакции (режим emLogTable);
    • обмен сообщениями между клиентом и Oracle присходит в рамках сессии;
    • остановка хранимой процедуры любой момент с откатом изменений базы;
    • готовые PL/SQL процедуры для отправки сообщений из хранимых процедур;
TwzsOraProcExecutor - запуск хранимых процедур Oracle из Delphi
  • TwzsOracleDataset - TOracleDataset со следующими расширениями:
    • KeepBookmark: возможность восстановления позиции текущей записи после вызова Refresh метода;
    • RefreshAfterPost: обновление датасета после Post;
    • метод SQLExprSetOrderBy: модификация order by блока в sql выражении;
    • AllowInsert, AllowDelete: запрет вставки/удаления;
  • GetFieldData - возвращает в TStrings результат выполнения запроса при выборке одного поля;
  • GetFinalSQL - возвращает текст запроса с подставленными значениями переменных Oracle;
  • GetSessionID - возвращает идентификатор сессии;
  • GetOraConnectInfo - получение информации о хосте сервера, с которым соединена текущая сессия (имя хоста, IP и т.д.);
Требования: Delphi 7, установленный Direct Oracle Access. Для работы компоненты TwzsOraProcExecutor в режиме получения сообщений, необходимо скомпилировать пакеты из папки "ope_pkgs\ope_*.sql".

Установка пакетов wzsTools

  • распаковать архив в любую папку с сохранением структуры;
  • открыть, скомпилировать и установить пакет Common\wzsToolsCommonD[x].dpk;
  • открыть, скомпилировать и установить нужный пакет из соответствующей папки (напр., wzsComponents\wzsComponentsD7.dpk);
  • добавить в Library Path пути ко всем установленным пакетам;
[x] - версия Delphi.