From df16d45d013f36e0d96fdc56a10ecab82428f2d2 Mon Sep 17 00:00:00 2001 From: IgorA Date: Sun, 10 Jan 2010 20:10:08 +0000 Subject: [PATCH] updated documentation 'box_lib.obj' git-svn-id: svn://kolibrios.org@1374 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/trunk/doc/box_lib.htm | 54 +--- .../trunk/doc/checkbox/info_checkbox.htm | 62 +++++ .../trunk/doc/editbox/info_editbox.htm | 54 +--- .../box_lib/trunk/doc/editbox/window_fasm.png | Bin 0 -> 5325 bytes .../libraries/box_lib/trunk/doc/style.css | 84 ++++++ .../box_lib/trunk/doc/tree_list/info_size.png | Bin 0 -> 9971 bytes .../trunk/doc/tree_list/info_treelist.htm | 240 ++++++++++++++++++ .../trunk/doc/tree_list/window_tree_list.png | Bin 0 -> 9952 bytes 8 files changed, 410 insertions(+), 84 deletions(-) create mode 100644 programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm create mode 100644 programs/develop/libraries/box_lib/trunk/doc/editbox/window_fasm.png create mode 100644 programs/develop/libraries/box_lib/trunk/doc/style.css create mode 100644 programs/develop/libraries/box_lib/trunk/doc/tree_list/info_size.png create mode 100644 programs/develop/libraries/box_lib/trunk/doc/tree_list/info_treelist.htm create mode 100644 programs/develop/libraries/box_lib/trunk/doc/tree_list/window_tree_list.png diff --git a/programs/develop/libraries/box_lib/trunk/doc/box_lib.htm b/programs/develop/libraries/box_lib/trunk/doc/box_lib.htm index de6c621a54..8cd3e1df51 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/box_lib.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/box_lib.htm @@ -2,51 +2,13 @@ библиотека boxlib - +

Оглавление

Введение

Элементы библиотеки

+

Авторский состав

Введение

Библиотека box_lib.obj содержит разные элементы управления, которые можно @@ -56,7 +18,7 @@ table { font-size: 15px; }

Элементы библиотеки

+

Авторский состав

+

Алексей Теплов aka <Lrz>

+

Марат Закиянов aka Mario79, aka Mario

+

Евтихов Максим aka Maxxxx32

+

Евгений Гречников aka Diamond

+

hidnplayr

+

Игорь Афанасьев aka IgorA

+
-

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

+

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

\ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm b/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm new file mode 100644 index 0000000000..822c35719d --- /dev/null +++ b/programs/develop/libraries/box_lib/trunk/doc/checkbox/info_checkbox.htm @@ -0,0 +1,62 @@ + + +элемент Check Box + + + + +

На главную ↑

+

Оглавление

+

Введение

+

Функции

+ +

Структура checkbox

+

Стили элемента

+ +

Введение

+

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

+ +

Функции

+ +

check_box_draw

+

Эта функция должна вызыватся при вводе информации с клавиатуры.

+ +

check_box_mouse

+

Эта функция должна вызыватся при вводе информации с мыши.

+ +

version_ch

+

Версия элемента

+ +

Структура checkbox

+
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
+{        ;структура параметров для чек бокса
+.left:    dw left    ;+0
+.top:     dw top     ;+2
+.ch_text_margin: dd ch_text_margin ;+4
+.ch_size: dd ch_size ;+8
+.color:   dd color   ;+12
+.border_color: dd border_color ;цвет рамки
+.text_color:   dd text_color   ;цвет надписи
+.text:         dd text         ;адрес в коде программы где расположен текст
+.ch_text_length: dd ch_text_length ;длинна строки с символами
+.flags: dd flags+0   ;флаги
+}
+

left - отступ слева (положение по x).

+

top - отступ сверху (положение по y).

+

ch_text_margin - расстояние от прямоугольника чек бокса до надписи.

+

ch_size - размер квадрата чек бокса, как стандартное значение было принято 12.

+

color - цвет внутри чекбокса.

+ +

Стили элемента

+ +

ch_flag_en

+

Флажок выбран.

+ +
+

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

+ + \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm b/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm index d47258478d..b2effaee52 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/editbox/info_editbox.htm @@ -2,48 +2,10 @@ элемент Edit Box - + +

На главную ↑

Оглавление

Введение

Функции

@@ -57,6 +19,8 @@ table { font-size: 15px; }

Введение

Текстовое поле, используется при вводе текстовой/числовой информации.

+

+

Рис. 1. Окно программы fasm с 3-мя элементами EditBox

Функции

@@ -94,7 +58,13 @@ table { font-size: 15px; } .shift_old dd 0 }

width - ширина элемента.

-

left - отступ слева.

+

left - отступ слева (положение по x).

+

top - отступ сверху (положение по y).

+

color - цвет фона.

+

shift_color - цвет выделения при удерживании [Shift] или мышкой.

+

focus_border_color - цвет рамки когда поле в фокусе.

+

blur_border_color - цвет рамки когда поле не в фокусе.

+

text_color - цвет текста.

Стили элемента

@@ -104,6 +74,6 @@ table { font-size: 15px; }

Текстовое поле в фокусе.


-

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

+

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

\ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/editbox/window_fasm.png b/programs/develop/libraries/box_lib/trunk/doc/editbox/window_fasm.png new file mode 100644 index 0000000000000000000000000000000000000000..7df06d5ef53c8c2a4640cebe742e156d398cafd4 GIT binary patch literal 5325 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 K>6G1h^x{9yZTAlV literal 0 HcmV?d00001 diff --git a/programs/develop/libraries/box_lib/trunk/doc/style.css b/programs/develop/libraries/box_lib/trunk/doc/style.css new file mode 100644 index 0000000000..83ea644faf --- /dev/null +++ b/programs/develop/libraries/box_lib/trunk/doc/style.css @@ -0,0 +1,84 @@ +body +{ + font-size: 15px; + font-family: "Bookman Old Style"; + color: black; + text-align: justify; +} +h1 { + color: white; + background-color: 808080; + font-size: 25px; + text-align: center; +} +h2 { color: green; font-size: 21px; } +h3 { color: green; font-size: 19px; } +h4 { color: #803f00; font-size: 17px; } +i { color: #0099cc; } +b { color: #0099cc; } +p { + text-indent: 2em; + margin-top: 3px; + margin-bottom: 2px; + margin-left: 0px; + margin-right: 0px; +} +ol, ul, dl{ + margin-top: 3px; + margin-bottom: 2px; +} +pre{ + font-family: "Courier New"; + font-size: 15px; + padding-left: 10px; + padding-top: 5px; + padding-bottom: 5px; + color: #004000; + background: #ffd0ff; +} +pre font.f0 { color: #ffff00; } +pre font.f1 { color: #ffffff; } +pre font.f2 { color: #00ff00; } +pre font.f3 { color: #00ffff; } +pre font.f4 { color: #808080; } +pre font.f5 { color: #ff40ff; } +pre font.f6 { color: #4080ff; } +pre font.f7 { color: #ff0000; } +pre font.f8 { color: #ffcc00; } +pre font.f9 { color: #00ccff; } + +caption +{ + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + font-weight: bold; + text-align: center; +} +table +{ + font-size: 10px; + border-collapse: collapse; + border: #000000 1px solid; + background-color: #c0e7fb; +} +table td +{ + border: none; + text-align: center; +} +table th +{ + border: none; + padding-right: 10px; + padding-left: 10px; + color: #ffffff; + background-color: #0033ff; +} +table pre +{ + text-align: left; +} +td hr{ + color: black; +} \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_size.png b/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_size.png new file mode 100644 index 0000000000000000000000000000000000000000..b765c71383c5e5a1280261bd3928d2d34fd3c480 GIT binary patch literal 9971 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

D3l1OhmcO(DHoa=zzzSy()E(KG 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 literal 0 HcmV?d00001 diff --git a/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_treelist.htm b/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_treelist.htm new file mode 100644 index 0000000000..3069a6573b --- /dev/null +++ b/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_treelist.htm @@ -0,0 +1,240 @@ + + +элемент Tree List + + + + +

На главную ↑

+

Оглавление

+

Введение

+

Функции

+ +

Структура tree_list

+

Стили элемента

+ +

Введение

+

Внешний вид элемента управления TreeList:

+

+

Рис. 1. Окно программы с элементом TreeList

+ +

Функции

+ +

tl_data_init

+

Конструктор элемента, нужно вызывать перед использованием элемента для выделения памяти и других настроек.

+

tl_data_clear

+

Деструктор элемента, чистит память по указателям: data_info, data_nodes, data_img и data_img_sys. Если в программе используется несколько элементов с одинаковыми иконками, то указатели data_img и data_img_sys нужно приравнять к 0 в других элементах, так что-бы при вызове деструкторов не было повторного удаления одних и тех же иконок.

+ +

tl_info_clear

+

Очистка списка от всех узлов. Это действие нельзя отменить функцией tl_info_undo.

+ +

tl_key

+

Функция которую нужно вызывать при нажатии на клавиатуру. + Кнопки, которые не доступны если есть стиль tl_key_no_edit: [Enter], [Delete], [], []. + Всегда доступны: [], [], [Page Up], [Page Dn], [Space]. + Функция проверяет включен ли режим scan кодов, и в случае необходимости сама преобразует коды.

+ +

tl_mouse

+

Функция для событий от мыши.

+ +

tl_draw

+

Полная перерисовка окна элемента.

+ +

tl_info_undo

+

Отменяет добавление узлов. Действует только на весь узел целиком, не учитывая изменения внутри узлов. Т. е. нельзя отменить действия выполненные например функциями: tl_node_set_data, tl_node_lev_inc и им подобным.

+ +

tl_info_redo

+

Повтор отмененных действий. Обратная функция по отношению к tl_info_undo.

+ +

tl_node_add

+

Добавляет узел, в позицию указанную курсором. Пример добавления узла:

+
  push dword tree1
+  push dword 0x10002
+  push dword data_buffer
+  call dword[tl_node_add]
+

где: tree1 - структура tree_list; + 0x10002 - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел.

+ +

tl_node_set_data

+

Устанавливает новые данные (пользовательские и подпись) в узел под курсором.

+ +

tl_node_get_data

+

Берет указатель на данные (пользовательские и подпись) из узла под курсором.

+ +

tl_node_delete

+

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

+ +

tl_cur_beg

+

Ставит курсор в начало списка, перематывает скроллинг если нужно.

+ +

tl_cur_next

+

Переносит курсор на одну позицию ниже.

+ +

tl_cur_perv

+

Переносит курсор на одну позицию выше.

+ +

tl_node_close_open

+

Открывает или закрывает родительский узел. Если у узла нет дочерних элементов, + то ничего не делает. Автоматически перерисовывает окно если состояние узла изменилось.

+ +

tl_node_lev_inc

+

Добавить уровень узла под курсором. Делает узел дочерним.

+ +

tl_node_lev_dec

+

Уменьшает уровень узла под курсором. Делает узел родительским.

+ +

tl_node_move_up

+

Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:

+
  push dword tree1
+  call dword[tl_node_move_up] ;переместить узел
+

где: tree1 - структура tree_list

+ +

tl_node_move_down

+

Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:

+
  push dword tree1
+  call dword[tl_node_move_down] ;переместить узел
+

где: tree1 - структура tree_list

+ +

tl_node_poi_get_info

+

Берет внутренний указатель на структуру описывающую узел.

+

tl_node_poi_get_next_info

+

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

+

tl_node_poi_get_data

+

Берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.

+ +

Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к даным элемента в "фоновом режиме".

+ +

tl_save_mem

+

Сохраняет информацию об узлах элемента в память. Пример использования функции:

+
  MEM_SIZE equ 5000
+  node_data rb MEM_SIZE
+.........
+  push dword tree1
+  push dword 0
+  push dword node_data
+  push dword MEM_SIZE
+  call dword[tl_save_mem]
+  pop eax
+

где: tree1 - структура tree_list; + 0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); + node_data - указатель на блок памяти; + MEM_SIZE - размер блока памяти для сохранения. +В регистр eax пишется значение 0 или записываются коды ошибок сохранения.

+ +

tl_load_mem

+

Загружает информацию об узлах элемента из памяти. Пример использования функции:

+
  MEM_SIZE equ 5000
+  node_data rb MEM_SIZE
+.........
+  push dword tree1
+  push dword 0
+  push dword node_data
+  push dword MEM_SIZE
+  call dword[tl_load_mem]
+  pop eax
+

где: tree1 - структура tree_list; + 0 - индекс считываемого элемента; + node_data - указатель на блок памяти; + MEM_SIZE - размер блока памяти для сохранения. +В регистр eax пишется значение 0 или записываются коды ошибок считывания.

+ +

tl_get_mem_size

+

Вычисляет размер блока памяти (в который были раньше сохранены элементы). + Эту функцию можно использовать перед сохранением на диск, для получения точного + размера сохраняемых данных.

+ +

version_tree_list

+

Версия элемента

+ +

Структура tree_list

+
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
+    col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
+    info_capt_len,el_focus, p_scrol,on_press {
+  .data_info  dd 0
+  .info_size  dw info_size
+  .info_max_count dd info_max_count
+  .style      dd style
+  .data_nodes dd 0
+  .data_img   dd 0
+  .img_cx     dw img_cx
+  .img_cy     dw img_cy
+  .data_img_sys dd 0
+  .ch_tim     dd 0
+  .ls_tim     dd 0
+  .tim_undo   dd 0
+  .cur_pos    dd 0
+  .col_bkg    dd col_bkg
+  .col_zag    dd col_zag
+  .col_txt    dd col_txt
+  .box_left   dd box_l
+  .box_top    dd box_t
+  .box_width  dd box_w
+  .box_height dd box_h
+  .capt_cy    dw capt_cy
+  .info_capt_offs dw info_capt_offs
+  .info_capt_len  dw info_capt_len
+  .el_focus    dd el_focus
+  .p_scrol     dd p_scrol
+  rb 4
+  .on_activate dd 0
+  .on_press    dd on_press
+}
+

info_size - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через info_capt_offs и info_capt_len см. рис. 2) а остальная часть будет использована как подпись узла.

+

info_max_count - максимальное количество узлов, которые можно добавить в элемент.

+

style - стили элемента.

+

data_nodes - указатель на внутренние структуры узлов (TreeList).

+

data_img - указатель на изображения с иконками узлов.

+

data_img_sys - указатель на системные изображения (курсор, плюсики, линии, ... все кроме иконок узлов).

+

capt_cy - высота строки для подписи вверху элемента, если меньше 9 подпись не выводится.

+

info_capt_len - длинна текста для подписи. Если равно 0, то длинна считается так: info_size - info_capt_offs.

+

p_scrol - указатель на структуру скроллинга, связанного с данным элементом.

+

on_press - указатель на функцию, которая будет вызвана при нажитии [Enter]. Если указатель равен 0 то ничего не будет вызыватся.

+ +

+

Рис. 2. Параметры info_size, info_capt_offs и info_capt_len в узле

+ +

Пример создания структуры:

+
tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\
+    0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\
+    el_focus, wScr,fun_on_enter
+ +

Стили элемента

+

tl_key_no_edit

+

Элемент нельзя редактировать на клавиатуре (изменять уровни, удалять). Ставьте этот стиль если нужно создать элемент только для просмотра данных.

+

tl_draw_par_line

+

Рисовать линии к родительскому узлу.

+

tl_list_box_mode

+

Стиль не отображает уровни (как в ListBox все узлы одного уровня).

+ +
+

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

+ + \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/doc/tree_list/window_tree_list.png b/programs/develop/libraries/box_lib/trunk/doc/tree_list/window_tree_list.png new file mode 100644 index 0000000000000000000000000000000000000000..7c730fbf9891487c3ba4815f714983ee63be85e2 GIT binary patch literal 9952 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 literal 0 HcmV?d00001