Показать сообщение отдельно
Старый 04.10.2009, 20:23   #15
DUTS
Долгожитель
 
Аватар для DUTS
Доп. информация
По умолчанию 12. ЭЛЕМЕНТ [BUTTON]

Определение элемента "Кнопка". Конкретный формат данного элемента зависит от его местоположения (в @index.ini или в другом ini-файле).

1. Вначале рассмотрим использование в @index.ini.
Напомню, что в нём задаются т.н. "системные кнопки", т.е. кнопки, которые присутствуют на экране постоянно, независимо от текущего ini-файла.

Обязательные параметры:
bmp1 - относительный путь и имя файла с кнопкой для состояния "не нажато"
bmp2 - относительный путь и имя файла с кнопкой для состояния "нажато"
bmp3 - относительный путь и имя файла с кнопкой для состояния "выбрано"
left и top - координаты расположения на экране
action - выполняемое при нажатии действие. Можно указать несколько таких параметров или перечислить действия через "точку с запятой". При этом, если предполагается переход в другой ini-файл, расширение такого файла указывать не надо.

Как оболочка различит, что делать?
А по первому символу после знака "=":
если это ">", будет использована внутреняя команда (>MENU_NOP, >SETUP_EXIT),
если "@", "$" или "_" - загрузится ini-файл с таким же символом в имени (@start, @menu1, $naviga).
иначе - внешний файл по указанному пути


Не смотря на малое число параметров, элемент не так прост, как кажется. Дело в том, что благодаря манипулированию параметрами bmp1 и bmp3 можно реализовать два поведения кнопки:
1) если bmp1 и bmp3 разные, то будет реализована кнопка с фиксацией выбора (примером чего может быть закладка в Windows), и повторное нажатие на такую кнопку ничего не изменит (пример реализации - кнопки в скине NoGames).
2) если bmp1 и bmp3 одинаковые, то будет реализована кнопка без фиксации (например, кнопка Пуск в Windows), и повторное нажатие на такую кнопку приведёт к откату к предыдущему состоянию (как это реализовано например в скине WinXP, кнопка Пуск).
Более того, кнопка, которая указана в @index.ini первой и значение параметра action в ней начинается с символов "@" или "$", будет "нажата" при старте скина.

Дополнительные параметры:
color - цвет дополнительной индикации состояния "выбрано" в верхней части кнопки (в виде горизонтальной линии).
transcolor - цвет прозрачности, или $000000 (если не использовать прозрачность), или $000001 (если определить прозрачность на основании цвета в точке 0,0) (по умолчанию - $000001, т.е. прозрачность на основе цвета точки в левом-верхнем углу картинки)
width - ширина области нажатия, не зависит от размера картинки кнопки, позволяет например сделать удобной для нажатия пальцем даже кнопку "Закрыть окно" в скине WinXP.
height - ширина области нажатия

Примеры использования:

Пример реализации кнопки Пуск в нижнем-левом углу (как в Windows):
Код:
  [BLOCK]
    position=LB
    [BUTTON]
    bmp1=Shell\b_start1.bmp
    bmp2=Shell\b_start2.bmp
    bmp3=Shell\b_start1.bmp
    left=-1
    top=30
    color=$000000
    action=_START
    transcolor=$000001
  [ENDBLOCK]
При этом кнопка при старе скина нажата не будет, т.к. параметр action начинается с символа "_", а не с "@" или "$". При нажатии кнопки будет загружен START.ini

Код:
  [BUTTON]
  bmp1=Shell\but2a.bmp
  bmp2=Shell\but2b.bmp
  bmp3=Shell\but2c.bmp
  left=64
  top=56
  color=$000000
  action=@games
  transcolor=$000000
Здесь при нажатии будет загружен файл @games.ini (расширение ini не указано!). А сами кнопки реализуют эффект "фиксации".

2. А теперь рассмотрим использование в пользовательском ini-файле.
В этом случае кнопка будет доступна только во время действия этого файла, и "пропадет" при переходе в другой ini-файл.

Для визуального отличия такой картинке "присваивается" только одно изображение, а эффект нажатия задается специальным параметром.

Обязательные параметры:
bmp - относительный путь и имя файла картинки с кнопкой
left и top - координаты кнопки
action - действие при нажатии
width - ширина области нажатия, не зависит от размера картинки кнопки, позволяет например сделать удобной для нажатия пальцем даже кнопку "Закрыть окно" в скине WinXP.
height - ширина области нажатия

Дополнительные параметры. В угловых скобках синим цветом - значения "по умолчанию", принимаются, если данный параметр опущен:
title - подпись под кнопкой <"пусто">
transcolor - цвет прозрачности, или $000000 (если не использовать прозрачность), или $000001 (если определить прозрачность на основании цвета в точке 0,0) <$000001>
font - имя шрифта для подписей <по умолчанию тот, что указан первым в @index.ini или задан параметром "по умолчанию" в элементе [MAIN] текущего ini-файла>
titlesize - размер шрифта подписи (множитель относительно начертания в файле fontname) <1>
titlebottom - смещение подписи относительно нижней границы зоны нажатия. Может быть как положительной величиной (чтобы подпись была вне зоны нажатия), так и отрицательной (например, чтобы "подтянуть" подпись к изображению кнопки) <0, или параметр "по умолчанию", указанный в [MAIN] текущего ini-файла>
wait - ожидать ли завершения запускаемой внешней программы <no>
shift величина сдвига изображения кнопки в точках по нажатию на неё (0 - без сдвига) <1, т.е. вправо-вниз на 1 точку>
titlecolor - цвет подписей под кнопками (также можно задать "по умолчанию")
titlestyle - стиль подписей (0 - просто текст, 1 - с чёрной окантовкой, 2 - с чёрной тенью) <0>

Примеры реализации:

Код:
  [BLOCK]
    position=UCM
    [BUTTON]
    bmp=Elem\1color.bmp
    left=-94
    top=14
    width=60
    height=60
    action=>MENU_BACK
    action=>SETUP_OFF
    transcolor=$000001
  [ENDBLOCK]
Здесь будет исполнено две команды: возврат к предыдущему окну, затем аппарат отключится. Координаты отсчитываются от центра пользовательской области (UCM).
Файл 1color.bmp предполагает одноцветную картинку, что в купе с параметром transcolor=$000001 делает её полностью прозрачной. Предполагается, что данная кнопка "подложена" под некую картинку (например время или батарейка) на экране, как это сделано в скине WinXP (значки GPS и TIME в трее).

Код:
[BUTTON]
bmp=Navi\iGo.bmp
width=60
height=70
action=\ResidentFlash\iGO8\ezrider_pna.exe
transcolor=$000001
shift=0
title=iGo
Здесь организована кнопка для запуска iGо.
Область нажатия равна 60 х 70 точек. В параметре action прописан путь к исполняемому файлу iGo. При нажатии кнопки она смещаться не будет (shift=0).
Вид кнопки определяется в файле Navi\iGo.bmp, а подпись под ней - в параметре title, в данном случае это "iGo".
Если расположение подписи не устраивает, можно воспользоваться параметром titlebottom, указав его значением смещение подписи относительно нижней границы области нажатия (т.е. относительно параметра height):
Код:
[BUTTON]
bmp=Navi\iGo.bmp
width=60
height=70
action=\ResidentFlash\iGO8\ezrider_pna.exe
transcolor=$000001
shift=0
title=iGo
titlebottom=-5
Здесь подпись будет несколько поднята в сравнении с предыдущем примером.

В качестве значения параметра action могут быть:
1) ini-файл (расширение указывать не надо)
2) внешняя программа (виды адресации см. [[Ссылки могут видеть только зарегистрированные пользователи. ]]> 3) внутренняя команда (список см. [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
Начиная с версии 0.9 бета 2 допускается использование в качестве изображения кнопки иконки указанной в action внешней программы, для чего достаточно не указывать параметр bmp. Аналогично и для подписи; в этом случае используется имя файла вызываемой программы (без пути и расширения). В случае использования режима autoset (см. [MAIN]), допустимой является краткая запись объявления кнопки, например:
Код:
[BUTTON]
action=CARD$\Navitel\MobileNavigator.exe
В этом случае кнопка появится в первой свободной позиции на экране в пользовательской области.
__________________
Прежде чем написать критическое замечание, прочтите прилагаемые описания...
DUTS вне форума  
7 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.03287 секунды с 10 запросами