Plugin:Clist modern/ru/Руководство по разработке скинов
Данная статья нуждается в переводе. |
Основные понятия
В основу скин-движка модуля положены следующие определения и понятия:
- Объект (Object) — элемент скина. Все объекты скина создаются при загрузке модуля. Объект описывает что и каким образом необходимо нарисовать на соответствующий запрос.
- Глиф (Glyph) — некоторый рисунок. В настоящий момент поддерживаются типы изображений: BMP, JPG и PNG (c прозрачностью). Размеры глифа определяются размерами рисунка. Изображение глифа загружается в память только при первой попытке нарисовать его и остается в памяти до выгрузки модуля или загрузки нового скина.
- Правило (Rule) — строка с запросом (условиями отбора) объекта.
- Запрос (Request) — требование нарисовать соответствующий объект, который удовлетворяет запрашиваемой строке в соответствии с правилами в определенном месте и с указанными размерами.
Алгоритм работы
Принцип работы следующий:
- При необходимости нарисовать некоторый объект окна, модуль формирует запрос. Запрос содержит координаты прямоугольника, в котором необходимо нарисовать объект. Но наиболее важным параметром является «строка запроса».
- Получив запрос, движок ищет в списке первое правило, под которое подойдет переданная строка запроса и выбирает соответствующий найденному правилу объект.
- Если найденный объект относится к типу Solid (сплошная заливка) то в ответ на запрос указанный рисунок заполняется соответствующим цветом и прозрачностью.
- Если же объект относится к типу Image (глиф), то прямоугольник заполняется трансформированным по размерам до размеров требуемого прямоугольника глифом.
Правила и строки запросов, принцип отбора объектов
Правило состоит из следующих частей:
- порядковый номер правила;
- имя соответствующего правилу объекта;
- набор параметров правила, разделённых запятыми.
Каждый параметр состоит из:
- имени параметра (имя первого параметра не указывается и всегда равно «Module»);
- условия («=» означает «соответствует», «^» означает «не соответствует»);
- проверяемого значения параметра.
Строка запроса имеет те же части что и правила, за исключением порядкового номера.
Строка запроса и правило считаются подходящими друг другу если:
- Все параметры правила есть в запросе (при этом запрос может содержать параметр, не упомянутый в правиле).
- Все значения параметров правила с условием «соответствует (=)» соответствуют значениям этих параметров в запросе, а также все значения параметров правила с условием «не соответствует (^)» не соответствуют значениям этих параметров в запросе.
Значение параметра правила может быть задано в виде маски содержащей символы: «*» — любое количество (в том числе и отсутствие) любых символов и «?» — один любой символ. Длина имён параметров и значений не может превышать 24 символа. Значения не могут содержать запятые (запятые заменяются точками). Имена параметров и их значения чувствительны к регистру букв.
Масштабирование (трансформация) глифов
Рассмотрим следующий пример: необходимо нарисовать глиф размером 70х70 в прямоугольнике размером 100х100.
Зададим ширину четырех полей для глифа: Left (лево), Top (верх), Right (право) и Bottom (низ). Эти поля делят рисунок глифа на 9 частей:
- 4 угла;
- 4 края;
- центр.
При трансформации:
- Угловые части глифа рисуются в прямоугольнике назначения «как есть», без изменений размеров.
- Краевые части рисуются масштабированными в соответствии с заданным режимом вдоль своего края. Перпендикулярный к краю размер не изменяется.
- Центр масштабируется по обоим направлениям.
После трансформации (режим StretchBoth)
Существует 4 режима трансформации:
- StretchBoth — растянуть по обоим направлениям;
- TileHorz — мозаика по горизонтали, растянуть по вертикали;
- TileVert — мозаика по вертикали, растянуть по горизонтали;
- TileBoth — мозаика по обоим направлениям.
Формат скина
Скин представляет собой совокупность файла описания скина (*.msf) и папки с необходимыми графическими ресурсами. Имя папки должно быть таким же, как и имя файла описания, без расширения. Внутри файла описателя ссылки на графические ресурсы идут без указания путей.
Файл описания имеет структуру полностью аналогичную ini-файлам. Все описания могут быть напрямую импортированы в базу. Формат файла следующий:
[имя_секции_базы] ; комментарий КлючСекции=#Значение КлючСекции2=#Значение
Вместо знака «#» подразумевается указание одного из типов значения ключа:
- «b» — байт;
- «w» — слово (два байта);
- «d» — двойное слово (четыре байта);
- «s» — произвольная текстовая строка.
Все данные об объектах скина хранятся в секции базы данных [ModernSkin] в ключах строкового типа. Поэтому все ключи в этой секции содержат «s» после «=», например:
$hotopengroup=sGlyph,Image,hotopengroup.png,StretchBoth,2,2,2,2,250 @0=s$window:Main,ID=Background
Пробелы внутри допускаются только для строковых параметров, таких как …,Name=First Name,….
Описание объектов
Итак, скин состоит из нескольких частей. Первая из них описывает объекты.
Объект описывается следующим образом:
$имя_объекта =sGlyph,тип_объекта,параметры,…
имя объекта — собственно имя объекта, используемое при ссылке из правил.
тип_объекта — один из типов: Image или Solid.
параметры,… — перечень параметров порядок которых определяется в зависимости от типа объекта:
для типа Solid:
$object_name =sGlyph,Solid,RedValue,GreenValue,BlueValue,AlphaValue
RedValue, GreenValue, BlueValue, AlphaValue — интенсивности соответственно красного, зеленого, синего и канала прозрачности.
для типа Image:
$object_name =sGlyph,Image,File_Name,Fit_Mode,Left,Top,Right,Bottom,AlphaValue
File_Name — имя файла рисунка с расширением, без пути, сам рисунок должен находится в одноименной с описателем папке.
Fit_Mode — один из режимов трансформации: StretchBoth, TileHorz, TileVert, TileBoth.
Left, Top, Right, Bottom — поля трансформации.
Примеры:
$window=sGlyph,Image,back.bmp,TileBoth,1,1,1,1,150 $closed_miranda_group=sGlyph,Solid,0,0,255,200
Описание правил
Вторая часть описывает правила. Правило описывается следующим образом:
@номер_правила=s$имя_объекта:значение_параметра_Module,имя_параметра=значение,имя_параметра^value,…
номер_правила — число. Номера правил должны начинаться с 0 и идти без пропусков.
Примеры:
@0=s$window:Main,ID=Background @1=s$closed_miranda_group:CL,ID=Row,Type=Group,Open^True,Name=Mir*a*
Соответственно объект $window (рисунок back.bmp) будет нарисован если строка запроса будет содержать первым параметром «Main» и значение параметра «ID» будет равно «Background».
Объект $closed_miranda_group (заливка синим с прозрачностью 200) будет нарисован если в запросе первый параметр будет «CL», «ID» равен «Row», «Type» равен «Group», параметр «Open» НЕ равен «True», параметр «Name» подходит под маску «Mir*a*» (например Miranda-IM).
Описание кнопок
Третья часть описывает кнопки. Buttons can be placed in any area of window (but prefer on margins, otherwise they will be covered by frames.
Buttons can be to types Push and Switch.
Push button description is:
#name=sPush,ServiceNameToCall,fromLeft,fromTop,fromRight,fromBottom,Flags,MinWindowWidth,MinWindowHeigh,HintText
Switch button description is:
#name=sSwitch,ServiceNameToCall,StateDBKey,ValueTypeandDefault,fromLeft,fromTop,fromRight,fromBottom,Flags,MinWindowWidth,MinWindowHeigh,HintText
ServiceNameToCall — name of service to be called on key pressure.
StateDBKey — name of key to be quoted in request to draw.
ValueTypeandDefault — type of parameter (first char (b, w, d or s)) and default value.
fromLeft,fromTop — position of left-top corner relativity to specified in flags.
fromRight,fromBottom — position of right-bottom corner relative to specified in flags.
Flags — relativity and behaviour flags is sequence of chars in next order: "ABCDE": A — relativity of left edge, B — top edge, C — right edge, D — from bottom (value is "R" — from right (for A and C), "B" — from bottom (for B and D), or "-" from left (A&C) and top (B&D)), E — can be "I" immediately call service as user press button, or "-" wait till he release it.
MinWindowWidth, MinWindowHeigh — minimal window size to show button (otherwise hide it).
HintText — tooltip text to show ("," (comma) is not allowed).
Then module is need to paint button it form request like (button was desribed like: #statusmenu=sPush,CList/ShowStatusMenu,24,4,40,20,-----,100,0,Show Status Menu)
MButton,ID=statusmenu,Hovered=1,Down=0
If switch button is specified it add value: Value=0 (database key value instead of ‘0’)
Modern paint request sequence
- Paint backgrounds via request
Main,ID=Background - Paint StatusBar, Frame captions backgrounds via
Main,ID=StatusBar
Main,ID=FrameCaption - Paint buttons via request
MButton,ID=buttonname,Hovered=x,Down=y,Value=z
MButton,ID=buttonname,Hovered=x,Down=y - Paint contact list in next sequence:
- a. Paint contact list background
CL,ID=Background - b. Paint row background (request forms according to row content)
CL,ID=Row,Type=Contact,Selected=True,… - c. Paint common selection if selected
CL,ID=Selection - d. Paint common hottracking if hot
CL,ID=HotTracking - e. Draw row content (avatar, text, icons)
- f. Paint row overlay (request forms according to row content)
CL,ID=Ovl,Type=Contact,Selected=True,… - Repeats b.—f. for each row
- a. Paint contact list background
- Paint scroll bar in next
- Paint scroll bar background
Main,ID=ScrollBar,Part=Back - Paint scroll bar items
Main,ID=ScrollBar,Part= UpLineButton
Main,ID=ScrollBar,Part= DownLineButton
Main,ID=ScrollBar,Part= Thumb
- Paint scroll bar background
Таблица имен и значений параметров, формируемых модулем
Параметр | Допустимые значения | Описание | |
---|---|---|---|
Module | Main | Основные объекты окна | |
ID | Background
StatusBar FrameCaption |
Фон окна
Фон статусной строки Фон заголовка фрейма | |
ID | ScrollBar | Полоса прокрутки | |
Part | Back
UpLineButton DownLineButton Thumb |
Элементы полосы прокрутки: фон, кнопки «вверх» и «вниз», ползунок | |
Module | CL | Объекты списка | |
ID | Row
Ovl |
Модуль формирует запрос на рисование каждой строки списка контактов с ключом ID=Row (оверлея с ID=Ovl) | |
Type | Group
Contact MetaContact SubContact Divider Info |
Тип строки списка контактов, группа, контакт, метаконтакт или субконтакт, разделитель отключенных или информационный контакт (например «все контакты» на настройке «Игнорировать») | |
GroupPos
|
First
First-Single Middle Last |
Положение группы/контакта в родительской группе. Для субконтакта: GroupPos — положение родительского метаконтата в группе, SubPos — положение субконтакта в метаконтакте | |
Open
Selected Hot Odd |
True
False |
Развёрнутость, выбраннось, подсвеченность, нечётность строки | |
Index
Indent |
Number | Номер строки в списке
Уровень вложенности (0 — в корне, 1 — в первой вложенной группе, и т. д.) | |
Status | OFFLINE
ONLINE AWAY DND NA OCCUPIED FREECHAT INVISIBLE IDLE |
Статус контакта | |
Protocol
Name GroupName |
Text | Имена протокола, текст строки и имя родительской группы
(запятая заменяется на точку) | |
ID | GreyAlternate
Selection HotTracking |
После запроса на рисование фона под строкой идет дополнительный запрос на отрисовку Нечетности, Выделения и Подсветки | |
Module | MButton | Модуль кнопок | |
ID | Text | Имя кнопки (без знака «#») | |
Down
Hovered |
0
1 |
Кнопка может быть нажата и подсвечена | |
Value | Text | Значение ключа базы, связанного со сработавшей кнопкой |
Example of dump of Crystal skin at real list
Time stamp | Request | Painted object |
---|---|---|
120817359: | Main,ID=FrameCaption | |
120817375: | Main,ID=StatusBar | |
120817375: | CL,ID=Background | |
120817375: | CL,ID=Row,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | $normalopengroup |
120817375: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | |
120817375: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | $normalcontact |
120817390: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | |
120817390: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | $normalcontact |
120817390: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | |
120817406: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | $normalopengroup |
120817406: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | |
120817406: | CL,ID=Row,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | $normalclosedgroup |
120817406: | CL,ID=Ovl,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | |
120817406: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | $normalopengroup |
120817406: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | |
120817406: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | $normalcontact |
120817421: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | |
120817421: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | $normalcontact |
120817421: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | |
120817421: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | $normalcontact |
120817421: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | |
120817437: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | $normalcontact |
120817437: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | |
120817437: | CL,ID=Row,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | $normalopengroup |
120817437: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | |
120817437: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | $normalcontact |
120817437: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | |
120817437: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | $normalcontact |
120817453: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | |
120817453: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120817453: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120817453: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120820296: | Main,ID=FrameCaption | |
120820296: | Main,ID=Background | $window |
120820343: | Main,ID=FrameCaption | |
120820343: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120820343: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120820343: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120820359: | Main,ID=Background | $window |
120820390: | Main,ID=FrameCaption | |
120820406: | Main,ID=StatusBar | |
120820406: | CL,ID=Background | |
120820406: | CL,ID=Row,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | $normalopengroup |
120820406: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | |
120820406: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | $normalcontact |
120820421: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | |
120820421: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | $normalcontact |
120820421: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | |
120820421: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | $normalopengroup |
120820421: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | |
120820421: | CL,ID=Row,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | $normalclosedgroup |
120820437: | CL,ID=Ovl,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | |
120820437: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | $normalopengroup |
120820437: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | |
120820437: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | $normalcontact |
120820437: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | |
120820437: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | $normalcontact |
120820453: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | |
120820453: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | $normalcontact |
120820453: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | |
120820453: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | $normalcontact |
120820453: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | |
120820453: | CL,ID=Row,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | $normalopengroup |
120820468: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | |
120820468: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | $normalcontact |
120820468: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | |
120820468: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | $normalcontact |
120820468: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | |
120820468: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120820484: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120820484: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120820500: | Main,ID=FrameCaption | |
120820500: | Main,ID=Background | $window |
120820546: | Main,ID=FrameCaption | |
120820546: | Main,ID=StatusBar | |
120820546: | CL,ID=Background | |
120820562: | CL,ID=Row,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | $normalopengroup |
120820562: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | |
120820562: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | $normalcontact |
120820562: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | |
120820562: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | $normalcontact |
120820562: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | |
120820562: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | $normalopengroup |
120820578: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | |
120820578: | CL,ID=Row,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | $normalclosedgroup |
120820578: | CL,ID=Ovl,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | |
120820578: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | $normalopengroup |
120820578: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | |
120820578: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | $normalcontact |
120820593: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | |
120820593: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | $normalcontact |
120820593: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | |
120820593: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | $normalcontact |
120820593: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | |
120820593: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | $normalcontact |
120820609: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | |
120820609: | CL,ID=Row,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | $normalopengroup |
120820609: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | |
120820609: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | $normalcontact |
120820625: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | |
120820625: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | $normalcontact |
120820625: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | |
120820625: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120820625: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120820625: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120820640: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120820640: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120820640: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120820640: | Main,ID=StatusBar | |
120820640: | CL,ID=Background | |
120820640: | CL,ID=Row,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | $normalopengroup |
120820656: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | |
120820656: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | $normalcontact |
120820656: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | |
120820656: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | $normalcontact |
120820656: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | |
120820656: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | $normalopengroup |
120820671: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | |
120820671: | CL,ID=Row,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | $normalclosedgroup |
120820671: | CL,ID=Ovl,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | |
120820671: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | $normalopengroup |
120820671: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | |
120820671: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | $normalcontact |
120820687: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | |
120820687: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | $normalcontact |
120820687: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | |
120820703: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | $normalcontact |
120820703: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | |
120820703: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | $normalcontact |
120820703: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | |
120820703: | CL,ID=Row,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | $normalopengroup |
120820703: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | |
120820718: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | $normalcontact |
120820718: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | |
120820718: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | $normalcontact |
120820718: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | |
120820718: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120820734: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120820734: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |
120823812: | Main,ID=FrameCaption | |
120823828: | Main,ID=StatusBar | |
120823843: | CL,ID=Background | |
120823843: | CL,ID=Row,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | $normalopengroup |
120823843: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=0,Index=0,Name=Friends | |
120823843: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | $normalcontact |
120823843: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=1,Name=Олег,Group=Friends | |
120823843: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | $normalcontact |
120823859: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=2,Name=Юля,Group=Friends | |
120823859: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | $normalopengroup |
120823859: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=0,Index=3,Name=MIRANDA | |
120823859: | CL,ID=Row,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | $normalclosedgroup |
120823875: | CL,ID=Ovl,Type=Group,Open=False,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=1,Index=4,Name=Bugs reporters,Group=Friends | |
120823875: | CL,ID=Row,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | $normalopengroup |
120823875: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Mid,Selected=False,Hot=False,Odd=True,Indent=1,Index=5,Name=Developers,Group=Friends | |
120823875: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | $normalcontact |
120823890: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=NA,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=False,Indent=2,Index=6,Name=Joe,Group=Bugs reporters | |
120823890: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | $normalcontact |
120823890: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=2,Index=10,Name=Bio,Group=Bugs reporters | |
120823890: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | $normalcontact |
120823890: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=False,GroupPos=Mid,Selected=False,Hot=False,Odd=False,Indent=1,Index=11,Name=LexSys,Group=Friends | |
120823890: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | $normalcontact |
120823906: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=True,Indent=1,Index=12,Name=NullBie,Group=Friends | |
120823906: | CL,ID=Row,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | $normalopengroup |
120823906: | CL,ID=Ovl,Type=Group,Open=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=0,Index=13,Name=>Developers | |
120823906: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | $normalcontact |
120823906: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=First,Selected=False,Hot=False,Odd=True,Indent=1,Index=14,Name=Артем,Group=Friends | |
120823906: | CL,ID=Row,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | $normalcontact |
120823906: | CL,ID=Ovl,Type=Contact,Protocol=ICQ,Status=ONLINE,HasAvatar=True,GroupPos=Last,Selected=False,Hot=False,Odd=False,Indent=1,Index=15,Name=Angi,Group=Friends | |
120823921: | MButton,ID=close,Down=0,Focused=0,Hovered=0 | $BTNclosenorm |
120823921: | MButton,ID=minimize,Down=0,Focused=0,Hovered=0 | $BTNminnorm |
120823921: | MButton,ID=hideoffline,Down=0,Focused=0,Hovered=0,Value=1 | $BTNstatusDn |