В RR для создания новых команд использовался файл ExecTBL.ini
Так же это работает и в iCar, но есть ещё одна возможность добавлять свои команды.
Команды нужные в данном конкретном экране можно теперь создавать прямо в нем.
Например, вставив такую строку в файл myskin1.skin, в любом месте между заголовком (три первые строки) и командой End
Код:
........
Script,Init,SetVar;MySkinNum;1
........
Мы можем при нахождении в экране myskin1.skin выполнить данную команду ExecScript;Init
также чтобы не писать длинные команды можно сделать так
Код:
........
Script,Init,SetVar;MySkinNum1;1
Script,Init,SetVar;MySkinNum2;2
Script,Init,SetVar;MySkinNum3;3
........
в результате при выполнении команды ExecScript;Init будут выполнены последовательно все три команды
Теперь как это можно использовать. Во-первых это позволяет не замусоривать файл ExecTBL.ini командами нужными только в этом экране. Во-вторых это даёт большие возможности при необходимости выполнять скины динамически
Например, в файле myskin2.skin
Код:
........
Script,Init,SetVar;MySkinNum;2
........
зададим переменную MySkin=myskin2.skin - SetVar;MySkin;myskin2.skin
и выполним такую команду Load;$MySkin$||ExecScript;Init , в результате загрузится скин myskin2.skin и выполниться его скрипт Init и переменная MySkinNum станет равна 2
теперь MySkin=myskin1.skin - SetVar;MySkin;myskin1.skin и выполним туже команду Load;$MySkin$||ExecScript;Init
в результате загрузиться уже скин myskin1.skin и выполниться его скрипт Init и значение MySkinNum = 1
Данный пример упрощён, но именно благодаря ему в скине CFStyle реализована работа с шаблонами для встраивания программ.
Ещё допустим можно использовать команды задаваемые в скине так: в каждом скине создаём скрипт CloseScreen, в каждом скине он будет выполнять свои действия необходимые для корректного закрытия экрана, то есть во всех скинах это может быть разный набор команд. А на горячую клавишу вешаем команду ExecScript;CloseScreen . В результате при нажатии горячей клавиши в любом из экранов будет выполнено именно то действие, которое заданно на закрытие именно в этом скине.
Также есть особенные имена скриптов, на сегодняшний момент это
OnScreenStart
OnScreenEnd
Которые выполняются при входе и при выходе из скина в котором они описаны. Данные команды очень удобны при необходимости вывести оверлайный экран над текущим.