Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7435 → Rev 7436

/programs/other/ha/HACONFIG.ASM
2,7 → 2,7
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Compile with FASM
; Version 0.3.2: Sep 24, 2018
; Version 0.3.5: Oct 5, 2018
 
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
; All rights reserved.
45,7 → 45,11
include '../../proc32.inc'
include '../../dll.inc'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;êîìïîíåíòû checkBox è editBox
 
;![
include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê
@use_library
;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
;!]
Otstup = 30
 
START:
52,6 → 56,7
call copyKill ;ïðîñòåéøàÿ çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèÿ
mcall 68, 11 ;èíèöèàëèçàöèÿ êó÷è
 
;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà
mov eax,48 ;ïîëó÷èòü ñèñòåìíûå öâåòà
mov ebx,3
mov ecx, sc
58,7 → 63,6
mov edx, sizeof.system_colors
mcall
 
 
stdcall dll.Load, @IMPORT
or eax, eax
jnz exit
69,6 → 73,10
mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
mcall
 
load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è)
;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà
stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà
 
call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ
call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèÿ
 
123,8 → 131,34
mcall
noclose:
cmp ah, 2 ;êíîïêà "Ïðèìåíèòü"
jne butend
jne @f ;butend
call applyButton ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèÿ êíîïêè
jmp event_wait
@@:
cmp ah, 4
jne @f
mov byte[editID], 4
call but_open_dlg
jmp event_wait
@@:
cmp ah, 5
jne @f
mov byte[editID], 5
call but_open_dlg
jmp event_wait
@@:
cmp ah, 6
jne @f
mov byte[editID], 6
call but_open_dlg
jmp event_wait
@@:
cmp ah, 7
jne @f
mov byte[editID], 7
call but_open_dlg
jmp event_wait
@@:
butend:
jmp event_wait ;this is for ignored events, useful at development
 
217,10 → 251,14
mov dword[createFile.data_adr], eax ;ñîõðàíÿåì àäðåñ áóôåðà â ñòðóêòóðó
 
;çàïîëíèì áóôåð ñîäåðæèìîãî:
mov byte[eax], 110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
;cmp byte[mode], 0
;jne @f
;@@:
;
mov byte[eax], 48;'0' ;110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;âûñòàâëåí checkBox èëè íåò?
jne applyButton.no
mov byte[eax], 121 ;èíà÷å êëàä¸ì 'y'
mov byte[eax], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y'
.no:
inc eax
call addPerenos
376,11 → 414,14
add edx, eax ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ
 
.chStart:
cmp byte[eax], 121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
jne loadConfig.no
cmp byte[eax], 49;'1' ;121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
jne @f ;loadConfig.no
.yes:
mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle
jmp loadConfig.chEnd
@@:
cmp byte[eax], 50;'2' ;âòîðîé ðåæèì àêòèâèðîâàí
je loadConfig.yes
.no:
mov word[ch1.flags], 100b ;ch_flag_middle
.chEnd:
556,6 → 597,16
mov edx, 0x80000002
mcall 8
 
;óäàëÿåì åù¸ 4 êíîïêè åñëè îíè åñòü
mov edx, 0x80000004
mcall 8
mov edx, 0x80000005
mcall 8
mov edx, 0x80000006
mcall 8
mov edx, 0x80000007
mcall 8
 
mov eax, 12 ; function 12: tell os about windowdraw
mov ebx, 1 ; 1, start of draw
mcall
608,6 → 659,52
mov esi, buttonTextSize ;5 ;ðàçìåð òåêñòà â ñèìâîëàõ
mcall 4
 
;ðèñóåì åù¸ 4 êíîïêè äëÿ äèàëîãîâîãî îêíà âûáîðà ôàéëà
;íîìåðà 4,5,6 è 7
buttonH = 14 ;20
buttonW = 30
;ëåâûé âåðõíèé óãîë
mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
mov edx, 0x00000004 ;íîìåð êíîïêè
mov esi, 0x00AABBCC ;öâåò êíîïêè
mcall 8
;ëåâûé íèæíèé óãîë
mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
mov edx, 0x00000005 ;íîìåð êíîïêè
mov esi, 0x00AABBCC ;öâåò êíîïêè
mcall 8
;ïðàâûé âåðõíèé óãîë
mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
mov edx, 0x00000006 ;íîìåð êíîïêè
mov esi, 0x00AABBCC ;öâåò êíîïêè
mcall 8
;ïðàâûé íèæíèé óãîë
mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
mov edx, 0x00000007 ;íîìåð êíîïêè
mov esi, 0x00AABBCC ;öâåò êíîïêè
mcall 8
 
;ðèñóåì òåêñòû äëÿ ýòèõ 4 êíîïîê
mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà
mov edx, commonButtonText ;ñòðîêà òåêñòà
mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ
;êîîðäèíàòû òåêñòà (x, y)
deltaCommonTextX = 7
deltaCommonTextY = 2
mov ebx, (Otstup+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY)
mcall 4
mov ebx, (Otstup+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY)
mcall 4
mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY)
mcall 4
mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY)
mcall 4
 
 
call draw_super_text
 
LineLength = 62
654,6 → 751,8
;êîîðäèíàòû (x,y) = (30, 160) ðàçìåð ÷åêáîêñà 12, öâåò òåêñòà 0x224466
ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle
 
commonButtonText db '...', 0 ;òåêñò äëÿ êíîïîê âûçîâà OpenDial
commonButtonTextSize = 3
 
if lang eq ru ;åñëè ÿçûê ñáîðêè ðóññêèé
 
725,16 → 824,183
pop esi edi edx ecx ebx eax
ret
 
;![
editID db 0
initEBX:
cmp byte[editID], 4
jne @f
mov ebx, dataBuffer.1
ret
@@:
cmp byte[editID], 5
jne @f
mov ebx, dataBuffer.2
ret
@@:
cmp byte[editID], 6
jne @f
mov ebx, dataBuffer.3
ret
@@:
cmp byte[editID], 7
jne @f
mov ebx, dataBuffer.4
ret
@@:
ret
setRESULT:
cmp byte[editID], 4
jne @f
mov dword[dataBuffer.size1], ecx
mov dword[editLU.size], ecx
mov dword[editLU.pos], ecx
ret
@@:
cmp byte[editID], 5
jne @f
mov dword[dataBuffer.size2], ecx
mov dword[editLD.size], ecx
mov dword[editLD.pos], ecx
ret
@@:
cmp byte[editID], 6
jne @f
mov dword[dataBuffer.size3], ecx
mov dword[editRU.size], ecx
mov dword[editRU.pos], ecx
ret
@@:
cmp byte[editID], 7
jne @f
mov dword[dataBuffer.size4], ecx
mov dword[editRD.size], ecx
mov dword[editRD.pos], ecx
ret
@@:
ret
copyPath:
push eax ebx ecx edx ;copy file name path
mov eax, openfile_path ;dword[OpenDialog_data.openfile_path]
call initEBX ;mov ebx, dataBuffer.1 ;.data
mov ecx, 0
@@:
mov dl, byte[eax]
cmp dl, 0 ;byte[eax], 0
je @f
mov byte[ebx], dl
inc eax
inc ebx
inc ecx
jmp @b
@@:
mov byte[ebx], 0
call setRESULT
pop edx ecx ebx eax
ret
 
 
align 4
but_open_dlg:
pushad
copy_path open_dialog_name,communication_area_default_path,file_name,0
mov [OpenDialog_data.type],0
stdcall[OpenDialog_Start], OpenDialog_data
cmp [OpenDialog_data.status],2
je @f
cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel?
je .end_open
;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà
call copyPath
jmp .end_open
@@:
;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà
;...
.end_open:
popad
ret
;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ
align 4
OpenDialog_data:
.type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ
.procinfo dd procinfo
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_path dd plugin_path ;+16
.dir_default_path dd default_dir ;+20
.start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèÿ ôàéëîâ
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
default_dir db '/rd/1',0 ;äèðåêòîðèÿ ïî óìîë÷àíèþ
communication_area_name: db 'FFFFFFFF_open_dialog',0
open_dialog_name: db 'opendial',0
communication_area_default_path: db '/rd/1/File managers/',0
Filter:
dd Filter.end - Filter.1
.1:
;db 'ASM',0
;db 'KEX',0
;db 'TXT',0
.end:
db 0
align 4
proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
dd 0,0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
head_f_i:
head_f_l db 'Ñèñòåìíàÿ îøèáêà',0
err_message_found_lib0 db 'Íå íàéäåíà áèáëèîòåêà ',39,'proc_lib.obj',39,0
err_message_import0 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'proc_lib.obj',39,0
system_dir0 db '/sys/lib/'
lib0_name db 'proc_lib.obj',0
;library structures
l_libs_start:
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i
load_lib_end:
 
;txt_open db 'Îòêðûòü',0
 
sys_path: rb 4096
file_name: rb 4096
plugin_path: rb 4096
openfile_path: rb 4096
filename_area: rb 256
rb 1024
procinfo process_information
;!]
 
 
 
edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü
edMax = 0 ;max, size, pos
 
align 4
editLU edit_box 180,Otstup,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus
editLD edit_box 180,Otstup,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
editRU edit_box 180,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
editRD edit_box 180,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
editLU edit_box 180-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus
editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
 
mouse_dd dd ?
sc system_colors
 
dataBuffer:
.1: rb 512
.2: rb 512
748,8 → 1014,6
;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëÿ òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0
dataBufferEnd:
 
mouse_dd dd ?
sc system_colors
 
I_END:
rb 4096
/programs/other/ha/HOTANGLES.ASM
2,7 → 2,7
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Compile with FASM
; Version 0.3.3: Sep 25, 2018
; Version 0.3.5: Oct 5, 2018
 
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
; All rights reserved.
48,10 → 48,91
call copyKill ;ïðîñòåéøàÿ çàùèòà îò ïîâòîðíîãî çàïóñêà
mcall 68, 11 ;èíèöèàëèçàöèÿ êó÷è
call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ ïðèëîæåíèÿ
mov ebx, 00000100000000000000000000100000b ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ
 
cmp byte[mode], 0 ;ôóíêöèÿ îòêëþ÷åíà - âûõîä
jne @f
mcall -1
@@:
;ðåæèì àêòèâàöèè ãîðÿ÷åé êëàâèøåé?
cmp byte[mode], 2 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû
jne @f
mov ebx, 00000100000000000000000000100010b ;åñëè äà, òî ïîäïèñûâàåìñÿ íà êëàâèøè
mcall 40
jmp init02
@@:
; âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì ðàáîòû
;mode=1 êëàññè÷åñêèé ðåæèì ðàáîòû - ðåàêöèÿ ïðè íàâåäåíèè â óãîë
mov byte[mode], 1
mov ebx, 00000100000000000000000000100000b
mcall 40
jmp init01
 
START:
 
 
init02:
mov dword[backAdr], mode02
call setHotKey
mode02:
mcall 10
cmp eax, 2 ;îáðàáîòêà íàæàòèÿ êëàâèøè
je hotkey
 
cmp byte[keyState], 0
je mode02
cmp eax, 6 ;îáðàáîòêà ïåðåìåùåíèé è íàæàòèÿ ìûøè
je mouse
 
jmp mode02
 
 
setHotKey: ;óñòàíîâèòü ãîðÿ÷óþ êëàâèøó
push eax ebx ecx edx
xor ecx, ecx
mov cl, byte[keyActivate] ;íàæàòèå ãîðÿ÷åé êëàâèøè
mov edx, 0x000
mcall 66, 4, ecx, edx
 
;mov cl, byte[keyActivate]
add cl, 128 ;îòïóñêàíèå ãîðÿ÷åé êëàâèøè
;mov edx, 0x000
mcall 66, 4, ecx, edx
pop edx ecx ebx eax
ret
 
 
hotkey:
mcall 2
cmp eax, 1 ;áóôåð êëàâèø ïóñò?
je hotkey.end
 
cmp al, 2 ;íàñ èíòåðåñóåò òîëüêî ñêàí êîä ãîðÿ÷åé êëàâèøè, èíà÷å âûõîäèì
jne hotkey.end
 
cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà
jne @f
mov byte[keyState], 1
mov byte[state], UNLOCKd
jmp hotkey.end
@@:
push edx
xor edx, edx
mov dl, byte[keyActivate]
add dl, 128
cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà
jne @f ;hotkey.end
;mov ecx, 0 ;ñòðîêè äëÿ îòëàäêè è òåñòà
;call run_command
mov byte[keyState], 0
mov byte[state], LOCKd
@@:
pop edx
.end:
jmp mode02
 
 
init01:
mov dword[backAdr], mode01
mode01:
mov eax, 10 ; function 10 : wait until event
mcall ; event type is returned in eax
 
58,11 → 139,13
cmp eax, 6 ;îáðàáîòêà ïåðåìåùåíèé è íàæàòèÿ ìûøè
je mouse
 
jmp START
jmp mode01
 
 
mouse:
;îñíîâíîé öèêë ïðîãðàììû
call get_mouse_pos ;ïîëó÷àåì òåêóùèå êîîðäèíàòû ìûøè
push ebx
mcall 37, 0 ;ïîëó÷àåì òåêóùèå êîîðäèíàòû ìûøè
pop ebx
 
cmp eax, 0 ;ëåâûé âåðõíèé óãîë
jne @f
72,7 → 155,7
call run_command
pop ecx
 
jmp START ;finish
jmp dword[backAdr] ;finish
@@:
call get_screen_size ;èíà÷å îáíîâëÿåì ðàçìåðû ýêðàíà
 
91,7 → 174,7
call run_command
pop ecx
 
jmp START
jmp dword[backAdr]
Ytrue:
;åñëè Y ðàâíû, òî íàñ èíòåðåñóåò X=0 (ëåâûé íèæíèé óãîë) èëè X=ScreenWidth (ïðàâûé íèæíèé)
shr eax, 16
102,7 → 185,7
mov ecx, 1
call run_command
pop ecx
jmp START
jmp dword[backAdr]
@@:
cmp ax, word[screen.width]
jne unlockend
112,17 → 195,14
call run_command
pop ecx
 
jmp START
jmp dword[backAdr]
 
unlockend:
mov byte[state], UNLOCKd
jmp START
jmp dword[backAdr]
 
 
;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà
screen:
.width dw 0
.height dw 0
 
;ïîëó÷èòü ðàçìåð ýêðàíà
get_screen_size:
push eax
136,29 → 216,22
ret
 
 
;ïîëó÷èòü ïîçèöèþ ìûøè
get_mouse_pos:
;push eax
push ebx
mcall 37, 0
pop ebx
;pop eax
ret
 
 
 
;çàïóñê ïðèëîæåíèÿ: ecx - àêòèâíûé óãîë: lu=0, ld=1, ru=2, rd=3
run_command:
cmp byte[state], UNLOCKd
jne run_command.end
 
push eax
push ebx
push ecx
; cmp byte[mode], 2 ;åñëè ðåæèì âòîðîé
; jne @f
 
push eax ebx ecx
 
cmp ecx, 0
jne @f
mov eax, dword[newData.lu] ;testData.lu
mov eax, dword[newData.lu]
mov dword[struct70.path_adr], eax
jmp .end_set_path
@@:
196,10 → 269,9
mcall 70, struct70
@@:
mov byte[state], LOCKd
;mov byte[keyState], 0
 
pop ecx
pop ebx
pop eax
pop ecx ebx eax
.end:
ret
 
211,23 → 283,6
.path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
.path_adr dd 0 ;testData.lu
 
 
state: db 0 ; 0=unlock, 1=lock
mode: db 0 ;ðåæèì ðàáîòû (äëÿ áóäóùåãî ðàñøèðåíèÿ ôóíêöèîíàëà)
 
;testData:
; .lu db '/rd/1/SHELL', 0
; .ld db '/rd/1/RUN', 0
; .ru db "/rd/1/TINYPAD", 0
; .rd db '/rd/1/File Managers/EOLITE', 0
 
newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
.lu dd 0
.ld dd 0
.ru dd 0
.rd dd 0
newDataEnd:
 
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
 
242,9 → 297,26
 
add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà
 
cmp byte[eax], 121 ;'y' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî
jne loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
mov byte[mode], 0
cmp byte[eax], '0' ;121 ;'y' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî
je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
cmp byte[eax], 110 ;'n'
je loadConfig.exit
 
;èíà÷å âûñòàâëÿåì ðåæèì
cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå
jne @f
mov byte[mode], 2
jmp loadConfig.modeEnd
@@:
cmp byte[eax], '3' ;ðåæèì æåñòà ïðè çàæàòîé êëàâèøå
jne @f
mov byte[mode], 3
jmp loadConfig.modeEnd
@@:
mov byte[mode], 1 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì
.modeEnd:
 
push edi
push esi
; ñîõðàíÿåì â edi óêàçàòåëü íà íà÷àëî òàáëèöû àäðåñîâ íàøèõ êîìàíä
316,7 → 388,7
;
compareBytes:
push edi esi ecx ebx
mov eax, 0 ;xor eax, eax
xor eax, eax
mov ecx, selfNameSize ;max ðàçìåð ñòðîê 11
@@:
mov bl, byte[edi]
334,9 → 406,6
pop ebx ecx esi edi
ret
;
slotMax dd 0
selfPID dd 0
buf db 1024 dup(0)
copyKill:
push eax ebx ecx esi edi
 
380,5 → 449,31
ret
 
 
keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè
keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà
 
backAdr rd 1 ;dd 0 ; àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè
 
;slotMax dd 0
;selfPID dd 0
;buf db 1024 dup(0)
slotMax rd 1
selfPID rd 1
buf rb 1024
 
;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà
screen:
.width rw 1 ;dw 0
.height rw 1 ;dw 0
 
state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock
mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå
 
newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
.lu rd 1
.ld rd 1
.ru rd 1
.rd rd 1
newDataEnd:
 
I_END:
/programs/other/ha/ReadMe.txt
1,6 → 1,6
Hot Angles
 
Version 0.3.3: Sep 25, 2018
Version 0.3.5: Oct 5, 2018
RU
 
Êîìïëåêò óòèëèò (àíàëîã Hot Corners â äðóãèõ ÎÑ) äëÿ ðàñøèðåíèÿ âîçìîæíîñòåé ðàáî÷åãî ñòîëà ïîëüçîâàòåëÿ. Íàçâàíèå âûáðàíî ïóò¸ì ãîëîñîâàíèÿ.  êîìïëåêò âõîäÿò äâå óòèëèòû:
7,7 → 7,10
@HOTANGLES - îñíîâíàÿ óòèëèòà, ïîçâîëÿþùàÿ çàïóñêàòü ïðèëîæåíèÿ ïóò¸ì íàâåäåíèÿ êóðñîðà â óãîë ýêðàíà (óãîë ðàáî÷åé îáëàñòè);
HACONFIG - óòèëèòà êîíôèãóðàòîð, ïîçâîëÿþùàÿ íàñòðîèòü äåéñòâèÿ íà êàæäûé óãîë è àêòèâèðîâàòü/äåàêòèâèðîâàòü ýòó îïöèþ.
Ôàéë êîíôèãóðàöèè: RD/1/SETTINGS/HOTANGLES.CFG (ãäå RD/1/ ýòî òîò æå SYS - ïóòü ê ñèñòåìíîé äèðåêòîðèè). Ôàéë ñîñòîèò èç ïÿòè ñòðîê:
1) ñîñòîÿíèå àêòèâíîñòè îïöèè: y - îïöèÿ àêòèâíà, n èëè ëþáîé äðóãîé ñèìâîë - îïöèÿ îòêëþ÷åíà;
1) ñîñòîÿíèå àêòèâíîñòè îïöèè (îäèí ñèìâîë):
1 èëè y - îïöèÿ àêòèâíà, àêòèâèðîâàí êëàññè÷åñêèé ðåæèì ðàáîòû óãîëêîâ,
2 - îïöèÿ àêòèâíà, àêòèâèðîâàí ðåæèì ðàáîòû ïî ãîðÿ÷åé êëàâèøå,
n èëè ëþáîé äðóãîé ñèìâîë - îïöèÿ îòêëþ÷åíà;
2) êîìàíäà (ïîëíîå èìÿ ïðèëîæåíèÿ) äëÿ âåðõíåãî ëåâîãî óãëà ýêðàíà;
3) êîìàíäà (ïîëíîå èìÿ ïðèëîæåíèÿ) äëÿ ëåâîãî íèæíåãî óãëà ýêðàíà;
4) êîìàíäà (ïîëíîå èìÿ ïðèëîæåíèÿ) äëÿ ïðàâîãî âåðõíåãî óãëà ýêðàíà;
19,16 → 22,38
@HOTANGLES íå çàïóñòèòñÿ, åñëè êîíôèãóðàöèîííûé ôàéë îòñóòñòâóåò èëè áûë ïåðåèìåíîâàí.
HACONFIG ïðè îòñóòñòâèè êîíôèãóðàöèîííîãî ôàéëà âûñòàâëÿåò âñå ïîëÿ ïî óìîë÷àíèþ, íî íå ñîçäà¸ò ôàéë êîíôèãóðàöèè ñàìîñòîÿòåëüíî (äëÿ ýòîãî íåîáõîäèìî íàæàòü êíîïêó "Ïðèìåíèòü", òîãäà îòñóòñòâóþùèé ôàéë êîíôèãóðàöèè áóäåò ñîçäàí, à ñóùåñòâóþùèé ïåðåçàïèñàí).
Ïðè ïåðâîì ñòàðòå óòèëèòû âñå óãëû ðàáî÷åé îáëàñòè íàñòðîåíû íà çàïóñê êîíôèãóðàòîðà, ãäå âû ìîæåòå íàñòðîèòü óòèëèòó ïîä ñåáÿ èëè îòêëþ÷èòü å¸.
Hot Angles íà÷èíàÿ ñ revision #7392 âêëþ÷åí â ñîñòàâ äèñòðèáóòèâà è äîáàâëåí â àâòîçàïóñê ïðè ñòàðòå ñèñòåìû. Ïîääåðæêà ðóññêîãî ÿçûêà äîáàâëåíà â revision #7395.
Hot Angles íà÷èíàÿ ñ revision #7392 âêëþ÷åí â ñîñòàâ äèñòðèáóòèâà è äîáàâëåí â àâòîçàïóñê ïðè ñòàðòå ñèñòåìû. Ïîääåðæêà ðóññêîãî ÿçûêà äîáàâëåíà â revision #7395. Íà÷èíàÿ ñ âåðñèè 0.3.5 äîáàâëåí âòîðîé ðåæèì ðàáîòû óòèëèòû è âîçìîæíîñòü âûáîðà ïðîãðàìì ÷åðåç Open Dialog.
 
 äèðåêòîðèè extra, ðÿäîì ñ èñõîäíûì êîäîì óòèëèò, ðàñïîëîæåíû äîïîëíèòåëüíûå ôóíêöèîíàëüíûå áëîêè. Íà òåêóùèé ìîìåíò äèðåêòîðèÿ ñîäåðæèò: 1 óòèëèòó.
MIN - ìèíèìèçèðîâàòü/ñâåðíóòü âñå îêíà (êðîìå ñèñòåìíûõ). Âû ìîæåòå íàçíà÷èòü çàïóñê MIN íà ëþáîé àêòèâíûé óãîë âàøåãî ðàáî÷åãî ñòîëà, ÷òîáû îäíèì äâèæåíèåì êóðñîðà â ýòîò óãîë ñâåðíóòü âñå îêíà íà ýêðàíå.
Ñì. ïîäðîáíåå ðàçäåë "Extra-ðàñøèðåíèÿ ôóíêöèîíàëüíîñòè".
 
 
Ðåæèìû ðàáîòû:
--------------------------------------------------
Òåêóùàÿ âåðñèÿ êîíôèãóðàòîðà è óòèëèòû ðàáîòàþò ñòàáèëüíî òîëüêî â êëàññè÷åñêîì ðåæèìå.
 êëàññè÷åñêîì ðåæèìå óãîë àêòèâèðóåòñÿ ïóò¸ì íàâåäåíèÿ êóðñîðà. Âñ¸ ïðîèñõîäèò àâòîìàòè÷åñêè. Âû íàâîäèòå ìûøü â çàäàííûé óãîë ðàáî÷åãî ñòîëà, è çàïóñêàåòñÿ ïðèëîæåíèå, ñâÿçàííîå ñ ýòèì óãëîì.
Ýòîò ðåæèì àêòèâèðóåòñÿ ñèìâîëîì '1' èëè ñèìâîëîì 'y' â íà÷àëå êîíôèãóðàöèîííîãî ôàéëà.
 
Íà÷èíàÿ ñ âåðñèè 0.3.5 óòèëèòà @HOTANGLES ïîääåðæèâàåò âòîðîé ðåæèì ðàáîòû - àêòèâàöèþ óãëîâ ïî ãîðÿ÷åé êëàâèøå. Ýòà ôóíêöèîíàëüíîñòü òåñòèðóåòñÿ, ïîýòîìó íàñòðîèòü å¸ ÷åðåç êîíôèãóðàòîð íåëüçÿ.
Àêòèâèðóåòñÿ ðåæèì ñèìâîëîì '2' â íà÷àëå êîíôèãóðàöèîííîãî ôàéëà. Èçìåíèòü êëàâèøó àêòèâàöèè íåëüçÿ, ïî óìîë÷àíèþ ýòî ñèìâîë òèëüäà '~' èëè '`'.  ýòîì ðåæèìå äëÿ àêòèâàöèè óãëà òðåáóåòñÿ çàæàòü êëàâèøó òèëüäà è, îäíîâðåìåííî ñ ýòèì, íàâåñòè êóðñîð â íóæíûé óãîë ðàáî÷åãî ñòîëà.
 
 
Ïðî÷èå ðåêîìåíäàöèè:
Íåêîòîðûì ïîëüçîâàòåëÿì ìîæåò áûòü óäîáíî íàñòðîèòü îòêðûòèå ìåíþ ïðè ïîïàäàíèè â óãîë åãî ðàñïîëîæåíèÿ. Íàïðèìåð, åñëè ó âàñ êíîïêà "Ìåíþ" ðàññïîëîæåíà â ëåâîì íèæíåì óãëó, òî çàäàéòå äëÿ ýòîãî óãëà êîìàíäó:
--------------------------------------------------
Íåêîòîðûì ïîëüçîâàòåëÿì ìîæåò áûòü óäîáíî íàñòðîèòü îòêðûòèå ìåíþ ïðè ïîïàäàíèè â óãîë åãî ðàñïîëîæåíèÿ. Íàïðèìåð, åñëè ó âàñ êíîïêà "Ìåíþ" ðàñïîëîæåíà â ëåâîì íèæíåì óãëó, òî çàäàéòå äëÿ ýòîãî óãëà êîìàíäó:
/rd/1/@MENU
 
 
Extra-ðàñøèðåíèÿ ôóíêöèîíàëüíîñòè:
--------------------------------------------------
Óòèëèòà MIN - ñâîðà÷èâàåò îêíà íà ðàáî÷åì ñòîëå (êðîìå îêîí ñèñòåìíûõ ïðîöåññîâ ñ èìåíåì, íà÷èíàþùèìñÿ ñ ñèìâîëà @). MIN ìîæíî íàçíà÷èòü êàê äåéñòâèå äëÿ çàïóñêà â Hot Angles, òîãäà ïðè íàâåäåíèè êóðñîðà â çàäàííûé óãîë âñå îêíà áóäóò ñâ¸ðíóòû. MIN, êàê è îñòàëüíûå (extra-ðàñøèðåíèÿ) ôóíêöèîíàëüíûå áëîêè, íå âõîäèò â äèñòðèáóòèâ. Ê òîìó æå óòèëèòà î÷åíü ïðîñòà è äóáëèðóåò ôóíêöèîíàë ïàíåëè çàäà÷ (taskbar). Êàæäûé ñàì ðåøàåò î íåîáõîäèìîñòè å¸ èñïîëüçîâàíèÿ.
ÑÊÀ×ÀÒÜ MIN (rev.7417):
http://websvn.kolibrios.org/dl.php?repname=Kolibri+OS&path=%2Fprograms%2Fother%2Fha%2Fextra%2FMIN&rev=7417&peg=7417
 
 
Âëèÿíèå íà ïðîèçâîäèòåëüíîñòü:
--------------------------------------------------
Åñëè âû èñïîëüçóåòå ñèñòåìó â çàäà÷àõ ðåàëüíîãî âðåìåíè èëè â çàäà÷àõ ñ âûñîêîé íàãðóçêîé íà CPU îòêëþ÷èòå ýòó îïöèþ. Òàê æå, åñëè âû æåëàåòå äîáèòüñÿ ìàêñèìàëüíîé ñêîðîñòè ðàáîòû ÎÑ, òî èñïîëüçîâàíèå ýòîé îïöèè íå ðåêîìåíäóåòñÿ.
Ïðèëîæåíèå ìîæåò óâåëè÷èâàòü íàãðóçêó íà ñèñòåìó â äâà ðàçà ïðè îáû÷íîì èñïîëüçîâàíèè ìûøè (ïåðåìåùåíèå êóðñîðà, êëèêè â îïðåäåë¸ííûõ îáëàñòÿõ ýêðàíà).
Ïðè âûïîëíåíèè îñíîâíîé ôóíêöèè (çàïóñê ëþáîãî ïðèëîæåíèÿ ïðè íàâåäåíèè êóðñîðà â óãîë ýêðàíà) íàãðóçêà íà ñèñòåìó âîçðàñòàåò åñòåñòâåííûì îáðàçîì.
42,7 → 67,7
[-] ïîâðåæäåíèå ôàéëà êîíôèãóðàöèè ïîñëå ìíîãîêðàòíîãî âêë./âûêë. îïöèè Hot Angles;
[-] ðåæèì ÿâíîé êîìàíäû êëàâèøåé àêòèâàöèè: çàæèìàåì ãîðÿ÷óþ êëàâèøó (íàïðèìåð, shift), íàâîäèì êóðñîð â óãîë - ïðîèñõîäèò ðåàêöèÿ;
[-] ðåæèì æåñòà/íàïðàâëåíèÿ: çàæèìàåì àêòèâèðóþùóþ êëàâèøó, ïîñëå ýòîãî ïðèëîæåíèå àíàëèçèðóåò ìûøü, â çàâèñèìîñòè îò íàïðàâëåíèÿ äâèæåíèÿ ìûøè (îò íà÷àëüíûõ êîîðäèíàò â ìîìåíò àêòèâàöèè îïöèè) âûáèðàåòñÿ àêòèâèðóåìûé óãîë - ïðîèñõîäèò ðåàêöèÿ;
[-] äîáàâèòü äèàëîã âûáîðà ïóòè OpenDialog â êîíôèãóðàòîðå;
[+] äîáàâèòü äèàëîã âûáîðà ïóòè OpenDialog â êîíôèãóðàòîðå;
[+] ïåðåõîä íà EditBox èç áèáëèîòåêè box_lib;
[+] ðàçìàçûâàíèå òåêñòà èëè åãî íàñëîåíèå ïðè ââîäå â ïîëå EditBox'à;
[+] ïîñëå çàïóñêà ïðèëîæåíèÿ, âñå ïîëÿ íàõîäÿòñÿ â ôîêóñå (ýòî ôè÷à èç-çà áàãà â êîìïîíåíòå EditBox);
/programs/other/ha/SETTINGS/HOTANGLES.CFG
1,4 → 1,4
y
1
/rd/1/HACONFIG
/rd/1/HACONFIG
/rd/1/HACONFIG