Мир Автомобильных навигаторов

Мир Автомобильных навигаторов (http://4pna.com/index.php)
-   Меню DUTSlaunch (http://4pna.com/forumdisplay.php?f=70)
-   -   Учебная часть (http://4pna.com/showthread.php?t=1399)

DUTS 03.10.2009 19:21

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

Свои вопросы и советы размещайте в соответствующем разделе

Оглавление:
[[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]>

DUTS 03.10.2009 20:23

ЛОГИЧЕСКАЯ СТРУКТУРА ИНТЕРФЕЙСА
 
1. Логические блоки:

а) системный экран - его элементы присутствуют на экране постоянно и не могут
быть переопределены во время работы программы; внешний вид определяется
в файле @index.ini
б) пользовательский экран - элементы зависят от текущего ini-файла (название
которого отлично от @index.ini)
в) пользовательская область - некая прямоугольная область для автоустановки
кнопок в режиме autoset и указания плагину области отображения
(задается элементом [USER])

2. Логические элементы, определяемые в ini-файлах:

а) [MAIN] - общие настройки. [[Ссылки могут видеть только зарегистрированные пользователи. ]]> б) [USER] - задание пользовательской области, используемой для размещения
элементов и указания плагинам области отображения [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
в) [BLOCK] - организация блока элементов, объединных общим принципом размещения
на экране [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
г) [SUPPLY] - источник питания (аккумулятор, сеть, резервный источник) [[Ссылки могут видеть только зарегистрированные пользователи. ]]> д) [BATTERY] - статус аккумулятора (зарядка, полный, частичный или малый заряд) [[Ссылки могут видеть только зарегистрированные пользователи. ]]> е) [ENERGY] - текущий заряд аккумулятора [[Ссылки могут видеть только зарегистрированные пользователи. ]]> ж) [TIME] - текущее время в формате ЧЧ:ММ [[Ссылки могут видеть только зарегистрированные пользователи. ]]> з) [DATE] - текущая дата в формате дд/мм/гггг [[Ссылки могут видеть только зарегистрированные пользователи. ]]> и) [TEXT] - текстовая информация (строка, без переносов) [[Ссылки могут видеть только зарегистрированные пользователи. ]]> к) [PLUGIN] - задание плагина и управление его состоянием [[Ссылки могут видеть только зарегистрированные пользователи. ]]> л) [FILES] - список исполняемых файлов в виде кнопок с отображением их главных
иконок и кратких имён [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
м) [BUTTON] - кнопка [[Ссылки могут видеть только зарегистрированные пользователи. ]]> н) [BITMAP] - растровая картинка, пассивный элемент [[Ссылки могут видеть только зарегистрированные пользователи. ]]> о) [GPS] - графическое представление качества приёма (числа задействованных
спутников) [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
п) [PLAY] - проигрывание wav-файла при загрузке ini-файла [[Ссылки могут видеть только зарегистрированные пользователи. ]]> р) [CLOCK] - аналоговые часы [[Ссылки могут видеть только зарегистрированные пользователи. ]]> с) [SPEEDOMETER] - спидометр [[Ссылки могут видеть только зарегистрированные пользователи. ]]> т) [BUTTONS] - файлы-списки кнопок [[Ссылки могут видеть только зарегистрированные пользователи. ]]> у) [COMPASS] - компас [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
3. Логическая адресация путей доступа к файлам:

а) абсолютная
б) относительная (к каталогу запуска)
в) обращение к карте памяти (CARD$)
подробно об адресации [[Ссылки могут видеть только зарегистрированные пользователи. ]]>

DUTS 03.10.2009 20:56

1. Элемент [MAIN]
 
Вложений: 2
Этот элемент - главная описательная часть любого скина, хотя может и отсутствовать, если так было задумано автором скина.

Что задаётся в этом элементе?

В файле @index.ini :

1. фоновая картинка, а также графические и текстовые элементы на ней, закрепляемые в качестве постоянных (т.е. создаётся т.н. "системный экран")
2. "системные" кнопки, которые будут отображаться на экране вне зависимости от текущего меню
3. звуковые файлы на различные события оболочки (нажатие, запуск программ, ошибка, сообщения).
4. шрифты, которые могут быть использованы во всех ini-файлах скина
5. событие на кратковременное нажатие кнопки Power

В остальных ini-файлах :

1. графические и текстовые элементы для данного меню
2. "пользовательские" кнопки
3. имя основного (т.е. "по умолчанию") шрифта для текстовых элементов данного меню
4. параметры, влияющие на авторасстановку кнопок

также здесь можно переопределить (но не удалить!) такие элементы, как [ENERGY], [DATE] и т.п.

Ниже приведен полный список параметров. Необязательные параметры я выделил красным цветом, а их значения "по умолчанию" - синим.
bmp - относительный путь и имя файла с картинкой фона
systembmp - указывает, надо ли фиксировать картинки на системном экране <no>
method - [т](*) метод отрисовки фоновой картинки <stretch>:
stretch - растянуть на весь экран
center - расположить в центре, без изменения размера
none - без изменения, в левый верхний угол
иначе - "черепицей" (пока не используется)
uppercase - надо ли переводить текстовую информацию в верхний регистр <no>
key2run - действие, выполняемое по нажатии кнопки Power, может быть как
внутренней командой, так и внешней программой
savemenu - запомнить ли данное меню (текущий ini-файл) для возврата по
команде >MENU_BACK <yes>
autoset - использовать ли авторасстановку кнопок, если для них не указаны
параметры left и top <yes>
autosetwidth - ширина кнопок при авторасстановке
autosetheight - высота кнопок при авторасстановке, если эти два параметра не используются, в соответствующих элементах [BUTTON] необходимо указать параметры width и height.
titlebottom- смещение подписи относительно нижней границы зоны нажатия. Может
быть как положительной величиной (чтобы подпись была вне зоны нажатия),
так и отрицательной (например, чтобы "подтянуть" подпись к изображению
кнопки) <0>
space - расстояние между "строками" кнопок при их авторасстановке <0>

presskey - относительный путь и имя файла звука на нажание кнопки
error - относительный путь и имя файла звука на ошибку
run - относительный путь и имя файла звука на запуск внешней программы
info - относительный путь и имя файла звука на появление системных сообщений. Для корректной работы скина рекомендую использовать все 4 эти параметра, а в случае не использования звуков указать типа error=no.
offplugins - команда на деактивацию всех загруженных плагинов (т.е. параметры
visible и enabled всех плагинов устанавливаются в состояние no) <no>


Следующие параметры задают шрифты, которые будут использоваться в скине. Если
требуется определить (или переопределить) шрифт, нужно указывать все эти параметры.
Если же требуется только задать вид шрифта для отображения (разумеется, он должен
быть ранее определен) достаточно указать только fontname:
fontname - наименование шрифта для обращения к нему в рамках скина
fontfile - относительный путь и имя bmp-файла со шрифтом
аlphabet - алфавит, соответствующий начертанию шрифта из файла fontfile
fontoriginal - закрепляет внешний вид шрифта, такой шрифт выводится только заданным в bmp-файле цветом [no]

Пример использования в @index.ini

Объявляем элемент:
Код:

[MAIN]
Назначаем на кнопку Power команду для снятия копии экрана:
Код:

key2run=>SETUP_PRINT_SCREEN
Выбираем bmp-файл для фона и указываем, что хотим расстянуть его на весь экран:
Код:

bmp=Shell\back_col.bmp
method=stretch

Определяем шрифт с именем main. Его начертание и размеры определены в файле cons6x9.bmp (т.е. для себя указали, что ширина символов в нем 6 точек и высота 9), а изображенные в нём символы соответствуют указанным в алфавите, причем число символов и их местоположение относительно других символов должны быть соответствующим друг другу!!!
Код:

fontname=main
fontfile=Elem\cons6x9.bmp
alphabet=0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz., %:-

Также определяем шрифт big. Алфавит аналогичен, а начертание и размеры другие:
Код:

fontname=big
fontfile=Elem\sys9x12.bmp
alphabet=0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz., %:-

А сейчас определим шрифт bigdigits для вывода крупных цифр. Алфавит соответствует информации для вывода времени. Кроме того, шрифт не будет подвержен цветовой коррекции:
Код:

fontname=bigdigits
fontfile=Elem\digits.bmp
alphabet=0123456789:
fontoriginal=yes

Т.к. у нас символы прорисованы в обоих регистрах, запрещаем их перевод в верхний регистр:
Код:

uppercase=0
Определяем используемые звуки на нажатие, на грубую ошибку, на запуск внешних программ и на появление системных сообщений:
Код:

presskey=wavs\1.wav
error=wavs\2.wav
run=wavs\3.wav
info=wavs\3.wav

Пример использования в пользовательском ini-файле

Объявляем элемент:
Код:

[MAIN]
Мы хотим сделать авторасстановку пользовательских кнопок, для этого указываем следующие параметры:
Код:

autoset=yes
autosetwidth=70
autosetheight=70
titlebottom=-10
space=5

благодаря которым сообщаем, что будет использоваться авторасстановка, размер получаемых кнопок будет 70 х 70, между строками будет отступ в 5 точек, а подписи под кнопками будут размещены на 10 точек выше границы области нажатия (т.е. относительно параметра height в элементах [BUTTON].
Далее определим вид подписей:
Код:

fontname=main
titlecolor=$000000
titlestyle=0

Здесь задан цвет черный ($000000), имя шрифта main, который был определен в @index.ini и стиль подписей без тени и окантовки (0).
При необходимости можно изменить эти параметры внутри элемента [BUTTON], т.е. указанные здесь значения можно назвать "значения по умолчанию".

DUTS 03.10.2009 21:30

2. Элемент [PLAY]
 
Позволяет проиграть wav-файл при загрузке меню. Это самый простой элемент. Пример:
Код:

[PLAY]
wavs\hello.wav

Может находится в любом ini-файле, а также в любом его месте (размеется, не внутри другого элемента).

Два замечания:
1) нельзя проиграть файл вне папки текущего скина;
2) файл не будет воспроизведен, если в это время воспроизводится другой wav-файл во избежание какофонии.

DUTS 03.10.2009 22:14

3. Элемент [USER]
 
Задает пользовательскую область и кнопки листания страниц.

Пользовательская область может быть определена как в явном виде:
Код:

left=10
top=20
right=300
bottom=150

(здесь все координаты заданы относительно левого-верхнего угла экрана),

так и в относительном, что позволяет сделать скин экрано-независимым:
Код:

left=10
top=20
right=-10
bottom=-50

здесь мы указали, что пользовательская область будет иметь границы, равные отступу от левого края 10 точек, от верхнего края 20 точек, от правого края 10 точек и, наконец, от нижнего края экрана 50 точек
(т.е. благодаря знаку "минус", границы right и bottom будут отсчитываться от нижнего-правого угла экрана)

Также задаются в данном элементе кнопки "Назад" и "Вперед" для листания страниц кнопок при их авторасстановке (вид кнопки и подпись под ней):
Код:

bprev=Elem\ArrowLeft.ico
sprev=Назад

bnext=Elem\ArrowRight.ico
snext=Вперед

допустимо также указать параметры titlecolor и titlestyle, если это вдруг потребовалось.

Элемент [USER] имеет смысл использовать только в пользовательских ini-файлах (для более удобного восприятия при дальнейших изменениях), однако допускается и в @index.ini, необходимо только помнить, что все параметры данного элемента являются переопределяемыми и действуют до следующего [USER] какого-либо ini-файла.

DUTS 03.10.2009 23:02

4. Элемент [BLOCK]
 
Вложений: 1
Предназначен для группирования логических элементов по их расположению на экране.
Является единственным элементом, который должен быть закрыт, для чего используются тэги [ENDBLOCK] или [/BLOCK] (синонимы).
По умолчанию все координаты на экране отсчитываются от его левого-верхнего угла. С помощью [BLOCK] можно задать девять точек отсчета, комбинируя символы
L (left, левый край), C (center, центр по горизонтали), R (right, правый край), T (top, верхний край), M (middle, середина по вертикали) и B (bottom, нижний край).
Т.е. допустимы следующие точки отсчета:

LT - левый-верхний угол (можно не использовать, т.к. принято по умолчанию)
CT - середина верхнего края (а можно записать и TC - разницы никакой, а можно и C)
RT - правый-верхний край (а можно записать и TR)
LB - левый-нижний край (синоним - BL)
CB - середина нижнего края (BC)
RB - правый-нижний край (BR)
ML - середина левого края (LM, M)
MR - середина правого края (RM)
CM - центр экрана (MC)

Кроме этого, в качестве префикса можно добавить символ "U" (в значении User's) для указания точек отсчета относительно пользовательской области.

Например:
Код:

[BLOCK]
position=CM
....
[ENDBLOCK]

задаст точкой остчета центр экрана навигатора, а
Код:

[BLOCK]
position=UCM
....
[ENDBLOCK]

центр пользовательской области, которые могут не совпадать (как в выше приведенных примерах)

ВАЖНО!

в случае задания значений B (bottom) или R (right), координаты будут отсчитываться соответственно от нижнего и правого края, следовательно знак "минус" теряет смысл, и его использование в параметрах left и top элементов, расположенных внутри [BLOCK] в этих случаях недопустимо.
В случаях C (center) и M (middle) "минус" будет означать смещение влево или вверх относительно точки отсчета.

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

[BLOCK]
  position=TR
  [BUTTON]
  bmp=Shell\exit.bmp
  left=25
  top=20
  height=30
  width=30
  color=$000000
  action=>SETUP_EXIT
  transcolor=$000000
[ENDBLOCK]
[BLOCK]

  position=LT
  [BUTTON]
  bmp=Shell\sskin.bmp
  left=6
  top=20
  height=30
  width=30
  color=$000000
  action=>SETUP
  transcolor=$000000
[ENDBLOCK]

Здесь первая кнопка будет размещена в правом верхнем углу экрана, а вторая - в левом верхнем.

DUTS 03.10.2009 23:11

5. ЭЛЕМЕНТ [SUPPLY]
 
Вложений: 1
Элемент отвечает за отображение источника питания навигатора.
Всего в оболочке предусматривается три состояния: "не от внешнего питания" (т.е. "аккумулятор"), "от внешнего питания" (т.е. блок питания или адаптер в прикуриватель), "резерв" (т.е. была запущена функция автовыключения при достижении некоего минимального заряда аккумулятора после снятия внешнего питания). А также, для непредвиденного результата со стороны Windows, элемент "состояние не определено". Таким образом, всего 4 состояния, которые и надо нарисовать в bmp-файле друг за другом (с одинаковой для всех шириной) в такой же последовательности.
При задании элемента в ini-файле нужно указать: относительный путь и название bmp-файла, координаты местоположения (левый-верхний угол картинки) и использование прозрачности (transparent равен 0, если прозрачность не использовать, или 1, если цвет прозрачности будет определятся по цвету точки с координатами (0,0) данного bmp-файла).

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

  [SUPPLY]
  bmp=Elem\supp.bmp
  left=60
  top=0
  transparent=1

Разумеется, что на координаты left и top влияет параметр position элемента [BLOCK], если [SUPPLY] располагается в нём:

Код:

[BLOCK]

  position=TR

  [SUPPLY]
  bmp=Elem\supp.bmp
  left=60
  top=0
  transparent=0

[ENDBLOCK]

здесь координата left будет отсчитываться от правого края влево.

DUTS 04.10.2009 00:37

6. ЭЛЕМЕНТ [BATTERY]
 
Элемент отвечает за отображение состояния аккумулятора.
Всего в оболочке предусматривается шесть состояний: "полный заряд","средний заряд","низкий заряд","зарядка", "резервное питание" и "не определено", которые и надо нарисовать в bmp-файле друг за другом (с одинаковой для всех шириной) в такой же последовательности.
При задании элемента в ini-файле нужно указать: относительный путь и название bmp-файла, координаты местоположения (левый-верхний угол картинки) и использование прозрачности (transparent равен 0, если прозрачность не использовать, или 1, если цвет прозрачности будет определятся по цвету точки с координатами (0,0) данного bmp-файла).

Пример использования, аналогично предыдущему элементу:
Код:

  [BATTERY]
  bmp=Elem\supp.bmp
  left=90
  top=30
  transparent=1

Разумеется, что на координаты left и top влияет параметр position элемента [BLOCK], если [BATTERY] располагается в нём:

Код:

[BLOCK]

  position=BL

  [BATTERY]
  bmp=Elem\battery.bmp
  left=90
  top=30
  transparent=0

[ENDBLOCK]

здесь координата top будет отсчитываться от нижнего края кверху.

DUTS 04.10.2009 00:40

Продолжение следует...

DUTS 04.10.2009 17:53

7. ЭЛЕМЕНТ [ENERGY]
 
Вложений: 3
Определяет графический элемент, соответствующий степени остаточного заряда аккумулятора, т.е. ту самую популярную "батарейку".

DUTSlaunch предоставляет три варианта использования данного элемента:
1) двухкадровый вариант (два состояния - полный разряд и полный заряд) и плавный переход одного состояния в другой.
2) многокадровый вариант и дискретная смена кадров по указанному числу дискретов.
3) многокадровый вариант и дискретная смена кадров по указанным уровням заряда.

А также предоставляется возможность создания как горизонтально расположенной "батарейки", так и вертикально.

Общими обязательными для всех трех вариантов являются параметры:
bmp - относительный путь и имя файла с моноширинной картинкой, где отрисованы необходимые состояния (кадры)
left и top - координаты размещения (естественно, с учётом [BLOCK], если было использование блоков).

Дополнительно (если вариант использования отличен от "по умолчанию" или для "читабельности" текста скина) могут быть указаны:
transparent - использовать прозрачный фон по точке с координатами (0,0) или не использовать. Принимает соответственно значения 1 (принятор по умолчанию, если не указывать transparent) или 0.
orient - ориентация элемента: h (по умолчанию) - горизонтальное, v - вертикальное

Параметры для первого способа отображения:

x1 и x2 - отноосительные координаты начала и конца изменяемой области картинки "батарейки", соответствуют границам 100% и 0% заряда, что позволяет "отсечь" например нарисованные клеммы батарейки. Координаты имеют положительное значение и отсчитываются соответственно от левого и правого краев нарисованного кадра. В случае вертикального расположения x1 и x2 отсчитываются соответственно от верхнего и нижнего края (т.е. запись y1 и y2 не используется).

Пример:
Код:

[BLOCK]
  position=TR

  [ENERGY]
  bmp=Elem\bat.bmp
  transparent=0
  left=36
  top=0
  orient=h
  x1=8
  x2=5
[ENDBLOCK]

В этом примере сообщаем программе, что отображаемая "батарейка" будет горизонтальная, относительные границы изменяемой области "батарейки": x1 - от левого края изображения 8 точек и x2 - от правого края картинки 5 точек, а расположение будет 36 точек влево от правого края экрана. Параметр transarent=0 говорит, что при выводе картинки прозрачность использовать не надо.

Параметр для второго способа отображения:

discrete - сообщает программе, сколько кадров нарисовано в используемом bmp-файле
При этом способе переключение кадров просходит по формуле (90/k)+10, где k - номер кадра, принимает значения от 1 до указанного в параметре discrete.
Например:
Код:

[ENERGY]
    bmp=Elem\GreenBat.bmp
    transparent=yes
    left=36
    top=0
    discrete=3

В данном примере задано 3 состояния (т.е. предположили "полный заряд", "средний заряд", "низкий заряд").
Обращаю внимание, что в данном примере вместо значения "1" в параметре transarent стоит "yes", что в данном случае является синонимами. (0 = no, 1 = yes)

Параметр для третьего способа отображения:

levels - значения заряда, соответствующие изображениям в bmp-файле, перечисленные через запятую. В этом случае параметр discrete указывать не надо, т.е. число кадров определяется именно числом перечисленных значений:

Код:

    [ENERGY]
    bmp=Elem\GreenBat.bmp
    transparent=no
    left=21
    top=46
    levels=100,90,65,40

Здесь указаны четыре значения заряда, от 100 до 90 будет выводится первый кадр, от 90 до 65 - второй кадр, от 65 до 40 - третий кадр и от 40 до полного разряда - четвертый.

DUTS 04.10.2009 18:57

8. ЭЛЕМЕНТ [TIME]
 
Вложений: 1
Определяет начертание и расположение цифровых часов (в формате ЧЧ:ММ)

Обязательными являются четыре параметра:
bmp - относительный путь и имя файла с моноширинной картинкой, где отрисованы цифры и разделители
alphabet - алфавит, используется для сопоставления изображениям в bmp-файле, обязательны цифры и двоеточие, остальные символы в данном элементе не используются, но их число в алфавите дожно строго соответствовать числу изображений. Разумеется в позиции алфавита "двоеточие" можно нарисовать в bmp-файле точку, звездочку, "пробел" или что-то другое, т.е. то, что желаете получить в своем скине.
left и top - координаты размещения (не забываем про [BLOCK], если он использовался).
transparent - необязательный параметр использования прозрачного фона (как и всегда для такого параметра - 1 или 0, yes или no), по умолчанию - 1 (использовать прозрачный фон)
shift - необязательный параметр "сдвиг", отвечающий за расположение символов в строке относительно друг друга, по умолчанию - 0 (т.е. расстояние между символами задается их внешним видом в bmp-файле шрифта)
tictac - необязательный параметр, разрешает (yes) или запрещает (no) мигающий разделитель между часами и минутами, по умолчанию - no. Если планируется мигающий разделитель, то алфавит должен содержать символы 0123456789:* (естественно в соответствующих позициях bmp-файла вместо двоеточия и звездочки можно нарисовать что угодно!)

Например:
Код:

  [TIME]
  bmp=Elem\d1.bmp
  alphabet=0123456789:
  left=26
  top=0
  transparent=yes

А в этом примере будет мигающий разделитель, а цифры будут остоять друг от друга аж на 50 точек:
Код:

  [TIME]
  bmp=Elem\d1.bmp
  alphabet=0123456789:*
  tictac=yes
  shift=50
  left=26
  top=0
  transparent=yes


DUTS 04.10.2009 19:04

9. ЭЛЕМЕНТ [DATE]
 
Вложений: 1
Определяет начертание и расположение текущей даты (в формате ДД.ММ.ГГ)

Обязательными являются четыре параметра:
bmp - относительный путь и имя файла с моноширинной картинкой, где отрисованы цифры и разделители
alphabet - алфавит, используется для сопоставления изображениям в bmp-файле, обязательны цифры и точка, остальные символы в данном элементе не используются, но их число в алфавите дожно строго соответствовать числу изображений. Разумеется в позиции алфавита "точка" можно нарисовать в bmp-файле слэш, звездочку, "пробел" или что-то другое, т.е. то, что желаете получить в своем скине.
left и top - координаты размещения (не забываем про [BLOCK], если он использовался).
transparent - необязательный параметр использования прозрачного фона (как и всегда для такого параметра - 1 или 0, yes или no), по умолчанию - 1 (использовать прозрачный фон)
shift - необязательный параметр "сдвиг", отвечающий за расположение символов в строке относительно друг друга, по умолчанию - 0 (т.е. расстояние между символами задается их внешним видом в bmp-файле шрифта)

Например:
Код:

  [DATE]
  bmp=Elem\d1.bmp
  alphabet=0123456789:.
  left=106
  top=0
  transparent=yes

Обращаю внимание, что в прикрепленном графическом файле в позиции "точка" нарисован "слэш", именно он и используется в плагине NoGames.

DUTS 04.10.2009 19:42

10. ЭЛЕМЕНТ [TEXT]
 
Определяет отображаемую строку, её расположение, вид и значение

Может использоваться как для вывода предопределенной информации, так и переменной, с использованием служебных слов.

Обязательные параметры:
left и top - координаты позиции (с учетом [BLOCK], если он использовался)
value - выводимая преопределенная информация или расшифровка для значения name, если оно указано и совпадает с одним из служебных слов; в этом случае с помощью символа "|" можно разделить префикс и суффикс
color - цвет текста

Особенностью использования значения цвета является шестнадцатиричная его запись, при этом сам цвет кодируется следующим образом: $BBGGRR.
Например:
Код:

$0000FF - красный
$00FF00 - зеленый
$FF0000 - синий
$00FFFF - желтый
$FFFFFF - белый
$00000 - черный, в программе не допустим!!!

Значения конкретного цвета можно узнать в любом графическом редакторе.


Дополнительными (используемыми когда не устраивают значения "по умолчанию") параметрами являются:
align - способ выравнивания текста на экране (left, center или right); по умолчанию - left, если используется center или right, то необходимо задать еще параметр width.
width - ширина строки (в точках), используется для выравнивания строк по центру или по правому краю выводимой области (не обязательно экрана). по умолчанию совпадает с шириной экрана.
size - размер шрифта (фактически это множитель для шрифта, нарисованного в bmp-файле, т.е. size=2 сделает символы в 2 раза выше и 2 раза шире)
font - имя шрифта для отображения (определенное в [MAIN])
transparent - управление прозрачным фоном. Если предполагается использовать непрозрачный фон, то необходимо указать также следующие параметры:
color1 - цвет фона
color2 - цвет рамки вокруг текста
height - высота рамки. Ширина рамки задается папаметром width.
При использовании color1 и color2, вместо color можно использовать color3.
shift - необязательный параметр "сдвиг", отвечающий за расположение символов в строке относительно друг друга, по умолчанию - 0 (т.е. расстояние между символами задается их внешним видом в bmp-файле шрифта)


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

Код:

  [TEXT]
  color=$EEEEEE
  left=0
  top=10
  value=Кратко о программе
  font=system
  align=center

здесь относительно центра экрана (align=center, left=0, а width отсутствует, значит равен ширине экрана), на 10 точек ниже верхнего его края, светлосерым цветом ($EEEEEE) и шрифтом system (определенным в @index.ini) будет выведена строка "Кратко о программе".

Тот же пример, но буквы будут красными на синем фоне с белой рамкой (размеры которой равны 150 x 15 точек), а сама строка будет в центре этой рамки:
Код:

  [TEXT]
  color=$0000FF
  color1=$FF0000
  color2=$FFFFFF

  left=50
  top=10
  width=150
  height=15

  value=Кратко о программе
  font=system
  align=center

Если требуется вывести доступные переменные величины, то дополнительно нужно указать параметр:
name - имя строки или служебное слово. Данный параметр можно использовать и для "читабельности" текста скина, например name=подсказка или name=stroka_v_centre

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

Код:

  [TEXT]
  name=SYSINFO_NAME
  font=medfont
  color=$00D500
  left=90
  top=42
  value=ID:|зверек
  transparent=yes

В результате на экране появится строка типа "ID: GPS3.0 1-01 зверек"

[B]Список служебных слов: [[Ссылки могут видеть только зарегистрированные пользователи. ]]>

DUTS 04.10.2009 19:53

11. СЛУЖЕБНЫЕ СЛОВА (ИМЕНА ПЕРЕМЕННЫХ)
 
Используются в качестве значений параметра name элементов [TEXT] для вывода различной внутренней информации, предлагаемой оболочкой.

На данный момент доступны следующие значения (обязательно требуется сохранять регистр):

ABOUT_AUTOR - информация об авторе

SYSINFO_OS - тип используемой ОС
SYSINFO_BAT - остаточный заряд аккумулятора в процентах
SYSINFO_NAME - наименование аппарата. Часто не совпадает с шильдиком.
SYSINFO_USERAM - использованная память аппарата в процентах.
SYSINFO_FREERAM - не использовано памяти в байтах
SYSINFO_FULLRAM - всего памяти в байтах

SETUP_CURRENT_SKIN - текущий скин
SETUP_CURRENT_KEYPWR - текущий код кнопки Power
SETUP_CURRENT_PROGPWR- назначенная программа на кнопку Power
SETUP_LEVEL_POWER_OFF- нижний уровень заряда отключения питания
SETUP_CURRENT_LANG - текущий язык

OTHER_DAY_OF_WEEK - день недели
OTHER_TIME - время (ЧЧ:ММ)
OTHER_DATE - дата (типа "12 января 2009")

GPS_SPEED_KM - Скорость над поверхностью (SOG) в км/ч или "n/a"
GPS_SPEED_SYSKM - Скорость над поверхностью (SOG) в км/ч
GPS_SPEED_N - Скорость над поверхностью (SOG) в узлах
GPS_COURSE_H - Направление курса в градусах
GPS_COURSE_V - Магнитное склонение в градусах
GPS_TIME - Время фиксации местоположения UTC (hh:mm:ss) или "n/a"
GPS_DATE - Дата в формате dd/mm/yy или "n/a"
GPS_SYSTIME - Считанное время в формате hhmmss.ss
GPS_SYSDATE - Считанная дата в формате ddmmyy
GPS_LAT - Географическая широта местоположения, Север/Юг (N,S), или "n/a"
GPS_LONG - Географическая долгота местоположения, Запад/Восток (E/W), или "n/a"
GPS_ALT - высота над уровнем моря, в метрах
GPS_SYSLAT - Географическая широта местоположения, Север/Юг (N,S)
GPS_SYSLONG - Географическая долгота местоположения, Запад/Восток (E/W)
GPS_FULL - Считанная из GPS строка (для передачи в плагины)
GPS_PRESENT - Найден GPS (yes) или нет (no) по указанному в myLaunch.cfg порту (для передачи в плагины)
GPS_AUTOSET_TIME - разрешена или нет автосинхронизация системного времени
GPS_STATUS - Два состояния: "отключен" или "подключен" GPS
GPS_COMPORT - Имя COM-порта
GPS_PORTSPEED - скорость порта
GPS_COUNT - Полное число видимых спутников


P.S. список служебных слов постоянно пополняется по мере развития оболочки.

DUTS 04.10.2009 20:23

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

В этом случае кнопка появится в первой свободной позиции на экране в пользовательской области.


Текущее время: 13:16. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot

Время генерации страницы 0.04801 секунды с 10 запросами