Структура VID файла¶
- Table of contents
- Структура VID файла
В VID файле описывается внешний вид приложения, то есть какие окна (в дальнейшем OBJECTS) в каком порядке будут расположены на главном окне приложения MAIN FRAME).
С помощью команды: CFG_NAME "Имя" можно задать имя конфигурации. C помощью команды: CFG_COMMENT "Описание" Можно дать описание команды.
Положить OBJECT непосредственно на MAIN FRAME нельзя. На MAIN FRAME можно положить SPLITTER - таблицу с определяемым числом строк и колонок. В каждую ячейку SPLITTER’а обязательно нужно положить VIEW (табулятор или массив OBJECT’ов или просто контейнер для одного OBJECT’а), а уже на VIEW можно положить OBJECT. Вся эта процедура и описывается в VID файле.
CREATE_OBJ¶
Прежде, чем использовать OBJECT его необходимо создать. Для этого служит набор команд с префиксом CREATE_OBJ_.
Например
CREATE_OBJ_BROW OBJ_ID
создает файловый browser где OBJ_ID - идентификатор OBJECT’а (строчный)
Еще возможные команды создания объектов (модулей) GUI Джина:
- CREATE_OBJ_PLAYLIST - окно просмотра расписания
- CREATE_OBJ_DB - просмотр внешней БД
- CREATE_OBJ_BROW_DB - окно БД
- CREATE_OBJ_PLAIR - двойной player
- CREATE_OBJ_JNGL - Джингл машина
- CREATE_OBJ_BOOK - Папки
- CREATE_OBJ_PLIST - Одиночный Player
- CREATE_OBJ_SBJ - окно просмотра сюжетов
- CREATE_OBJ_TIME - индикатор времени
- CREATE_OBJ_LOG - канал логгера
- CREATE_OBJ_PLAY_X - новый player (X-player)
- CREATE_OBJ_INFO - окно информации
- CREATE_OBJ_FSK - FSK
- CREATE_OBJ_RMT_MIXER - виртуальная панель микшера
- CREATE_OBJ_FILTER_MONITOR - монитор точек обработки аудиопроцессора
- CREATE_OBJ_RETR_MIX - мониитор каналов ретрансляции
- CREATE_OBJ_SJM - новая Джингл машина SJM (smart jingle machine)
- CREATE_OBJ_SJM_EDITOR - редактор раскладок для SJM
etc.
SET_OBJ_BASE¶
Некоторые объекты обрабатывают сразу после создания дополнительную команду SET_OBJ_BASE, в нкоторых случаях даже несколько. Параметры и формат этой команды зависят от созданного объекта.
SET_OBJ_BASE для SJM и SIM_EDITOR¶
(1) конфигурация джингл-машины NJM (C# D3/NJM GUI)
SET_OBJ_BASE идентификатор ENABLE_NJM_CONTROL
Необходимо использовать для запуска NJM.
(2) связь с микшером и управление режимами
SET_OBJ_BASE идентификатор SET_MIXER имя-микшера опции-управления....
связывает микшер с органами управления джингл-машины и устанавливает режимы
имя-микшера - как указано в команде создания микшера в соответствующем CDU файле
опции-управления - следующие флаги
ENABLE_FADER_OPEN, DISABLE_FADER_OPEN - включить/выключить открытие фейдера при старте проигрывания джингла
ENABLE_FADER_CLOSE, DISABLE_FADER_CLOSE - включить/выключить закрытие фейдера при остановке проигрывания джингла
ENABLE_PFL_CONTROL, DISABLE_PFL_CONTROL - включить/выключить управление PFL
после команды SET_MIXER...SET_MIXER для привязки каналов A, B, C, D плеера JM, а также канала PFL плеера JM, к конкретным фейдерам сконфигурированнного микшера, необходимо употребить следующие директивы:
SET_OBJ_BASE OBJID_SJM SET_FADER_A номер-линейки
SET_OBJ_BASE OBJID_SJM SET_FADER_B номер-линейки
SET_OBJ_BASE OBJID_SJM SET_FADER_C номер-линейки
SET_OBJ_BASE OBJID_SJM SET_FADER_D номер-линейки
SET_OBJ_BASE OBJID_SJM SET_FADER_PFL номер-линейки
Полный пример для SJM/NJM
CREATE_OBJ_SJM OBJID_SJM
SET_OBJ_BASE OBJID_SJM ENABLE_NJM_CONTROL
SET_OBJ_BASE OBJID_SJM SET_MIXER LAWO-MIXER ENABLE_FADER_CLOSE ENABLE_FADER_OPEN ENABLE_PFL_CONTROL
SET_OBJ_BASE OBJID_SJM SET_FADER_A 0
SET_OBJ_BASE OBJID_SJM SET_FADER_B 1
SET_OBJ_BASE OBJID_SJM SET_FADER_C 2
SET_OBJ_BASE OBJID_SJM SET_FADER_D 3
SET_OBJ_BASE OBJID_SJM SET_FADER_PFL 3
CREATE_SPLIT_BASE¶
Cоздать SPLITTER
Например
CREATE_SPLIT_BASE SPLITTER_ID n_rows n_cols
создает SPLITTER у которого кол-во строк равно n_rows, а кол-во колонок равно n_cols и кладет его на MAIN FRAME, где SPLITTER_ID - идентификатор SPLITTER’а.
Например
CREATE_SPLIT_BASE SPLITTER_ID n_rows n_cols PARENT_SPLITTER_ID parent_splitter_row parent_splitter_col
создает SPLITTER у которого кол-во строк равно n_rows, а кол-во колонок равно n_cols и кладет его на SPLITTER c идентификатором PARENT_SPLITTER_ID в ячейку. (parent_splitter_row, parent_splitter_col)
CREATE_VIEW¶
Команды с префиксом CREATE_VIEW_ служат для создания различных типов VIEW.
Например
CREATE_VIEW_SINGLE VIEW_ID SPLITTER_ID splitter_row splitter_col view_width view_height
создает VIEW с идентификатором VIEW_ID и располагает на SPLITTER’е с идентификатором SPLITTER_ID в ячейке (splitter_row, splitter_col) в созданную таком образом VIEW можно положить один OBJECT. view_width и view_height желаемая ширина и высота VIEW.
Например
CREATE_VIEW_TAB VIEW_ID SPLITTER_ID splitter_row splitter_col view_width view_height
создает VIEW с идентификатором VIEW_ID и располагает на SPLITTER’е с идентификатором SPLITTER_ID в ячейке (splitter_row, splitter_col) в созданную таком образом VIEW можно положить любое кол-во OBJECT’ов. Внешне VIEW будет выглядеть, как табулятор с возможностью переключения OBJECT’ов.
Например
CREATE_VIEW_ARRAY VIEW_ID SPLITTER_ID splitter_row splitter_col view_width view_height ojects_count objects_in_row
создает VIEW с идентификатором VIEW_ID и раполагает на SPLITTER’е с идентификатором SPLITTER_ID в ячейке (splitter_row, splitter_col) в созданную таком образом VIEW можно положить ojects_count OBJECT’ов, все они будут расположены в виде таблицы, где в одной строке objects_in_row OBJECT’ов.
SET_VIEW_SINGLE_OBJ VIEW_ID OBJ_ID
Положить объект с идентификатором OBJ_ID на VIEW с идентификатором VIEW_ID. VIEW должна быть создана ранее при помощи CREATE_VIEW_SINGLE.
SET_VIEW_ARRAY_OBJ VIEW_ID NUMBER OBJ_ID
Положитть объект с идентификатором OBJ_ID на VIEW с идентификатором VIEW_ID в ячейку под номером NUMBER. VIEW должна быть создана ранее при помощи CREATE_VIEW_ARRAY.
SET_VIEW_TAB_OBJ VIEW_ID OBJ_ID NAME
Положить объект с идентификатором OBJ_ID на VIEW с идентификатором VIEW_ID. VIEW должна быть создана ранее при помощи CREATE_VIEW_TAB NAME - название закладки табулятора.
#define¶
#define XXX YYY
после того, как данная строка встретится в VID файле, при обнаружении текста XXX он будет заменен на YYY Обычно используется для предопределения численных идентификаторов OBJECT’ов, SPLITTER’ов etc.
#include¶
#include "filename.ext"
при разборе файла в это место будет вставлено содержимое файла "filename.ext"
#disable¶
#disable XXX
Все строки, в которых встречается XXX, при разборе будут пропущены SET_OBJ_BASE OBJ_ID x1 x2 x3 … Xn. Дополнительная настройка ранее созданного OBJECT’а с идентификатором OBJ_ID. Параметры x1 x2 x3 … Xn будут переданы OBJECT’у и он попытается понять, что это значит. Какие команды какому OBJECT’у можно давать будет описано позднее (долго с этим разбираться). Если в качестве операнда используется строчка, включающая пробелы, она пишется в кавычках.
SET_SPLIT_X и SET_SPLIT_Y¶
SET_SPLIT_X SPLITTER_ID x1 x2 x3 ... xi ... xn SET_SPLIT_Y SPLITTER_ID y1 y2 y3 ... yi ... yn
Каким образом делать начальное масштабирование SPLITTER’а с идентификатором SPLITTER_ID. Ширина ячейки номер i рассчитывается следующим образом (если ширина всего SPLITTER’а - splitter_width ) wi = (splitter_width * xi) / (x1 + x2 + x3 + … + xi + … + xn); аналогично для высоты.
Splitter внутри табулятора¶
В некоторых случаях есть необходимость положить splitter на страничку табулятора. Эта ситуация требует особого подхода.
Ниже описана последовательность действий, необходимых для создания на закладке табулятора сплиттера, содержащего несколько модулей.
1. Создать объект со сплиттером SPLIT_HOLDER
CREATE_OBJ_SPLIT_HOLDER OBJID_SHOLDER1 SP_n n_rows n_cols
Данная записть означает, что будет создан объект со сплиттером с идентификатором OBJID_SHOLDER1 и именем SP_n, состоящий из n_rows строк и n_cols колонок.
Допустим, что SPLITTER и VIEW уже созданы
CREATE_SPLIT_BASE SPLITTER_ID n_rows n_cols
создает сплиттер, у которого кол-во строк равно n_rows, а кол-во колонок равно n_cols и кладет его на MAIN FRAME, где SPLITTER_ID - идентификатор сплиттера
CREATE_VIEW_TAB VIEW_ID_X SPLITTER_ID splitter_row splitter_col view_width view_height
создает VIEW с идентификатором VIEW_ID_X и располагает на слиттере с идентификатором SPLITTER_ID в ячейке (splitter_row, splitter_col).
2. Положить созданный объект OBJID_SHOLDER1 на VIEW с именем NAME, где в NAME - имя закладки табулятора
SET_VIEW_TAB_OBJ VIEW_ID_X OBJID_SHOLDER1 NAME
3. Далее создаем VIEW с идентификатором VIEW_ID_Y и располагаем ее на объекте со сплиттером OBJID_SHOLDER1 с именем SP_n
CREATE_VIEW_SINGLE VIEW_ID_Y SP_n splitter_row splitter_col view_width view_height
VIEW располагается в ячейке (splitter_row, splitter_col). view_width и view_height желаемая ширина и высота VIEW.
4. После чего на созданную VIEW с идентификатором VIEW_ID_Y кладем какой-нибудь объект, например окно просмотра расписания
SET_VIEW_SINGLE_OBJ VIEW_ID_Y OBJID_MAP
* Окно просмотра расписания должно быть создано заранее при помощи
CREATE_OBJ_PLAYLIST OBJID_MAP
В качестве примера использования ниже прикреплен конфигурационный файл, в котором на одной из закладок располагается модуль расписания и плеер.
ZOOM_OBJ - модуль в полный экран (Fullscreen)¶
Модуль можно развернуть в полный экран сразу после запуска приложения.
Для этого служит команда ZOOM_OBJ. У нее два параметра - идентификатор модуля и номер монитора, на котором нужно развернуть модуль в полный экран, начиная с 1.
Если нужно развернуть несколько модулей на разные экраны - то команда может быть указана несколько раз.
Рекомендуется размещать в самом конце VID-файла.
Пример разворачивает модуль OBJID_MAP2 на весь экран первого монитора:
ZOOM_OBJ OBJID_MAP2 1
Выход из полноэкранного режима происходит по нажатию Alt+Enter.