Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1283 → Rev 1285

/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 ìîæíî ñ÷èòûâàòü èíôîðìàöèþ î óçëàõ ýëåìåíòà, ïðè ýòîì íå ìåíÿÿ òåêóùåãî ïîëîæåíèÿ êóðñîðà. Ò. å. ìîæíî îðãàíèçîâàòü äîñòóï ê äàíûì ýëåìåíòà â &quot;ôîíîâîì ðåæèìå&quot;.</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>