Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8568 → Rev 8567

/programs/system/docky/trunk/docky.asm
7,14 → 7,13
include "../../../macros.inc"
include "../../../proc32.inc"
include "../../../dll.inc"
include "../../../KOSfuncs.inc"
include "../../../load_lib.mac"
include "../../../develop/libraries/box_lib/load_lib.mac"
;include "../../../debug.inc"
 
include "DATA.INC"
include "NAME.INC"
 
@use_library \
@use_library_mem \
mem.Alloc, \
mem.Free, \
mem.ReAlloc, \
22,10 → 21,10
;================================================================================
main:
; ==== Init ====
mcall SF_SYSTEM, SSF_GET_ACTIVE_WINDOW
mcall 18, 7
mov [win.psid], eax
 
mcall SF_SET_EVENTS_MASK, EVM_REDRAW+EVM_BUTTON+EVM_MOUSE ;+EVM_DEKSTOP to update colors on skin change
mcall 40, EVM_REDRAW+EVM_BUTTON+EVM_MOUSE ;+EVM_DEKSTOP to update colors on skin change
 
; ==== Load libs ====
load_libraries load_lib_start, load_lib_end
41,17 → 40,17
invoke ini.sections, ini_data.file_name, sections_callback
 
; ==== Load colors ====
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, color
mcall 48, 3, color
or dword[color.bg], 0x10000000
or dword[color.frame], 0x10000000
or dword[color.text], 0x80000000
 
; ==== Config LibIMG ====
mov dword[fi.p00], SSF_GET_INFO
mov dword[fi.p00], 5
mov dword[fi.p16], buf_128
mov dword[fi.p21], img_data.file_name
 
mcall SF_FILE, fi
mcall 70, fi
 
mov edx, [buf_128 + 32]
imul edx, 10
59,12 → 58,12
stdcall mem.Alloc, edx
mov [img_data.rgb_object], eax
 
mov dword[fi.p00], SSF_READ_FILE
mov dword[fi.p00], 0
mov dword[fi.p12], edx
m2m dword[fi.p16], dword[img_data.rgb_object]
mov dword[fi.p21], img_data.file_name
 
mcall SF_FILE, fi
mcall 70, fi
 
cmp ebx, 0xFFFFFFFF
je @f
154,7 → 153,7
dec eax
jmp .set_hw
@@:
mcall SF_GET_SCREEN_SIZE
mcall 14
shr eax, 16
.set_hw:
mov [win.width_opn], eax
164,7 → 163,7
 
;-------------------------------------------------------------------------------
.HORZ_X:
mcall SF_GET_SCREEN_SIZE
mcall 14
shr eax, 17
mov ecx, [win.width_opn]
shr ecx, 1
183,7 → 182,7
 
;-------------------------------------------------------------------------------
.HORZ_Y_BOTTOM:
mcall SF_GET_SCREEN_SIZE
mcall 14
and eax, 0xFFFF
dec eax
mov [win.y_hdn], eax
213,7 → 212,7
ret
 
.VERT_X_RIGHT:
mcall SF_GET_SCREEN_SIZE
mcall 14
and eax, 0xFFFF0000
shr eax, 16
mov [win.x_hdn], eax
232,7 → 231,7
dec eax
jmp .set_vh
@@:
mcall SF_GET_SCREEN_SIZE
mcall 14
and eax, 0xFFFF
.set_vh:
mov [win.height_opn], eax
242,7 → 241,7
 
;-------------------------------------------------------------------------------
.VERT_Y:
mcall SF_GET_SCREEN_SIZE
mcall 14
and eax, 0xFFFF
shr eax, 1
 
289,9 → 288,9
 
;-------------------------------------------------------------------------------
; ==== START ====
mcall SF_THREAD_INFO, win.procinfo, -1
mcall 9, win.procinfo, -1
mov ecx, [win.procinfo + 30]
mcall SF_SYSTEM, SSF_GET_THREAD_SLOT
mcall 18, 21
and eax, 0xFFFF
mov [win.sid], eax
 
299,12 → 298,11
;-------------------------------------------------------------------------------
exit:
stdcall mem.Free, [img_data.rgb_object]
mcall SF_SYSTEM, SSF_TERMINATE_THREAD, [nwin.sid]
mcall SF_TERMINATE_PROCESS
mcall 18, 2, [nwin.sid]
mcall -1
;-------------------------------------------------------------------------------
align 4
main_loop:
mcall SF_WAIT_EVENT
mcall 10
 
cmp eax, EV_REDRAW
je event_redraw
322,19 → 320,19
jmp main_loop
;-------------------------------------------------------------------------------
DRAW_WINDOW:
mcall SF_REDRAW, SSF_BEGIN_DRAW
mcall 12, 1
 
mov esi, [color.bg]
or esi, 0x01000000
mcall SF_CREATE_WINDOW, <[win.x], [win.width]>, <[win.y], [win.height]>, [color.bg], , [color.frame]
mcall 0, <[win.x], [win.width]>, <[win.y], [win.height]>, [color.bg], , [color.frame]
 
xor edi, edi
mov edi, 0
@@:
cmp edi, [dock_items.count]
je @f
 
push edi
mov eax, SF_DEFINE_BUTTON
mov eax, 8
mov edx, 0x60000002
mov esi, [color.bg]
imul edi, BUTTON_SIZE
358,11 → 356,12
push ebx
push ecx
 
mov eax, SF_DRAW_RECT
mov eax, 13
mov ebx, edi
imul ebx, BUTTON_SIZE
add ebx, BUTTON_SIZE
add ebx, 12-1
add ebx, 12
dec ebx
shl ebx, 16
add ebx, 2
 
398,18 → 397,18
imul ebx, ICON_SIZE_BGR
add ebx, [img_data.rgb_object]
 
mcall SF_PUT_IMAGE, , <32, 32>
mcall 7, , <32, 32>
 
inc edi
jmp @b
@@:
 
mcall SF_REDRAW, SSF_END_DRAW
mcall 12, 2
 
ret
;-------------------------------------------------------------------------------
event_button:
mcall SF_GET_BUTTON
mcall 17
 
;; it must not be possible to close dock
;cmp ah, 1
427,7 → 426,7
mov edi, [win.button_index]
imul edi, 256
 
mov dword[fi.p00], SSF_START_APP
mov dword[fi.p00], 7
 
mov esi, edi
add esi, dock_items.path
437,10 → 436,10
add esi, dock_items.param
mov dword[fi.p08], esi
 
mcall SF_FILE, fi
mcall 70, fi
 
mov ecx, eax
mcall SF_SYSTEM, SSF_GET_THREAD_SLOT
mcall 18, 21
and eax, 0xFFFF
mov [win.psid], eax
 
451,7 → 450,7
;-------------------------------------------------------------------------------
event_mouse:
; ==== IS MOUSE INNER ====
mcall SF_MOUSE_GET, SSF_WINDOW_POSITION
mcall 37, 1
mov edi, eax
mov esi, eax
shr edi, 16
514,7 → 513,7
add eax, [win.x]
mov [nwin.x], eax
mov byte[nwin.change_shape], 1
mcall SF_DRAW_RECT, <0, [win.width]>, <[win.height], 1>, [color.frame]
mcall 13, <0, [win.width]>, <[win.height], 1>, [color.frame]
jmp .vert_end
.vert_name:
add eax, [win.y]
521,7 → 520,7
add eax, 14
mov [nwin.y], eax
mov byte[nwin.change_shape], 1
mcall SF_DRAW_RECT, <[win.width], 1>, <0, [win.height]>, [color.frame]
mcall 13, <[win.width], 1>, <0, [win.height]>, [color.frame]
.vert_end:
 
; ==== OPEN/CLOSE WINDOW ====
530,12 → 529,14
 
mov edx, esp
add edx, 512
mcall SF_CREATE_THREAD, 1, n_main
mcall 51, 1, n_main
 
mcall SF_SYSTEM, SSF_GET_ACTIVE_WINDOW
mov eax, 18
 
mcall , 7
mov [win.psid], eax
 
mcall SF_SYSTEM, SSF_FOCUS_WINDOW, [win.sid]
mcall 18, 3, [win.sid]
 
mov byte[win.state], 1
 
554,7 → 555,7
 
cmp byte[dock_items.ashow],1
je .change_nothing
mcall SF_CHANGE_WINDOW, [win.x], [win.y], [win.width], [win.height]
mcall 67, [win.x], [win.y], [win.width], [win.height]
 
.change_nothing:
call DRAW_WINDOW
568,7 → 569,7
 
mov byte[nwin.close], 1
 
mcall SF_SYSTEM, SSF_FOCUS_WINDOW, [win.psid]
mcall 18, 3, [win.psid]
 
mov byte[win.state], 0
mov byte[win.button_index], -1
588,7 → 589,7
mov eax, [win.y_hdn]
mov [win.y], eax
 
mcall SF_CHANGE_WINDOW, [win.x], [win.y], [win.width], [win.height]
mcall 67, [win.x], [win.y], [win.width], [win.height]
 
.do_no_hide:
call DRAW_WINDOW
608,7 → 609,7
sub ecx, 0x000C0000
@@:
 
mcall SF_DRAW_RECT, , , [color.bg]
mcall 13, , , [color.bg]
 
mov edx, ebx
shr ecx, 16
622,7 → 623,7
imul ebx, ICON_SIZE_BGR
add ebx, [img_data.rgb_object]
 
mcall SF_PUT_IMAGE, , <32, 32>
mcall 7, , <32, 32>
 
mov ebx, [win.button_index]
imul ebx, BUTTON_SIZE
637,7 → 638,7
sub ecx, 0x000C0000
@@:
 
mcall SF_DRAW_RECT, , , [color.bt]
mcall 13, , , [color.bt]
 
mov edx, ebx
shr ecx, 16
681,7 → 682,7
cmp edi, 1024 * 3
jne @b
 
mcall SF_PUT_IMAGE, sel_img, <32, 32>
mcall 7, sel_img, <32, 32>
 
ret
;-------------------------------------------------------------------------------
/programs/system/docky/trunk/DATA.INC
26,14 → 26,24
;-------------------------------------------------------------------------------
load_lib_start:
lib1 l_libs img.name, \
sys_path, \
file_name, \
img.dir, \
img
error, \
error, \
img, \
error, \
error
 
lib2 l_libs ini.name, \
sys_path, \
file_name, \
ini.dir, \
ini
error, \
error, \
ini, \
error, \
error
load_lib_end:
;-------------------------------------------------------------------------------
img:
/programs/develop/libraries/box_lib/trunk/checkbox.asm
1,4 → 1,4
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 02.02.2021
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 08.12.2020
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
;Checkbox
 
107,9 → 107,9
check_box_mouse: ;îáðàáîòêà ìûøè
pushad
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
mcall SF_MOUSE_GET,SSF_BUTTON_EXT ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
and eax, 3 shl 8 ;ïðîâåðÿåì ëåâóþ è ïðàâóþ êíîïêè
jz .end ;îáðàáîòêà çàêîí÷èëàñü
mcall SF_MOUSE_GET,SSF_BUTTON ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, âûéäåì
jz .check_box_mouse_end ;îáðàáîòêà çàêîí÷èëàñü
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî.
@@:
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà
119,11 → 119,11
mov ebx,ecx
shr ebx,16 ;bx = êîîðäèíàòà ïî y
cmp ax,bx
jb .end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
;ñðàâíåíèå íèæíåé òî÷êè ïî Y
add cx,bx ;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y
cmp ax,cx
ja .end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
shr eax,16 ;ñìåñòèì êîîðäèíàòó ïî Õ â íèæíóþ ÷àñòü ðåãèñòðà ò.å. â ax
;ñðàâíåíèå ïî íà÷àëüíîé òî÷êå Õ
131,20 → 131,20
mov ebx,ecx
shr ebx,16 ;bx = êîîðäèíàòà ïî X
cmp ax,bx
jb .end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà
;ñðàâíåíèå êîíå÷íîé òî÷êè ïî X
add bx,cx ;ñëîæèì äëèííó ïî x è êîîðäèíàòó òî÷êè ïî õ ïîëó÷èì êîîðäèíàòó êîíå÷íîé òî÷êè ïî Õ
add bx,word ch_sz_str ;äîáàâèì äëèííó ñòðîêè òåêñòà ñ îòñòóïîì ïðåäâàðòèåëüíî çàïèñàâ èõ â ìîìåíò èíèöèàëèçàöèè
cmp ax,bx
ja .end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî õ ÷åì êîîðäèíàòà ïî Õ ó áîêñà
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî õ ÷åì êîîðäèíàòà ïî Õ ó áîêñà
;åñëè âñå ïðîâåðêè áûëè óñïåøíî ïðîéäåíû ìû îáÿçàíû ïîìåíÿòü ñîñòîÿíèå áîêñà
btc dword ch_flags,1 ;ïåðåíîñ 2-ãî áèòà â cf è èíâåðñèÿ åãî
jnc .enable_box ;åñëè CF=1 òî îòîáðàçèì âêëþ÷åííûé áîêñ è âûéäåì
push dword .end ;ôîêóñ-ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse.end
push dword .check_box_mouse_end ;ôîêóñ -ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse_end
jmp check_box_clear_ch ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà.
 
.enable_box:
call check_box_draw_ch ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ
.end:
.check_box_mouse_end:
popad ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà
ret 4 ;âûéòè è âîññòàíîâèì ñòåê