Difference between revisions of "Box lib tree list/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m (fix file include in example code)
 
(2 intermediate revisions by one other user not shown)
Line 9: Line 9:
 
*'''tl_info_redo''' - Повтор отмененных действий. Обратная функция по отношению к tl_info_undo.
 
*'''tl_info_redo''' - Повтор отмененных действий. Обратная функция по отношению к tl_info_undo.
 
*'''tl_node_add''' - Добавляет узел, в позицию указанную курсором. Пример добавления узла:
 
*'''tl_node_add''' - Добавляет узел, в позицию указанную курсором. Пример добавления узла:
<syntaxhighlight lang="asm">  push dword tree1
+
<syntaxhighlight lang="asm">  stdcall dword[tl_node_add], tree1, 0x10002, data_buffer</syntaxhighlight>
  push dword 0x10002
 
  push dword data_buffer
 
  call dword[tl_node_add]</syntaxhighlight>
 
 
где: ''tree1'' - структура tree_list; ''0x10002'' - параметры узла (старшие байты ''0x0001'' - индекс иконки, отображаемой возле узла; меньший байт ''0x02'' - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел.
 
где: ''tree1'' - структура tree_list; ''0x10002'' - параметры узла (старшие байты ''0x0001'' - индекс иконки, отображаемой возле узла; меньший байт ''0x02'' - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел.
 
*'''tl_node_set_data''' - устанавливает новые данные (пользовательские и подпись) в узел под курсором.
 
*'''tl_node_set_data''' - устанавливает новые данные (пользовательские и подпись) в узел под курсором.
Line 33: Line 30:
 
где: tree1 - структура tree_list
 
где: tree1 - структура tree_list
 
*'''tl_node_poi_get_info''' - Берет внутренний указатель на структуру описывающую узел. Пример использования функции:
 
*'''tl_node_poi_get_info''' - Берет внутренний указатель на структуру описывающую узел. Пример использования функции:
<syntaxhighlight lang="asm">push dword tree1
+
<syntaxhighlight lang="asm">stdcall dword[tl_node_poi_get_info], tree1, 0</syntaxhighlight>
push dword 0
+
где: ''tree1'' - структура tree_list; ''0'' - позиция узла, с которого берется указатель; ''eax'' - указатель на структуру описывающую узел.
call dword[tl_node_poi_get_info]
 
pop dword esi</syntaxhighlight>
 
где: ''tree1'' - структура tree_list; ''0'' - позиция узла, с которого берется указатель; ''esi'' - указатель на структуру описывающую узел.
 
 
*'''tl_node_poi_get_next_info''' - берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов.
 
*'''tl_node_poi_get_next_info''' - берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов.
 
*'''tl_node_poi_get_data''' - берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.
 
*'''tl_node_poi_get_data''' - берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.
Line 46: Line 40:
 
   node_data rb MEM_SIZE
 
   node_data rb MEM_SIZE
 
.........
 
.........
   push dword tree1
+
   stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE</syntaxhighlight>
  push dword 0
 
  push dword node_data
 
  push dword MEM_SIZE
 
  call dword[tl_save_mem]
 
  pop eax</syntaxhighlight>
 
 
где: ''tree1'' - структура tree_list; ''0'' - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок сохранения.
 
где: ''tree1'' - структура tree_list; ''0'' - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок сохранения.
 
*'''tl_load_mem''' - Загружает информацию об узлах элемента из памяти. Пример использования функции:
 
*'''tl_load_mem''' - Загружает информацию об узлах элемента из памяти. Пример использования функции:
Line 57: Line 46:
 
   node_data rb MEM_SIZE
 
   node_data rb MEM_SIZE
 
.........
 
.........
   push dword tree1
+
   stdcall dword[tl_load_mem], tree1, 0, node_data, MEM_SIZE</syntaxhighlight>
  push dword 0
 
  push dword node_data
 
  push dword MEM_SIZE
 
  call dword[tl_load_mem]
 
  pop eax</syntaxhighlight>
 
 
где: ''tree1'' - структура tree_list; 0 - индекс считываемого элемента; ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок считывания.
 
где: ''tree1'' - структура tree_list; 0 - индекс считываемого элемента; ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок считывания.
 
*'''tl_get_mem_size''' - Вычисляет размер блока памяти (в который были раньше сохранены элементы). Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных.
 
*'''tl_get_mem_size''' - Вычисляет размер блока памяти (в который были раньше сохранены элементы). Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных.
Line 142: Line 126:
 
include 'svn/programs/develop/libraries/box_lib/trunk/box_lib.mac'
 
include 'svn/programs/develop/libraries/box_lib/trunk/box_lib.mac'
 
include 'svn/programs/develop/libraries/box_lib/load_lib.mac'
 
include 'svn/programs/develop/libraries/box_lib/load_lib.mac'
include 'mem.inc' ;функции mem.Alloc,mem.Free,mem.ReAlloc
+
include 'svn/programs/dll.inc' ;функции mem.Alloc,mem.Free,mem.ReAlloc
  
 
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,0
 
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,0
Line 173: Line 157:
 
mcall 68,11
 
mcall 68,11
  
stdcall dword[tl_data_init], dword tree1
+
stdcall dword[tl_data_init], tree1
  
 
; читаем *.bmp файл с системными иконками
 
; читаем *.bmp файл с системными иконками
Line 183: Line 167:
  
 
mov [run_file_70.Buffer], eax
 
mov [run_file_70.Buffer], eax
mov eax,70 ;load icon file
 
 
mov [run_file_70.Function], 0
 
mov [run_file_70.Function], 0
 
mov [run_file_70.Position], 54
 
mov [run_file_70.Position], 54
Line 190: Line 173:
 
mov byte[run_file_70+20], 0
 
mov byte[run_file_70+20], 0
 
mov [run_file_70.FileName], file_name
 
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
+
mcall 70,run_file_70
int 0x40
 
 
cmp ebx,0
 
cmp ebx,0
 
jl @f
 
jl @f
Line 205: Line 187:
  
 
mov [run_file_70.Buffer], eax
 
mov [run_file_70.Buffer], eax
mov eax,70 ;load icon file
 
 
;mov [run_file_70.Function], 0
 
;mov [run_file_70.Function], 0
 
;mov [run_file_70.Position], 54
 
;mov [run_file_70.Position], 54
Line 212: Line 193:
 
mov byte[run_file_70+20], 0
 
mov byte[run_file_70+20], 0
 
mov [run_file_70.FileName], file_name
 
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
+
mcall 70,run_file_70
int 0x40
 
 
cmp ebx,0
 
cmp ebx,0
 
jl @f
 
jl @f
Line 222: Line 202:
 
align 4
 
align 4
 
red_win:
 
red_win:
  mcall 12,1
+
mcall 12,1
  
  xor eax,eax
+
xor eax,eax
  mov ebx,30*65536+320
+
mov ebx,30*65536+320
  mov ecx,25*65536+255
+
mov ecx,25*65536+255
  mov edx,[sc.work]
+
mov edx,[sc.work]
  or  edx,0x33000000
+
or  edx,0x33000000
  mov edi,hed
+
mov edi,hed
  mcall
+
mcall
  
  mov eax,8 ;кнопка
+
mov eax,8 ;кнопка
  mov ebx,215*65536+85
+
mov ebx,215*65536+85
  mov ecx,5*65536+15
+
mov ecx,5*65536+15
  mov edx,2
+
mov edx,2
  mov esi,[sc.work_button]
+
mov esi,[sc.work_button]
  int 0x40
+
int 0x40
  
  mov ebx,215*65536+60
+
mov ebx,215*65536+60
  mov ecx,25*65536+15
+
mov ecx,25*65536+15
  mov edx,3
+
mov edx,3
 
;  mov esi,0xffd000
 
;  mov esi,0xffd000
  int 0x40
+
int 0x40
  
  mov ebx,215*65536+85
+
mov ebx,215*65536+85
  mov ecx,45*65536+15
+
mov ecx,45*65536+15
  mov edx,4
+
mov edx,4
  int 0x40
+
int 0x40
  
  mov ecx,65*65536+15
+
mov ecx,65*65536+15
  mov edx,5
+
mov edx,5
  int 0x40
+
int 0x40
  
  mov ecx,85*65536+15
+
mov ecx,85*65536+15
  mov edx,6
+
mov edx,6
  int 0x40
+
int 0x40
  
  mov ecx,105*65536+15
+
mov ecx,105*65536+15
  mov edx,7
+
mov edx,7
  int 0x40
+
int 0x40
  
  mov ecx,125*65536+15
+
mov ecx,125*65536+15
  mov edx,8
+
mov edx,8
  int 0x40
+
int 0x40
  
  mov ecx,145*65536+15
+
mov ecx,145*65536+15
  mov edx,9
+
mov edx,9
  int 0x40
+
int 0x40
  
  mov ecx,165*65536+15
+
mov ecx,165*65536+15
  mov edx,10
+
mov edx,10
  int 0x40
+
int 0x40
  
  mov ecx,185*65536+15
+
mov ecx,185*65536+15
  mov edx,11
+
mov edx,11
  int 0x40
+
int 0x40
  
  mov ecx,205*65536+15
+
mov ecx,205*65536+15
  mov edx,12
+
mov edx,12
  int 0x40
+
int 0x40
  
  mov ebx,280*65536+20
+
mov ebx,280*65536+20
  mov ecx,25*65536+15
+
mov ecx,25*65536+15
  mov edx,100
+
mov edx,100
  mov esi,0xd0d0
+
mov esi,0xd0d0
  int 0x40
+
int 0x40
  
  mov eax,4 ;рисование текста
+
mov eax,4 ;рисование текста
  mov ebx,10*65536+25
+
mov ebx,10*65536+25
  mov ecx,[sc.work_button_text]
+
mov ecx,[sc.work_button_text]
  or  ecx,0x80000000
+
or  ecx,0x80000000
  mov edx,dword[node_data]
+
mov edx,dword[node_data]
  int 0x40
+
int 0x40
  
  mov eax,4 ;рисование текста
+
mov eax,4 ;рисование текста
  mov ebx,220*65536+10
+
mov ebx,220*65536+10
  mov edx,txt10
+
mov edx,txt10
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+30
+
mov ebx,220*65536+30
  mov edx,txt11
+
mov edx,txt11
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+50
+
mov ebx,220*65536+50
  mov edx,txt12
+
mov edx,txt12
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+70
+
mov ebx,220*65536+70
  mov edx,txt13
+
mov edx,txt13
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+90
+
mov ebx,220*65536+90
  mov edx,txt14
+
mov edx,txt14
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+110
+
mov ebx,220*65536+110
  mov edx,txt15
+
mov edx,txt15
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+130
+
mov ebx,220*65536+130
  mov edx,txt16
+
mov edx,txt16
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+150
+
mov ebx,220*65536+150
  mov edx,txt17
+
mov edx,txt17
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+170
+
mov ebx,220*65536+170
  mov edx,txt18
+
mov edx,txt18
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+190
+
mov ebx,220*65536+190
  mov edx,txt19
+
mov edx,txt19
  int 0x40
+
int 0x40
  
  mov ebx,220*65536+210
+
mov ebx,220*65536+210
  mov edx,txt20
+
mov edx,txt20
  int 0x40
+
int 0x40
  
  stdcall dword[tl_draw], dword tree1
+
stdcall dword[tl_draw], tree1
  stdcall [edit_box_draw], dword edit1
+
stdcall [edit_box_draw], dword edit1
  
  mov dword[wScr.all_redraw],1
+
mov dword[wScr.all_redraw],1
  stdcall [scrollbar_ver_draw], dword wScr
+
stdcall [scrollbar_ver_draw], dword wScr
  
  mcall 12,2
+
mcall 12,2
  
 
align 4
 
align 4
Line 365: Line 345:
 
key:
 
key:
 
mcall 2
 
mcall 2
stdcall [tl_key], dword tree1
+
stdcall [tl_key], tree1
 
stdcall [edit_box_key], dword edit1
 
stdcall [edit_box_key], dword edit1
 
jmp still
 
jmp still
Line 371: Line 351:
 
align 4
 
align 4
 
button:
 
button:
  mcall 17 ;получить код нажатой кнопки
+
mcall 17 ;получить код нажатой кнопки
  cmp ah,2
+
cmp ah,2
  jz  but_clear
+
jz  but_clear
  cmp ah,3
+
cmp ah,3
  jz  but_add_node
+
jz  but_add_node
  cmp ah,4
+
cmp ah,4
  jz  but_undo
+
jz  but_undo
  cmp ah,5
+
cmp ah,5
</