2,7 → 2,7 |
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; Version 0.3.5: Oct 5, 2018 |
; Version 0.3.6: Oct 9, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
45,11 → 45,13 |
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 |
;!] |
|
KMENUITEM_NORMAL equ 0 |
KMENUITEM_SUBMENU equ 1 |
KMENUITEM_SEPARATOR equ 2 |
|
Otstup = 30 |
|
START: |
67,7 → 69,7 |
or eax, eax |
jnz exit |
|
invoke init_checkbox, ch1 |
;invoke init_checkbox, ch1 |
|
mov eax,40 ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé |
mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè) |
77,6 → 79,20 |
;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà |
|
;mode menu |
stdcall [kmenu_init], sc ;kmenu initialisation |
stdcall [ksubmenu_new] |
mov [modeMenu], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110 |
stdcall [ksubmenu_add], [modeMenu], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111 |
stdcall [ksubmenu_add], [modeMenu], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112 |
stdcall [ksubmenu_add], [modeMenu], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113 |
stdcall [ksubmenu_add], [modeMenu], eax |
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu] |
|
call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ |
call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèÿ |
|
101,7 → 117,8 |
invoke edit_box_mouse, editLD |
invoke edit_box_mouse, editRU |
invoke edit_box_mouse, editRD |
invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà |
;invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà |
;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëÿ êîìáîáîêñà |
|
jmp event_wait |
|
159,6 → 176,43 |
call but_open_dlg |
jmp event_wait |
@@: |
cmp ah, 8 |
jne @f |
push eax ebx ecx |
mcall 9, pi, -1 ;get window coord |
|
mov eax, dword[pi+34] |
add eax, buttonModeX ;+ 5 |
mov word[coordModeMenu.x], ax |
|
mov eax, dword[pi+38] |
add eax, buttonModeY + 17 ;20 ;42 |
mov word[coordModeMenu.y], ax |
|
stdcall [ksubmenu_draw], [modeMenu], coordModeMenu |
pop ecx ebx eax |
jmp event_wait |
@@: |
cmp ah, 110 |
jne @f |
mov byte[mode], 48 ;'0' |
jmp event_wait |
@@: |
cmp ah, 111 |
jne @f |
mov byte[mode], 49 ;'1' |
jmp event_wait |
@@: |
cmp ah, 112 |
jne @f |
mov byte[mode], 50 ;'2' |
jmp event_wait |
@@: |
cmp ah, 113 |
jne @f |
mov byte[mode], 51 ;'3' |
jmp event_wait |
@@: |
butend: |
jmp event_wait ;this is for ignored events, useful at development |
|
255,11 → 309,17 |
;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], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y' |
.no: |
|
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì |
mov bl, byte[mode] |
mov byte[eax], bl |
pop ebx |
|
;; 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], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y' |
;;.no: |
inc eax |
call addPerenos |
|
414,17 → 474,37 |
add edx, eax ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ |
|
.chStart: |
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 |
|
push ebx |
mov bl, byte[eax] |
cmp bl, 48 ; åñëè çíà÷åíèå âûõîäèò çà äîïóñòèìûå ïðåäåëû, òî ïðîâåðÿåì íà 'n' (äëÿ ñîâìåñòèìîñòè) |
jb loadConfig.checkN |
cmp bl, 51 |
ja loadConfig.checkN |
|
mov byte[mode], bl ;èíà÷å óñòàíàâëèâàåì ýòîò ðåæèì êàê åñòü |
jmp loadConfig.modeEnd ;è èä¸ì äàëüøå |
.checkN: |
cmp bl, 'n' ;åñëè n - òî ðåæèì "îòêëþ÷åíî" |
jne @f |
mov byte[mode], 48 ;'0' |
jmp loadConfig.modeEnd |
@@: |
cmp byte[eax], 50;'2' ;âòîðîé ðåæèì àêòèâèðîâàí |
je loadConfig.yes |
.no: |
mov word[ch1.flags], 100b ;ch_flag_middle |
.chEnd: |
mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷¸í êëàññè÷åñêèé ðåæèì ðàáîòû |
.modeEnd: |
pop ebx |
|
;; 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: |
;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
|
;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð |
644,7 → 724,7 |
invoke edit_box_draw, editRU |
invoke edit_box_draw, editRD |
|
invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
;invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
|
;ðèñóåì êíîïêó |
mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè |
705,6 → 785,28 |
mcall 4 |
|
|
;delete mode button, if it exist |
mov edx, 0x80000008 |
mcall 8 |
;draw button Mode |
buttonModeX = 30 ;433 |
buttonModeY = 160 ;50 |
buttonModeWidth = 221 |
buttonModeHeight = 20 |
buttonModeTextXoffset = 5 |
mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width |
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
mov edx, 0x00000008 ;button id |
mov esi, 0x00AABBCC ;color button |
mcall 8 |
;draw text for button Mode |
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+6) ;(x, y) |
mov ecx, 0xFFFFFF |
call setTextModeMenu |
mov esi, valueModeMenuSize |
mcall 4 |
|
|
call draw_super_text |
|
LineLength = 62 |
728,6 → 830,29 |
ret |
|
|
setTextModeMenu: |
cmp byte[mode], 48 |
jne @f |
mov edx, valueModeMenu0 |
ret |
@@: |
cmp byte[mode], 49 |
jne @f |
mov edx, valueModeMenu1 |
ret |
@@: |
cmp byte[mode], 50 |
jne @f |
mov edx, valueModeMenu2 |
ret |
@@: |
cmp byte[mode], 51 |
jne @f |
mov edx, valueModeMenu3 |
ret |
@@: |
mov edx, valueModeMenu1 |
ret |
|
|
align 16 |
749,7 → 874,7 |
;DATA äàííûå check_box èñïîëüçóåò ñèñòåìíûå öâåòà |
|
;êîîðäèíàòû (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 |
;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 |
774,6 → 899,13 |
.rd db '®¬ ¤ ¯à ¢®£® ¨¦¥£® 㣫 : ', 0 |
superTextSize = 30 |
|
valueModeMenuSize = 32 |
ModeMenu db '¥¦¨¬ à ¡®âë:',0 |
valueModeMenu0 db '®âª«î祮 ',0 |
valueModeMenu1 db 'ª« áá¨ç¥áª¨© ०¨¬ ',0 |
valueModeMenu2 db '०¨¬ £®àï祩 ª« ¢¨è¨ ',0 |
valueModeMenu3 db '०¨¬ ¦¥áâ ¯® ª« ¢¨è¥ ªâ¨¢ 樨',0 |
|
else ;èíà÷å àíãëèéñêèé òåêñò |
|
text db "This is a Hot Angles Configurator. " |
794,6 → 926,13 |
.rd db 'Right down angle command:', 0 |
superTextSize = 25 |
|
valueModeMenuSize = 32 |
ModeMenu db 'Mode:',0 |
valueModeMenu0 db 'disabled ',0 |
valueModeMenu1 db 'classic mode ',0 |
valueModeMenu2 db 'hot key mode ',0 |
valueModeMenu3 db 'activation key gesture mode ',0 |
|
end if |
|
|
821,6 → 960,12 |
mov esi, superTextSize |
mcall 4 |
|
mov ebx, Otstup * 65536 + (buttonModeY-11) |
or ecx, 0x80000000 |
mov edx, ModeMenu |
mov esi, 3 |
mcall 4 |
|
pop esi edi edx ecx ebx eax |
ret |
|
949,12 → 1094,17 |
Filter: |
dd Filter.end - Filter.1 |
.1: |
;db 'ASM',0 |
;db 'KEX',0 |
;db 'TXT',0 |
.end: |
db 0 |
|
mode db 49 ;'1' |
modeMenu dd 0 |
coordModeMenu: |
.x dw 100 |
.y dw 200 |
|
|
align 4 |
proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé |
OpenDialog_Init dd aOpenDialog_Init |
967,28 → 1117,20 |
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 |
err_message_found_lib1 db 'Íå íàéäåíà áèáëèîòåêà ',39,'kmenu.obj',39,0 ;'¥ ©¤¥ ¡¨¡«¨®â¥ª ' |
err_message_import1 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'kmenu',39,0 ;'訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ' |
|
system_dir0 db '/sys/lib/' |
lib0_name db 'proc_lib.obj',0 |
lib1_name db 'kmenu.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 |
lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,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 |
|
998,9 → 1140,45 |
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 |
|
align 4 |
import_libkmenu: |
kmenu_init dd akmenu_init |
kmainmenu_draw dd akmainmenu_draw |
kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent |
ksubmenu_new dd aksubmenu_new |
ksubmenu_delete dd aksubmenu_delete |
ksubmenu_draw dd aksubmenu_draw |
ksubmenu_add dd aksubmenu_add |
kmenuitem_new dd akmenuitem_new |
kmenuitem_delete dd akmenuitem_delete |
kmenuitem_draw dd akmenuitem_draw |
dd 0,0 |
akmenu_init db 'kmenu_init',0 |
akmainmenu_draw db 'kmainmenu_draw',0 |
akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 |
aksubmenu_new db 'ksubmenu_new',0 |
aksubmenu_delete db 'ksubmenu_delete',0 |
aksubmenu_draw db 'ksubmenu_draw',0 |
aksubmenu_add db 'ksubmenu_add',0 |
akmenuitem_new db 'kmenuitem_new',0 |
akmenuitem_delete db 'kmenuitem_delete',0 |
akmenuitem_draw db 'kmenuitem_draw',0 |
|
mouse_dd dd ? |
sc system_colors |
|
button_press rd 0 ;for kmenu |
|
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 |
pi rb 1024 |
|
|
dataBuffer: |
.1: rb 512 |
.2: rb 512 |