Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7442 → Rev 7443

/programs/other/ha/HACONFIG.ASM
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