Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4082 → Rev 4081

/programs/system/icon_new/@icon.asm
847,8 → 847,8
ret
@@:
 
mov ebx,ecx
dec ebx
xor ebx,ebx
mov ebx,[NumIconI]
.TestIcon:
cmp dword[NumIconI],-1
je @f
855,7 → 855,7
 
cmp ebx,[NumIconI]
jne @f
dec ebx
inc ebx
dec ecx
test ecx,ecx
jz .NoIcon
903,12 → 903,12
jmp .OkIcon
@@:
 
dec ebx
inc ebx
pop ecx
 
loop .TestIcon
;dec ecx
;jnz .TestIcon
;loop .TestIcon
dec ecx
jnz .TestIcon
jmp .NoIcon
.OkIcon:
mov eax,ebx
1220,12 → 1220,10
PredItem dd -1
 
if lang eq ru
RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
RMenuOnMoving db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
RMenuAlign db '‚ë஢­ïâì ¯® á¥âª¥',0
 
RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
RMenuOnMoving db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
 
RMenuAdd db '„®¡ ¢¨âì',0
RMenuDel db '“¤ «¨âì',0
RMenuProp db '‘¢®©á⢠',0
1393,6 → 1391,8
DlgBufImg rb IMG_SIZE*IMG_SIZE*3
 
 
 
 
bufStdIco rb 40
IconsOffs rd 100
PIcoDB rd 1
1406,11 → 1406,9
cur_band_compensation rd 1
 
;---- RButton -----------------------------------------------------------------------
MinRMenuW rd 1
 
bufIni rb 40
NumMenuButt rd 1
RBMenuCP rd MAX_USER_BUTTONS*2 ;㪠§ â¥«¨ ­  ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ á­®© (dd) ¤«ï § ¢¥àè î饣® ­ã«ï
NumUserButt rd 1
RBUser rd 16*2+1
RMenuW rw 1
RMenuH rw 1
 
/programs/system/icon_new/RButton.inc
1,25 → 1,20
if lang eq ru
MinRMenuW equ 18*6+10
else
MinRMenuW equ 15*6+10
end if
 
;idbRRedrawFon equ 100
;idbRAlign equ 101
;idbRFixIcons equ 102
;idbRAdd equ 103
;idbRDel equ 104
;idbRProp equ 105
idbRRedrawFon equ 100
idbRAlign equ 101
idbRFixIcons equ 102
idbRAdd equ 103
idbRDel equ 104
idbRProp equ 105
 
DELTA_COLOR equ 70
COLOR_SEL_BUT equ 00F7092Dh
MAX_USER_BUTTONS equ 30
 
;---- thread for rbutton -----------------------------------------------------------------------
RButtonWin:
if lang eq ru
mov [MinRMenuW],18*6+10
else
mov [MinRMenuW],15*6+10
end if
 
 
 
mcall 40,100101b ;SetMaskMessage 100101b
mcall 48,3,sc,40
 
62,90 → 57,32
stdcall GetNumIcon,[MouseX],[MouseY],-1
mov [SelIcon],eax
 
;¢ëáâ ¢«ï¥¬ ¯¥à¢®­ ç «ì­ë¥ §­ ç¥­¨ï
m2m [RMenuW],[MinRMenuW]
 
cmp [SelIcon],-1
jne .RBW1
;----------- ¥á«¨ ª«¨ª ­¥ ¯® ¨ª®­ª¥ ------------------------------------------------
mov [NumMenuButt],0
 
mov [NumUserButt],0
mov [RMenuW],0
mcall 70,fiIni
mcall 68,12,dword[bufIni+32] ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¯®¤¯¨á¥© ¨ ¯ã⥩ § ¯ã᪠
mov [RBMenuCP],eax ;GetUserBut ¡¥àñâ ®âá ¯¥à¢®­ ç «ì­ë© 㪠§ â¥«ì ­  ¯ ¬ïâì
mcall 68,12,dword[bufIni+32]
mov [RBUser],eax
stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut
 
mov ebx,[NumMenuButt]
add [NumMenuButt],4
 
mov [RBMenuCP+ebx*8],RMenuRedrawFon
mov [RBMenuCP+ebx*8+8],RMenuAlign
cmp [bFixIcons],1
je @f
mov [RBMenuCP+ebx*8+16],RMenuOffMoving
jmp .RBW11
@@:
mov [RBMenuCP+ebx*8+16],RMenuOnMoving
.RBW11:
 
mov [RBMenuCP+ebx*8+24],RMenuAdd
 
mov [RBMenuCP+ebx*8+4],0
mov [RBMenuCP+ebx*8+8+4],0
mov [RBMenuCP+ebx*8+16+4],0
mov [RBMenuCP+ebx*8+24+4],0
 
 
jmp .RBW2
;----------- ¥á«¨ ª«¨ª ¯® ¨ª®­ª¥ ------------------------------------------------
.RBW1:
xor ebx,ebx
mov [NumMenuButt],5
 
mov [RBMenuCP+ebx*8],RMenuRedrawFon
mov [RBMenuCP+ebx*8+8],RMenuAlign
cmp [bFixIcons],1
je @f
mov [RBMenuCP+ebx*8+16],RMenuOffMoving
jmp .RBW21
@@:
mov [RBMenuCP+ebx*8+16],RMenuOnMoving
.RBW21:
mov [RBMenuCP+ebx*8+24],RMenuDel
mov [RBMenuCP+ebx*8+32],RMenuProp
 
mov [RBMenuCP+ebx*8+4],0
mov [RBMenuCP+ebx*8+8+4],0
mov [RBMenuCP+ebx*8+16+4],0
mov [RBMenuCP+ebx*8+24+4],0
mov [RBMenuCP+ebx*8+32+4],0
 
;-------------------------------------------------------------------------------
.RBW2:
 
cmp [SelIcon],-1
jne @f
mov eax,[NumMenuButt]
mov [RMenuH],16*4
mov eax,[NumUserButt]
shl eax,4
mov [RMenuH],ax
add [RMenuH],ax
jmp .rbw1
@@:
mov [RMenuH],16*5
.rbw1:
 
add [RMenuW],3 ;­  à ¬ªã
add [RMenuH],3 ;­  à ¬ªã
 
RBWRedraw:
mcall 12,1 ;RedrawWinBeg
mov ebx,[MouseX]
shl ebx,16
mov bx,[RMenuW]
 
mov ecx,[MouseY]
shl ecx,16
mov cx,[RMenuH]
 
mov edx,01000000h
mov esi,01000000h
xor eax,eax
157,14 → 94,16
inc cx
mcall 13,,,[sc.work]
 
;----------- ®¯à¥¤¥«ï¥¬ ¨ à¨á㥬 ª­®¯ª¨
mov ecx,[NumMenuButt]
cmp [SelIcon],-1 ;¥á«¨ ª«¨ª ¯® ¨ª®­ª¥, â® ¯ã­ªâë ¯®«ì§®¢ â¥«ï ­¥ ­ã¦­ë
jne .NoDrawUserBut
;-----------
mov ecx,[NumUserButt]
.DrawUB:
push ecx
 
mov eax,[NumMenuButt]
mov eax,[NumUserButt]
sub eax,ecx
mov edx,eax ;button ID = ®â 0 ¤® NumMenuButt
mov edx,eax ;button ID
or edx,60000000h
shl eax,4+16 ;*16*10000h
mov ecx,eax
175,65 → 114,97
mov esi,[sc.work]
mcall 8 ;®¯à¥¤¥«¨«¨
 
mov ebx,70000h
mov ebx,50000h
shr ecx,16
mov bx,cx
add bx,7
add bx,5
 
mov ecx,80000000h
 
mov eax,[NumMenuButt]
mov eax,[NumUserButt]
sub eax,[esp]
mov edx,[RBMenuCP+eax*8]
mov edx,[RBUser+eax*8]
mcall 4 ;¯®¤¯¨á «¨
 
pop ecx
loop .DrawUB
;---------------
 
; ®¡à ¬«ïî騩 ¯àאַ㣮«ì­¨ª
xor ebx,ebx ;¢¥àå
;-----------
.NoDrawUserBut:
;®¯à¥¤¥«¥­¨¥ ª­®¯®ª ¤«ï ¨ª®­®ª
xor ebx,ebx
mov bx,[RMenuW]
xor ecx,ecx
mcall 38,,,[sc.workL]
 
mov bx,[RMenuW] ;¯à ¢®
shl ebx,16
mov bx,[RMenuW]
xor ecx,ecx
mov cx,[RMenuH]
mcall
 
xor ebx,ebx ;­¨§
mov bx,[RMenuW]
mov cx,[RMenuH]
xor eax,eax
cmp [SelIcon],-1
jne @f
mov eax,[NumUserButt]
@@:
shl eax,4
mov cx,ax
shl ecx,16
mov cx,[RMenuH]
mcall
mov cx,16
push ecx ;®âá à¨á®¢ âì ª­®¯ª¨ (¯® ¢ëá®â¥)
 
xor ebx,ebx ;«¥¢®
xor ecx,ecx
mov cx,[RMenuH]
mcall
 
mcall 8,,,60000000h or idbRRedrawFon,[sc.work]
add ecx,16*10000h
mcall ,,,60000000h or idbRAlign
add ecx,16*10000h
mcall ,,,60000000h or idbRFixIcons
add ecx,16*10000h
 
; ᢥâ«ë© «¥¢ë© ¢¥àå­¨© 㣮«
xor ebx,ebx
mov bx,[RMenuW]
add ebx,1*10000h-1
mov ecx,00010001h
mcall ,,,[sc.workH]
cmp dword[SelIcon],-1
je @f
 
mov ebx,00010001h
xor ecx,ecx
mov cx,[RMenuH]
add ecx,1*10000h-1
mcall ,,,60000000h or idbRDel,
add ecx,16*10000h
mcall ,,,60000000h or idbRProp,
jmp .endRM1
@@:
mcall ,,,60000000h or idbRAdd,
.endRM1:
 
;¯®¤¯¨á¨ ª ª­®¯ª ¬
xor eax,eax
cmp [SelIcon],-1
jne @f
mov eax,[NumUserButt]
@@:
shl eax,4
mov ebx,50000h
mov bx,ax
 
add bx,5
mcall 4,,80000000h,RMenuRedrawFon
add ebx,16
mcall ,,,RMenuAlign
 
add ebx,16
cmp [bFixIcons],0
jne @f
mov edx,RMenuOffMoving
jmp .RBWR1
@@:
mov edx,RMenuOnMoving
.RBWR1:
mcall
add ebx,16
 
cmp dword[SelIcon],-1
je @f
 
;ª®­¥æ à¨á®¢ ­¨ï
mcall ,,,RMenuDel
add bx,16
mcall ,,,RMenuProp
jmp .endRM2
@@:
 
mcall ,,,RMenuAdd
.endRM2:
 
pop ecx
mcall 12,2 ;RedrawWinEnd
;-------------------------------------------------------------------
 
mcall 9,RBProcInfo,-1 ;GetThreadInfo RBProcInfo,-1
mcall 18,21,dword[RBProcInfo+30]
252,86 → 223,67
RBWButton:
mcall 17 ;GetButtonPressed
shr eax,8
 
mov ebx,eax
mov eax,[RBMenuCP+ebx*8+4] ;¥á«¨ ᤥáì 0, â® ª«¨ª ¯® áâ ­¤ àâ­®© ª­®¯ª¥(ª®â®à ï ­¥ ¢ ini)
test eax,eax
jnz .RBWB
mov eax,[RBMenuCP+ebx*8] ;ᬮâਬ, 㪠§ â¥«ì ­  ª ªãî ­ ¤¯¨áì ¢ ¯®¤¯¨á¨
cmp eax,RMenuRedrawFon ; ¨ ¯® ­¥© ¢ë¡¨à ¥¬ ¤¥©á⢨¥
cmp eax,idbRRedrawFon
jz RBRedrawFon
cmp eax,RMenuAlign
cmp eax,idbRAlign
jz RBAlign
cmp eax,RMenuOffMoving
cmp eax,idbRFixIcons
jz RBFixIcons
cmp eax,RMenuOnMoving
jz RBFixIcons
cmp eax,RMenuAdd
cmp eax,idbRAdd
jz RBAdd
cmp eax,RMenuDel
cmp eax,idbRDel
jz RBDelete
cmp eax,RMenuProp
cmp eax,idbRProp
jz RBPropeties
 
jmp RBWExit
.RBWB:
cmp eax,[NumUserButt]
ja @f
 
mov eax,[RBUser+eax*8+4]
mov dword[fiRunProg+8],0
mov dword[fiRunProg+21],eax
mcall 70,fiRunProg
 
@@:
jmp RBWExit
 
RBWMouse:
call MouseInWin
jnc .RBWMnoInWin ;¥á«¨ ¢­¥ ®ª­ , â® ¯à®áâ® ¢®ááâ ­ ¢«¨¢ ¥¬ ¯à¥¤ë¤ãéãî ª­®¯ªã
 
mcall 37,1 ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
and eax,0FFF0h ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
cmp [PredItem],eax
je .RBWMendLightBut
 
shr eax,4 ;¥á«¨ ¬ëèì ­  ­¨¦­¥© à ¬ª¥, â® â ª¦¥ ⮫쪮 ¢®ááâ ­®¢¨âì ¯à¥¤ë¤ãéãî ª­®¯ªã
cmp eax,[NumMenuButt]
jae .RBWMnoInWin
 
cmp [PredItem],-1 ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
cmp [PredItem],-1
je @f
 
stdcall DrawRBLine,[PredItem],0
 
mov eax,[PredItem]
xor ebx,ebx
mov bx,[RMenuW]
mov cx,ax
shl ecx,16
mov cx,ax
mcall 38,,,[sc.work]
add ecx,00100010h
mcall ,,,[sc.work]
@@:
 
call MouseInWin
call ClickInWin
jnc @f
mcall 37,1 ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
and eax,0FFF0h ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
and eax,0FFF0h
mov [PredItem],eax
stdcall DrawRBLine,eax,1
 
xor ebx,ebx
mov bx,[RMenuW]
mov cx,ax
shl ecx,16
mov cx,ax
mcall 38,,,[sc.workL]
add ecx,00100010h
mcall ,,,[sc.workH]
@@:
jmp .RBWMendLightBut
 
 
.RBWMnoInWin:
cmp [PredItem],-1 ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
je .RBWMendLightBut
 
stdcall DrawRBLine,[PredItem],0
mov [PredItem],-1
 
.RBWMendLightBut:
mcall 37,2 ;GetMouseKey
test eax,111b
jz RBWMessages
 
call MouseInWin
call ClickInWin
jc RBWMessages
 
RBWExit:
cmp [SelIcon],-1
jne @f
mcall 68,13,[RBMenuCP] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì á ¯®¤¯¨áﬨ ¨ ¯ãâﬨ ª ¯à®£ ¬
@@:
mcall 68,13,[RBUser]
mov [RButtonActiv],0
mcall -1 ;ExitProcess
 
376,11 → 328,15
jmp RBWExit
 
RBDelete:
 
mov eax,[SelIcon]
mov eax,[IconsOffs+eax*4]
stdcall [ini_del_section],IconIni,eax
 
stdcall DelIcon,[SelIcon]
; mov dword[fiStdIco],2
; m2m dword[fInfo+12],dword[SizeData]
; mcall 70,fInfo
 
mov dword[fiRunProg+8],WarningSave
mov dword[fiRunProg+21],pthNotify
401,120 → 357,7
mcall 18,3,[slotDlgAdd]
jmp RBWExit
 
proc DrawRBLine y,active
 
xor ebx,ebx
mov bx,[RMenuW]
add ebx,2*10000h-3
mov ecx,[y]
add ecx,2
shl ecx,16
mov cx,16;-1-2
cmp [active],1
jne @f
mov edx,[sc.work_button]
jmp .L1
@@:
mov edx,[sc.work]
.L1:
mcall 13
 
;----------------------------------------------
xor ebx,ebx ;¢¥àå
mov bx,[RMenuW]
add ebx,2*10000h-3
mov cx,word[y]
shl ecx,16
mov cx,word[y]
add ecx,00020002h
 
cmp [active],1
jne @f
mov edx,[sc.workL]
jmp .L3
@@:
mov edx,[sc.work]
.L3:
 
mcall 38
 
mov ebx,00020002h ;«¥¢®
mov cx,word[y]
shl ecx,16
mov cx,word[y]
add ecx,00020002h+16
 
cmp [active],1
jne @f
mov edx,[sc.workL]
 
@@:
 
mcall
 
xor ebx,ebx ;­¨§
mov bx,[RMenuW]
add ebx,2*10000h-3
mov cx,word[y]
shl ecx,16
mov cx,word[y]
add ecx,16*10000h+16+00020002h
 
cmp [active],1
jne @f
mov edx,[sc.workH]
@@:
 
mcall
 
 
mov bx,[RMenuW] ;¯à ¢®
shl ebx,16
mov bx,[RMenuW]
add ebx,-2*10000h-2
mov cx,word[y]
shl ecx,16
mov cx,word[y]
add ecx,00020002h+16
 
cmp [active],1
jne @f
mov edx,[sc.workH]
@@:
 
mcall
 
 
 
 
 
mov eax,[y]
shr eax,4
mov edx,[RBMenuCP+eax*8]
 
xor ebx,ebx
mov ebx,[y]
add ebx,7*10000h+7
 
cmp [active],1
jne @f
mov ecx,[sc.work_button_text]
jmp .L2
@@:
mov ecx,[sc.work_text]
.L2:
 
 
 
or ecx,80000000h
 
mcall 4
 
ret
endp
 
 
proc MouseInWin ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª­¥
proc ClickInWin ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª­¥
mcall 37,0 ;GetMousePos
xor ebx,ebx
mov bx,ax ;y
676,7 → 519,7
 
;-------------------------------------------------------------------------------
proc GetUserBut stdcall,f_name,sec_name,key_name,key_value
cmp [NumMenuButt],MAX_USER_BUTTONS
cmp [NumUserButt],16
jne @f
ret
@@:
695,18 → 538,24
jbe @f
mov [RMenuW],ax
@@:
cmp [RMenuW],MinRMenuW
jae @f
mov [RMenuW],MinRMenuW
@@:
 
mov ebx,[NumMenuButt]
mov ebx,[NumUserButt]
 
mov esi,[key_name]
mov edi,[RBMenuCP+ebx*8]
mov edi,[RBUser+ebx*8]
@@: lodsb
stosb
test al,al
jnz @b
 
;debug_newline
 
mov [RBMenuCP+ebx*8+4],edi
 
mov [RBUser+ebx*8+4],edi
mov esi,[key_value]
@@: lodsb
stosb
713,9 → 562,9
test al,al
jnz @b
 
mov [RBMenuCP+ebx*8+8],edi
mov [RBUser+ebx*8+8],edi
 
inc [NumMenuButt]
inc [NumUserButt]
 
pop edi esi ebx
mov eax,1