add new functions: tl_node_move_up, tl_node_move_down. Small fix in redraw caption.
git-svn-id: svn://kolibrios.org@1285 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f38c7eea18
commit
48f7d9c554
@ -80,10 +80,12 @@ use_menu_bar
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_file_browser
|
||||
|
||||
;--------------------------------------------------
|
||||
;align 16
|
||||
init:
|
||||
ret
|
||||
;tree list
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_tree_list
|
||||
|
||||
;;;;;;;;;;;
|
||||
;;Data
|
||||
@ -92,11 +94,9 @@ ret
|
||||
;mouse_flag dd 0x0
|
||||
|
||||
;--------------------------------------------------
|
||||
;tree list
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_tree_list
|
||||
|
||||
;align 16
|
||||
init:
|
||||
ret
|
||||
|
||||
|
||||
align 16
|
||||
@ -157,6 +157,8 @@ EXPORTS:
|
||||
dd sz_tl_node_close_open,tl_node_close_open
|
||||
dd sz_tl_node_lev_inc,tl_node_lev_inc
|
||||
dd sz_tl_node_lev_dec,tl_node_lev_dec
|
||||
dd sz_tl_node_move_up,tl_node_move_up
|
||||
dd sz_tl_node_move_down, tl_node_move_down
|
||||
dd sz_tl_node_poi_get_info, tl_node_poi_get_info
|
||||
dd sz_tl_node_poi_get_next_info,tl_node_poi_get_next_info
|
||||
dd sz_tl_node_poi_get_data, tl_node_poi_get_data
|
||||
@ -219,6 +221,8 @@ szVersion_FileBrowser db 'version_FileBrowser',0
|
||||
sz_tl_node_close_open db 'tl_node_close_open',0
|
||||
sz_tl_node_lev_inc db 'tl_node_lev_inc',0
|
||||
sz_tl_node_lev_dec db 'tl_node_lev_dec',0
|
||||
sz_tl_node_move_up db 'tl_node_move_up',0
|
||||
sz_tl_node_move_down db 'tl_node_move_down',0
|
||||
sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
|
||||
sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
|
||||
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
|
||||
|
@ -1,6 +1,6 @@
|
||||
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
||||
; ýëåìåíò TreeList äëÿ Kolibri OS
|
||||
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.11.2009 IgorA
|
||||
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 24.11.2009 IgorA
|
||||
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
|
||||
|
||||
|
||||
@ -382,6 +382,7 @@ tl_mouse: ;
|
||||
mov esi,tl_box_top
|
||||
add esi,tl_box_height ;esi = coord bottom border
|
||||
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà
|
||||
call tl_draw_caption_cur_pos
|
||||
jmp .no_draw
|
||||
.no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå)
|
||||
mov ebx,tl_el_focus
|
||||
@ -611,6 +612,8 @@ tl_draw: ;
|
||||
; ecx = pointer to 1 node struct
|
||||
; edx = pointer to some node struct
|
||||
; edi = pointer to 'TreeList' struct
|
||||
;output:
|
||||
; edx = pointer to next node struct
|
||||
align 4
|
||||
tl_iterat_next:
|
||||
push bx
|
||||
@ -989,7 +992,7 @@ tl_draw_node:
|
||||
; ecx = pointer to 1 node struct
|
||||
;...
|
||||
align 4
|
||||
tl_draw_node_icon_opn_clo:
|
||||
tl_draw_node_icon_opn_clo: ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -)
|
||||
push eax ebx ecx edx esi
|
||||
inc al
|
||||
call tl_iterat_next_all ;get next visible item
|
||||
@ -1567,6 +1570,7 @@ tl_cur_next: ;
|
||||
@@:
|
||||
mov edi,dword[ebp+8] ;restore edi
|
||||
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà
|
||||
call tl_draw_caption_cur_pos
|
||||
.no_redraw:
|
||||
pop esi edi ebx eax
|
||||
pop ebp
|
||||
@ -1630,6 +1634,7 @@ tl_cur_perv: ;
|
||||
;mov esi,tl_box_top
|
||||
;add esi,tl_box_height ;esi = coord bottom border
|
||||
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà
|
||||
call tl_draw_caption_cur_pos
|
||||
.no_redraw:
|
||||
pop esi edi eax
|
||||
pop ebp
|
||||
@ -1706,6 +1711,169 @@ tl_node_lev_dec: ;
|
||||
pop ebp
|
||||
ret 4
|
||||
|
||||
align 4
|
||||
tl_node_move_up: ;ïåðåìåùàåì óçåë ââåðõ
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
push eax ebx ecx edx edi esi
|
||||
mov edi,dword[ebp+8]
|
||||
call tl_get_cur_node_index ;eax=po_t
|
||||
cmp eax,2
|
||||
jl @f
|
||||
mov ebx,eax ;copy index of node struct
|
||||
mov edx,tl_data_nodes
|
||||
mov ecx,edx
|
||||
add ecx,sizeof.TreeList
|
||||
imul eax,sizeof.TreeList
|
||||
add eax,edx ;eax = pointer to 2 node struct
|
||||
mov edx,eax ;edx = pointer to 2 node struct
|
||||
mov esi,eax ;esi = pointer to 2 node struct
|
||||
call tl_iterat_perv ;edx = pointer to 1 node struct
|
||||
call tl_get_node_index ;eax = index of 1 node struct
|
||||
cmp edx,ecx
|
||||
jle @f
|
||||
cmp dword[edx+8],ebx ;+8 next
|
||||
jne .po8
|
||||
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê
|
||||
jmp .cur_mov
|
||||
.po8:
|
||||
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê
|
||||
.cur_mov:
|
||||
push dword edi
|
||||
call tl_cur_perv
|
||||
push dword edi
|
||||
call tl_draw
|
||||
@@:
|
||||
pop esi edi edx ecx ebx eax
|
||||
pop ebp
|
||||
ret 4
|
||||
|
||||
align 4
|
||||
tl_node_move_down: ;ïåðåìåùàåì óçåë âíèç
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
push eax ebx ecx edx edi esi
|
||||
mov edi,dword[ebp+8]
|
||||
call tl_get_cur_node_index ;eax=po_t
|
||||
cmp eax,2
|
||||
jl @f
|
||||
mov ebx,eax ;copy index of node struct
|
||||
mov edx,tl_data_nodes
|
||||
mov ecx,edx
|
||||
add ecx,sizeof.TreeList
|
||||
imul eax,sizeof.TreeList
|
||||
add eax,edx ;eax = pointer to 1 node struct
|
||||
mov edx,eax ;edx = pointer to 1 node struct
|
||||
mov esi,eax ;esi = pointer to 1 node struct
|
||||
call tl_iterat_next ;edx = pointer to 2 node struct
|
||||
call tl_get_node_index ;eax = index of 2 node struct
|
||||
cmp edx,ecx
|
||||
jle @f
|
||||
cmp dword[esi+8],eax ;+8 next
|
||||
jne .po8
|
||||
xchg eax,ebx ;ìåíÿå ïîðÿäîê ñëåäîâàíèÿ çàìåíÿåìûõ óçëîâ
|
||||
xchg edx,esi
|
||||
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê
|
||||
jmp .cur_mov
|
||||
.po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì
|
||||
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê
|
||||
.cur_mov:
|
||||
push dword edi
|
||||
call tl_cur_next
|
||||
push dword edi
|
||||
call tl_draw
|
||||
@@:
|
||||
pop esi edi edx ecx ebx eax
|
||||
pop ebp
|
||||
ret 4
|
||||
|
||||
align 4
|
||||
tl_node_move_po6:
|
||||
mov ecx,edx ;save node pointer
|
||||
call tl_move_perv
|
||||
mov dword[edx+8],ebx
|
||||
|
||||
mov edx,esi
|
||||
call tl_move_next
|
||||
mov dword[edx+4],eax
|
||||
mov edx,ecx ;restore node pointer
|
||||
|
||||
;+4 perv
|
||||
mov ecx,dword[edx+4]
|
||||
mov dword[esi+4],ecx
|
||||
;+8 next
|
||||
mov ecx,dword[esi+8]
|
||||
mov dword[edx+8],ecx
|
||||
|
||||
mov dword[edx+4],ebx
|
||||
mov dword[esi+8],eax
|
||||
ret
|
||||
|
||||
;input
|
||||
;eax = index 1 node struct
|
||||
;ebx = index 2 node struct
|
||||
;edx = pointer 1 node struct
|
||||
;esi = pointer 2 node struct
|
||||
;edi = pointer to 'TreeList' struct
|
||||
;output:
|
||||
;eax = ?
|
||||
;ebx = ?
|
||||
;ecx = ?
|
||||
align 4
|
||||
tl_node_move_po8:
|
||||
; push ecx
|
||||
mov ecx,edx ;save node pointer
|
||||
call tl_move_perv
|
||||
mov dword[edx+8],ebx
|
||||
mov edx,ecx
|
||||
call tl_move_next
|
||||
mov dword[edx+4],ebx
|
||||
mov edx,esi
|
||||
call tl_move_perv
|
||||
mov dword[edx+8],eax
|
||||
mov edx,esi
|
||||
call tl_move_next
|
||||
mov dword[edx+4],eax
|
||||
mov edx,ecx ;restore node pointer
|
||||
; pop ecx
|
||||
|
||||
;+4 perv
|
||||
mov eax,dword[edx+4]
|
||||
mov ebx,dword[esi+4]
|
||||
xchg eax,ebx
|
||||
mov dword[edx+4],eax
|
||||
mov dword[esi+4],ebx
|
||||
;+8 next
|
||||
mov eax,dword[edx+8]
|
||||
mov ebx,dword[esi+8]
|
||||
xchg eax,ebx
|
||||
mov dword[edx+8],eax
|
||||
mov dword[esi+8],ebx
|
||||
ret
|
||||
|
||||
;input:
|
||||
; edi = pointer to 'TreeList' struct
|
||||
align 4
|
||||
tl_draw_caption_cur_pos:
|
||||
cmp tl_capt_cy,9 ;9 - minimum caption height
|
||||
jl @f
|
||||
push eax ebx ecx edx edi esi
|
||||
mov eax,47 ;draw
|
||||
mov ebx,0x40000
|
||||
mov ecx,tl_cur_pos
|
||||
inc ecx
|
||||
mov edx,tl_box_left
|
||||
shl edx,16
|
||||
add edx,50*65536+3
|
||||
add edx,tl_box_top
|
||||
mov esi,tl_col_txt
|
||||
or esi,0x40000000 ;çàêðàøèâàòü ôîí öâåòîì edi
|
||||
mov edi,tl_col_zag
|
||||
int 0x40
|
||||
pop esi edi edx ecx ebx eax
|
||||
@@:
|
||||
ret
|
||||
|
||||
txt_capt_cur db '‘âப ',0
|
||||
txt_capt_otm db 'Žâ¬¥ë',0
|
||||
}
|
@ -48,15 +48,15 @@ table { font-size: 15px; }
|
||||
<p><a href="#vveden">Введение</a></p>
|
||||
<p><a href="#funct">Функции</a></p>
|
||||
<ul>
|
||||
<li>tl_data_init</li>
|
||||
<li>tl_data_clear</li>
|
||||
<li>tl_info_clear</li>
|
||||
<li>tl_key</li>
|
||||
<li>tl_mouse</li>
|
||||
<li>tl_draw</li>
|
||||
<li>tl_info_undo</li>
|
||||
<li>tl_info_redo</li>
|
||||
<li>tl_node_add</li>
|
||||
<li><a href="#fun_init">tl_data_init</a></li>
|
||||
<li><a href="#fun_clear1">tl_data_clear</a></li>
|
||||
<li><a href="#fun_clear2">tl_info_clear</a></li>
|
||||
<li><a href="#fun_key">tl_key</a></li>
|
||||
<li><a href="#fun_mouse">tl_mouse</a></li>
|
||||
<li><a href="#fun_draw">tl_draw</a></li>
|
||||
<li><a href="#fun_undo">tl_info_undo</a></li>
|
||||
<li><a href="#fun_redo">tl_info_redo</a></li>
|
||||
<li><a href="#fun_add">tl_node_add</a></li>
|
||||
<li>tl_node_set_data</li>
|
||||
<li>tl_node_get_data</li>
|
||||
<li>tl_node_delete</li>
|
||||
@ -66,6 +66,8 @@ table { font-size: 15px; }
|
||||
<li>tl_node_close_open</li>
|
||||
<li>tl_node_lev_inc</li>
|
||||
<li>tl_node_lev_dec</li>
|
||||
<li>tl_node_move_up</li>
|
||||
<li>tl_node_move_down</li>
|
||||
<li>tl_node_poi_get_info</li>
|
||||
<li>tl_node_poi_get_next_info</li>
|
||||
<li>tl_node_poi_get_data</li>
|
||||
@ -74,30 +76,36 @@ table { font-size: 15px; }
|
||||
<p><a href="#struc_tree_list">Структура tree_list</a></p>
|
||||
<p><a href="#tree_list_styles">Стили элемента</a></p>
|
||||
|
||||
<h1><a name="#vveden">Введение</a></h1>
|
||||
<h1><a name="vveden">Введение</a></h1>
|
||||
<p>Внешний вид элемента управления TreeList:</p>
|
||||
<p><img src="window_tree_list.png"></p>
|
||||
|
||||
<h1><a name="funct">Функции</a></h1>
|
||||
|
||||
<h2>tl_data_init</h2>
|
||||
<h2><a name="fun_init">tl_data_init</a></h2>
|
||||
<p>Конструктор элемента, нужно вызывать перед использованием элемента для выделения памяти и других настроек.</p>
|
||||
<h2>tl_data_clear</h2>
|
||||
<h2><a name="fun_clear1">tl_data_clear</a></h2>
|
||||
<p>Деструктор элемента, чистит память по указателям: <b>data_info</b>, <b>data_nodes</b>, <b>data_img</b> и <b>data_img_sys</b>. Если в программе используется <i>несколько элементов с одинаковыми иконками</i>, то указатели data_img и data_img_sys нужно приравнять к 0 в других элементах, так что-бы при вызове деструкторов не было повторного удаления одних и тех же иконок.</p>
|
||||
<h2>tl_info_clear</h2>
|
||||
<p>Очистка списка от всех узлов. Это действие нельзя отменить функцией <b>tl_info_undo</b>.</p>
|
||||
<h2>tl_key</h2>
|
||||
<p>Функция которую нужно вызывать при нажатии на клавиатуру.</p>
|
||||
<h2>tl_mouse</h2>
|
||||
<p>Функция для событий от мыши.</p>
|
||||
<h2>tl_draw</h2>
|
||||
<p>Полная перерисовка окна элемента.</p>
|
||||
<h2>tl_info_undo</h2>
|
||||
<p>Отменяет добавление узлов. Действует только на весь узел целиком, не учитывая изменения внутри узлов. Т. е. нельзя отменить действия выполненные например функциями: <b>tl_node_set_data</b>, <b>tl_node_lev_inc</b> и им подобным.</p>
|
||||
<h2>tl_info_redo</h2>
|
||||
<p></p>
|
||||
|
||||
<h2>tl_node_add</h2>
|
||||
<h2><a name="fun_clear2">tl_info_clear</a></h2>
|
||||
<p>Очистка списка от всех узлов. Это действие нельзя отменить функцией <b>tl_info_undo</b>.</p>
|
||||
|
||||
<h2><a name="fun_key">tl_key</a></h2>
|
||||
<p>Функция которую нужно вызывать при нажатии на клавиатуру.</p>
|
||||
|
||||
<h2><a name="fun_mouse">tl_mouse</a></h2>
|
||||
<p>Функция для событий от мыши.</p>
|
||||
|
||||
<h2><a name="fun_draw">tl_draw</a></h2>
|
||||
<p>Полная перерисовка окна элемента.</p>
|
||||
|
||||
<h2><a name="fun_undo">tl_info_undo</a></h2>
|
||||
<p>Отменяет добавление узлов. Действует только на весь узел целиком, не учитывая изменения внутри узлов. Т. е. нельзя отменить действия выполненные например функциями: <b>tl_node_set_data</b>, <b>tl_node_lev_inc</b> и им подобным.</p>
|
||||
|
||||
<h2><a name="fun_redo">tl_info_redo</a></h2>
|
||||
<p>Повтор отмененных действий. Обратная функция по отношению к <b>tl_info_undo</b>.</p>
|
||||
|
||||
<h2><a name="fun_add">tl_node_add</a></h2>
|
||||
<p>Добавляет узел, в позицию указанную курсором. Пример добавления узла:</p>
|
||||
<pre> push dword tree1
|
||||
push dword 0x10002
|
||||
@ -125,6 +133,18 @@ table { font-size: 15px; }
|
||||
<h2>tl_node_lev_dec</h2>
|
||||
<p>Уменьшает уровень узла под курсором. Делает узел родительским.</p>
|
||||
|
||||
<h2>tl_node_move_up</h2>
|
||||
<p>Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:</p>
|
||||
<pre> push dword tree1
|
||||
call dword[tl_node_move_up] ;переместить узел</pre>
|
||||
<p>где: <b>tree1</b> - структура tree_list</p>
|
||||
|
||||
<h2>tl_node_move_down</h2>
|
||||
<p>Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:</p>
|
||||
<pre> push dword tree1
|
||||
call dword[tl_node_move_down] ;переместить узел</pre>
|
||||
<p>где: <b>tree1</b> - структура tree_list</p>
|
||||
|
||||
<h2>tl_node_poi_get_info</h2>
|
||||
<p>Берет внутренний указатель на структуру описывающую узел.</p>
|
||||
<h2>tl_node_poi_get_next_info</h2>
|
||||
@ -132,7 +152,7 @@ table { font-size: 15px; }
|
||||
<h2>tl_node_poi_get_data</h2>
|
||||
<p>Берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.</p>
|
||||
|
||||
<p>Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора.</p>
|
||||
<p>Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к даным элемента в "фоновом режиме".</p>
|
||||
|
||||
<h2>version_tree_list</h2>
|
||||
<p>Версия элемента</p>
|
||||
@ -194,6 +214,6 @@ table { font-size: 15px; }
|
||||
<p>Стиль не отображает уровни (как в ListBox все узлы одного уровня).</p>
|
||||
|
||||
<hr>
|
||||
<p>Документация обновлялась последний раз 23.11.09.</p>
|
||||
<p>Документация обновлялась последний раз 25.11.09.</p>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user