A2 & Oberon » Программирование » Общеe » Скины

Страниц (1): [1]
 

1. neuf - 04 Сентября, 2009 - 17:35:13 - перейти к сообщению
Заинтересовала тема скинов вот почему: меня постоянно раздражают LEDы на кнопках, причем это свойство кнопок жестко прописано в WMStandardComponents.InitPrototy pes. Нет, можно конечно в PrototypeBindicateToggle.Set вместо TRUE прописать FALSE и перекомпилировать модуль и при следующей загрузке LEDы исчезнут, но так надо будет делать при каждом новом релизе, что не сильно радует (правда, в конце-концов все равно пришлось править WMStandardComponents, но об этом позже). Решил сделать запрет LEDов через скин, который хранить в своем рабочем каталоге, тогда независимо от релиза все свойства всех компонентов будут такими, какие мне нравятся.
Попробовал взять любой существующий скин и просто добавить в него что-то вроде indicateToggle=false, благо есть готовый SkinEditor. Почитал SkinEditor.Text, сделал, как там сказано. В общем, при добавлении нового свойства в skin.bsl последовательность действий такая (на примере добавления indicateToggle в новый скин 1.skin):

1. Прописываем в SkinList.XML ( все файлы из source я перенес в свой рабочий каталог) в конце следующую строчку:
<Look name="skin1" file="1.skin"/>
Теперь наш скин будет виден в списке выбора скинов.

2. В SkinConfig.XML в секцию component name="button" прописываем:
<property name="indicateToggle" type="boolean" mandatory="false" />


3. В SkinEditor в skin.bsl в секцию button прописываем:
indicateToggle : FALSE;
Вроде бы все, что написано в документации. Однако при установке skin1 через SkinLoader ничего не изменяется Нахмурился.
Причина: оказывается, нужно еще в WMStandardComponents.InitPrototy pes после PrototypeBindicateToggle.Set дописать plButton.Add(PrototypeBindicateToggle), тогда indicateToggle становится возможным менять через скин.
(Добавление)
В общем, все-таки пришлось вносить изменения в исходник, т.е., добавится независимости от релиза не получилось. Я посмотрел, у них половина свойств компонентов не меняются через скины, хотя это совсем нетрудно сделать. Чем это вызвано - не знаю.
Да, вот еще что о скинах: файл *.skin - это файл tar, нормально рас- и запаковываетя 7zip. Для изменения картинок в SkinEditor не предусмотрено инструмента, или я его не увидел. В общем, я распаковываю файл, меняю картинки, потом снова запаковываю и переименовываю в skin.
2. BohdanT - 04 Сентября, 2009 - 17:51:06 - перейти к сообщению
Цитата:
Заинтересовала тема скинов вот почему: меня постоянно раздражают LEDы на кнопках, причем это свойство кнопок жестко прописано в WMStandardComponents.InitPrototy pes. Нет, можно конечно в PrototypeBindicateToggle.Set вместо TRUE прописать FALSE и перекомпилировать модуль и при следующей загрузке LEDы исчезнут, но так надо будет делать при каждом новом релизе, что не сильно радует (правда, в конце-концов все равно пришлось править WMStandardComponents, но об этом позже).

Гораздо легче сделать наследника Button в котором выключить данное свойство и естественно использовать его у себя в программах.
3. neuf - 04 Сентября, 2009 - 18:44:57 - перейти к сообщению
Цитата:
Гораздо легче сделать наследника Button в котором выключить данное свойство и естественно использовать его у себя в программах.
А если не в своих? В PET тоже есть кнопочки с LEDами Радость
4. BohdanT - 07 Сентября, 2009 - 10:20:55 - перейти к сообщению
neuf пишет:
А если не в своих? В PET тоже есть кнопочки с LEDами

Это да.
Да и вообще идея интересная Улыбка

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0072]     [ Gzipped ]