/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 |