/programs/develop/libraries/box_lib/trunk/box_lib.asm |
---|
80,10 → 80,12 |
;-------------------------------------------------- |
align 16 |
use_file_browser |
;-------------------------------------------------- |
;align 16 |
init: |
ret |
;tree list |
;-------------------------------------------------- |
align 16 |
use_tree_list |
;;;;;;;;;;; |
;;Data |
92,13 → 94,11 |
;mouse_flag dd 0x0 |
;-------------------------------------------------- |
;tree list |
;-------------------------------------------------- |
align 16 |
use_tree_list |
;align 16 |
init: |
ret |
align 16 |
EXPORTS: |
157,6 → 157,8 |
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 |
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 |
/programs/develop/libraries/box_lib/trunk/tree_list.mac |
---|
1,6 → 1,6 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.11.2009 IgorA |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 24.11.2009 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
382,6 → 382,7 |
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 |
; 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 |
; 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 |
@@: |
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 |
;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 |
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 |
} |
/programs/develop/libraries/box_lib/trunk/tree_list_doc/info_treelist.htm |
---|
48,15 → 48,15 |
<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 |
<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 |
<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> |
<h2><a name="fun_clear2">tl_info_clear</a></h2> |
<p>Î÷èñòêà ñïèñêà îò âñåõ óçëîâ. Ýòî äåéñòâèå íåëüçÿ îòìåíèòü ôóíêöèåé <b>tl_info_undo</b>.</p> |
<h2>tl_key</h2> |
<h2><a name="fun_key">tl_key</a></h2> |
<p>Ôóíêöèÿ êîòîðóþ íóæíî âûçûâàòü ïðè íàæàòèè íà êëàâèàòóðó.</p> |
<h2>tl_mouse</h2> |
<h2><a name="fun_mouse">tl_mouse</a></h2> |
<p>Ôóíêöèÿ äëÿ ñîáûòèé îò ìûøè.</p> |
<h2>tl_draw</h2> |
<h2><a name="fun_draw">tl_draw</a></h2> |
<p>Ïîëíàÿ ïåðåðèñîâêà îêíà ýëåìåíòà.</p> |
<h2>tl_info_undo</h2> |
<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>tl_info_redo</h2> |
<p></p> |
<h2>tl_node_add</h2> |
<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 |
<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 |
<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 |
<p>Ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå óçëû îäíîãî óðîâíÿ).</p> |
<hr> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 23.11.09.</p> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 25.11.09.</p> |
</body> |
</html> |