Переходим к пользовательским меню.
В нашем примере, как и оговорено в @index.ini, их будет четыре: @menu1.ini, @menu2.ini, @menu3.ini и @menu4.ini. И расположены они будут в том же каталоге, что и @index.ini.
Я остановлюсь только на двух из них, т.к. создание остальных совершенно аналогично и зависит только от вашей фантазии. Пусть это будет @menu1.ini - сюда мы поместим стрелочные часы и пару кнопок, а также @menu2.ini - обзор исполняемого содержимого флэшки.
Но пока мы не перешли к пользовательским меню, нужно сделать еще одну важную вещь: надо определить хоть один
шрифт. Одним из важнейших принципов DUTSlaunch является решение проблемы с нерусифицированными навигаторами, что решается в данном случае использованием растровых шрифтов, определенных в соответствующих bmp-файлах.
Шрифт(-ы) лучше определить в @index.ini, что мы и сделаем:
Код:
# основные параметры
[MAIN]
key2run=>SETUP_PRINT_SCREEN
bmp=Shell\back.bmp
method=stretch
# определим шрифт
fontname=System
fontfile=Shell\sys9x12.bmp
alphabet=0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz., %:-
# верхняя полоска с синим фоном
[BLOCK]
position=TL
[BITMAP]
bmp=Shell\back_up.bmp
left=0+
top=0
transparent=no
[ENDBLOCK]
В данном примере я предлагаю воспользоваться одним из моих шрифтов (здесь -
sys9x12.bmp). Параметр alphabet задает строгое соответствие нарисованных начертаний конкретному символу. Ну а имя fontname естественно может быть любым, в уроках я буду использовать System, как здесь и определено.
В этом уроке создадим @menu1.ini
Вначале зададим кнопки.
Первая кнопка будет отвечать
за выключение навигатора и будет располагаться где-то в верхнем левом углу:
Код:
[BLOCK]
position=TL
[BUTTON]
bmp=Shell\knopkaOff.bmp
left=0
top=16
action=>SETUP_OFF
transcolor=$000000
shift=1
width=60
height=40
[ENDBLOCK]
Размер картинки knopkaOff.bmp - 60 x 30. Для того, чтобы исключить "промахивание" при нажатии, можно сделать область чувствительности к нажатию чуть больше, в приведенном примере это задано через
height=40. Ну а в параметре
action мы указали внутреннюю команду "Выключить навигатор". Полный список команд приведен в
[[Ссылки могут видеть только зарегистрированные пользователи. ]]>
Аналогично определим и вторую кнопку, отвечающую за выход из оболочки, уже где-то в правом углу, не забыв сделать отступ от края, равный ширине картинке (у нас здесь это 60):
Код:
[BLOCK]
position=TR
[BUTTON]
bmp=Shell\knopkaExit.bmp
left=60
top=16
action=>SETUP_EXIT
transcolor=$000000
shift=1
width=60
height=40
[ENDBLOCK]
Ну и теперь украсим полученный результат "изюминкой". В прилагаемом ниже архиве есть файл clock.dll. Это т.н. "плагин", который в данном случае делает только одно - выводит стрелки аналоговых часов.
Мы хотим вывести их в центр пользовательской области, а не в центр экрана (что было бы очень некрасиво и криво). Значит надо ее указать, можно сразу после элемента [MAIN], можно перед ним:
Код:
[USER]
left=0
top=15
right=-0
bottom=-55
Эти цифры мы определили ещё на этапе эскиза.
Теперь где-то после кнопок укажем следующее:
Код:
[BLOCK]
position=UCM
[BITMAP]
bmp=shell\clock.bmp
top=-84
left=-85
transcolor=$000001
[PLUGIN]
name=clock.dll
left=0
top=0
params=R:80,RC:5,C1:$0000FF,C2:$0000FF,C3:$0000FF,S:0
visible=yes
enabled=yes
[ENDBLOCK]
Здесь: мы определили фоновую картинку часов (clock.bmp), ее расположение относительно центра (User's Center-Middle) пользовательской области и то, что фон у неё будет прозрачный и эта прозрачность будет определена цветом в точке (0,0) данной картинки (transcolor=$000001). В случае использования другой картинки не забывайте корректировать left и top.
В плагин передаются параметры, заданные в строке params, строка эта произвольная и её вид определяется исключительно потребностью того или иного плагина. В данном случае передаются: радиус часов, радиус центра (=0, чтобы стрелки из одной точки расходились) и цвета стрелок. Параметр S - 1, если нужно нарисовать временную сетку, или 0, если не нужно её рисовать (как в данном примере, ведь она уже нарисована на самой картинке).
Файл @menu1.ini успешно создан
Ну а рядышком исходный эскиз