Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4033 → Rev 4036

/programs/system/icon_new/@icon.asm
1,3 → 1,5
;¨­®£¤  ­¥¢¥à­® ®¯à¥¤¥«ï¥âáï è¨à¨­  ¬¥­î誨
 
ICONS_DAT equ '/rd/1/icons.dat'
ICON_STRIP equ '/rd/1/iconstrp.png'
ICON_SIZE equ 68
29,7 → 31,7
dd START ; start of code
dd I_END ; size of image
dd ENDMEM ; memory for app
dd stack_area ; esp
dd stack_main ; esp
dd 0 ; boot parameters
dd 0 ; path
;------------------------------------------------------------------------------
428,7 → 430,7
jmp @b
@@:
 
mcall 51,1,RButtonWin,stack_dlg ;CreateThread RButtonWin,stack_dlg
mcall 51,1,RButtonWin,stack_rmenu ;CreateThread RButtonWin,stack_rmenu
 
jmp messages
 
846,6 → 848,7
@@:
 
xor ebx,ebx
mov ebx,[NumIconI]
.TestIcon:
cmp dword[NumIconI],-1
je @f
1165,7 → 1168,6
keyIco db 'ico',0
keyX db 'x',0
keyY db 'y',0
keyMenuColor db 'menucolor',0
 
;-------------------------------------------------------------------------------
IMPORTS:
1215,25 → 1217,28
;-------------------------------------------------------------------------------
secRButt db 'rbmenu',0
 
PredItem dd -1
 
if lang eq ru
RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
RMenuOnMoving db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
RMenuAlign db '‚ë஢­ïâì ¯® á¥âª¥',0
RMenuAdd db '„®¡ ¢¨âì',0
RMenuDel db '“¤ «¨âì',0
RMenuProp db '‘¢®©á⢠',0
RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
RMenuOnMoving db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
 
else
 
RMenuOffMoving db 'Fix the icons',0
RMenuOnMoving db 'Unfix the icons',0
RMenuRedrawFon db 'Redraw',0
RMenuAlign db 'Snap to Grid',0
RMenuAdd db 'Add',0
RMenuDel db 'Delete',0
RMenuProp db 'Properties',0
RMenuOffMoving db 'Fix the icons',0
RMenuOnMoving db 'Unfix the icons',0
 
 
end if
 
if lang eq ru
1250,7 → 1255,6
ErrName db 'The name "rbmenu" reserved',0
end if
 
 
pthNotify db '/rd/1/@notify',0
 
;-------------------------------------------------------------------------------
1277,7 → 1281,6
DCaptPath db 'Path',0
DCaptParams db 'Parameters',0
DCaptIcon db 'Icon',0
;DCaptChange db '.',0
DCaptCreate db 'Create',0
DCaptProperties db 'Change',0
DCaptCancel db 'Cancel',0
1367,6 → 1370,8
;\
 
sc system_colors
sc.workL rd 1
sc.workH rd 1
 
align 4
ScreenX rw 1
1406,10 → 1411,8
RBUser rd 16*2+1
RMenuW rw 1
RMenuH rw 1
RMenuHsb rw 1
 
MaxPage rd 1
RBMenuColor rd 1
mouse_dd rd 1
 
DAreaName rb NAME_LENGTH+1
1421,17 → 1424,20
RBProcInfo rb 1024
align 4
 
; OpenDialog
 
;------ OpenDialog -------------------------------
temp_dir_pach rb 1024
fname_Info rb 1024
 
;-------------------------------------------------------------------------------
rb 512
stack_mov:
stack_mov: ;®¤­®¢à¥¬¥­­® â áª âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥­îèªã ­¥¢®§¬®¦­®
stack_rmenu:
rb 512
stack_dlg:
rb 512
stack_bredraw:
rb 512
stack_area:
stack_main:
;------------------------------------------------------------------------------
ENDMEM:
/programs/system/icon_new/RButton.inc
11,23 → 11,52
idbRDel equ 104
idbRProp equ 105
 
DELTA_COLOR equ 70
 
;---- thread for rbutton -----------------------------------------------------------------------
RButtonWin:
mcall 40,100101b ;SetMaskMessage 100101b
mcall 48,3,sc,40
 
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ᢥ⫥¥ ä®­®¢®£®
rol eax,16
add al,DELTA_COLOR
jnc @f
mov al,0FFh
@@:
rol eax,16
add al,DELTA_COLOR
jnc @f
mov al,0FFh
@@:
add ah,DELTA_COLOR
jnc @f
mov ah,0FFh
@@:
mov [sc.workH],eax
 
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ⥬­¥¥ ä®­®¢®£®
rol eax,16
sub al,DELTA_COLOR
jnc @f
mov al,0FFh
@@:
rol eax,16
sub al,DELTA_COLOR
jnc @f
mov al,0FFh
@@:
sub ah,DELTA_COLOR
jnc @f
mov ah,0FFh
@@:
mov [sc.workL],eax
 
 
 
stdcall GetNumIcon,[MouseX],[MouseY],-1
mov [SelIcon],eax
 
cmp eax,-1
jne @f
mov [RMenuH],16*4+3+3
mov [RMenuHsb],16*4+3+3
jmp .rbw1
@@:
mov [RMenuH],16*5+3+3
mov [RMenuHsb],16*5+3+3
.rbw1:
 
mov [NumUserButt],0
mov [RMenuW],0
mcall 70,fiIni
35,6 → 64,16
mov [RBUser],eax
stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut
 
cmp [SelIcon],-1
jne @f
mov [RMenuH],16*4
mov eax,[NumUserButt]
shl eax,4
add [RMenuH],ax
jmp .rbw1
@@:
mov [RMenuH],16*5
.rbw1:
 
RBWRedraw:
mcall 12,1 ;RedrawWinBeg
44,11 → 83,19
mov ecx,[MouseY]
shl ecx,16
mov cx,[RMenuH]
mov edx,0177CCFFh
mov edx,01000000h
mov esi,01000000h
xor eax,eax
int 40h
 
and ebx,0FFFFh ;ä®­®¢ë© ¯àאַ㣮«ì­¨ª
inc bx
and ecx,0FFFFh
inc cx
mcall 13,,,[sc.work]
 
cmp [SelIcon],-1 ;¥á«¨ ª«¨ª ¯® ¨ª®­ª¥, â® ¯ã­ªâë ¯®«ì§®¢ â¥«ï ­¥ ­ã¦­ë
jne .NoDrawUserBut
;-----------
mov ecx,[NumUserButt]
.DrawUB:
57,6 → 104,7
mov eax,[NumUserButt]
sub eax,ecx
mov edx,eax ;button ID
or edx,60000000h
shl eax,4+16 ;*16*10000h
mov ecx,eax
mov cx,16
63,8 → 111,8
 
xor ebx,ebx
mov bx,[RMenuW]
mov esi,[sc.work] ;[RBMenuColor];0888888h
mcall 8
mov esi,[sc.work]
mcall 8 ;®¯à¥¤¥«¨«¨
 
mov ebx,50000h
shr ecx,16
76,44 → 124,58
mov eax,[NumUserButt]
sub eax,[esp]
mov edx,[RBUser+eax*8]
mcall 4 ;¯®¤¯¨á «¨
 
mcall 4
 
pop ecx
loop .DrawUB
 
;-----------
.NoDrawUserBut:
;®¯à¥¤¥«¥­¨¥ ª­®¯®ª ¤«ï ¨ª®­®ª
xor ebx,ebx
mov bx,[RMenuW]
mov cx,[RMenuH]
sub cx,[RMenuHsb]
push ecx
mov dx,cx
shl ecx,16
mov cx,dx
 
;¯¥à¢ ï à §¤¥«¨â¥«ì­ ï «¨­¨ï
; mcall 38,,,[RBMenuColor];0888888h
mcall 38,,,[sc.work]
add ecx,00010001h
mcall ,,,
 
;------------
mov ecx,[esp]
add ecx,2
xor eax,eax
cmp [SelIcon],-1
jne @f
mov eax,[NumUserButt]
@@:
shl eax,4
mov cx,ax
shl ecx,16
mov cx,16
push ecx ;®âá à¨á®¢ âì ª­®¯ª¨ (¯® ¢ëá®â¥)
 
; mcall 8,,,idbRRedrawFon,[RBMenuColor];0888888h ;3 ª­®¯ª¨ ¢â®à®£® ¡«®ª 
mcall 8,,,idbRRedrawFon,[sc.work]
add ecx,00100000h
mcall ,,,idbRAlign
add ecx,00100000h
mcall ,,,idbRFixIcons
 
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
 
cmp dword[SelIcon],-1
je @f
 
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,word[esp]
add bx,2+5
mov bx,ax
 
add bx,5
mcall 4,,80000000h,RMenuRedrawFon
add ebx,16
mcall ,,,RMenuAlign
127,53 → 189,20
mov edx,RMenuOnMoving
.RBWR1:
mcall
add ebx,16
 
;------------
xor ebx,ebx ;¢â®à ï à §¤¥«¨â¥«ì­ ï «¨­¨ï
mov bx,[RMenuW]
mov ecx,[esp]
add ecx,16*3+2
mov dx,cx
shl ecx,16
mov cx,dx
; mcall 38,,,[RBMenuColor];0888888h
mcall 38,,,[sc.work]
add ecx,00010001h
mcall ,,,
;------------
;1 ¨«¨ 2 ª­®¯ª¨ âà¥â쥣® ¡«®ª 
mov ecx,[esp]
add ecx,16*3+4
shl ecx,16
mov cx,16
cmp dword[SelIcon],-1
je @f
 
; mcall 8,,,idbRDel,[RBMenuColor];0888888h
mcall 8,,,idbRDel,[sc.work]
add ecx,00100000h
; mcall ,,,idbRProp,[RBMenuColor];0888888h
mcall ,,,idbRProp,[sc.work]
 
mov ebx,50000h
mov bx,word[esp]
add bx,16*3+4+5
mcall 4,,80000000h,RMenuDel
mcall ,,,RMenuDel
add bx,16
mcall ,, ,RMenuProp
 
jmp .endRM
jmp .endRM2
@@:
 
; mcall 8,,,idbRAdd,[RBMenuColor];0888888h
mcall 8,,,idbRAdd,[sc.work]
mov ebx,50000h
mov bx,word[esp]
add bx,16*3+4+5
mcall 4,,80000000h,RMenuAdd
mcall ,,,RMenuAdd
.endRM2:
 
.endRM:
 
pop ecx
mcall 12,2 ;RedrawWinEnd
 
218,22 → 247,41
jmp RBWExit
 
RBWMouse:
cmp [PredItem],-1
je @f
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 ClickInWin
jnc @f
mcall 37,1 ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
and eax,0FFF0h
mov [PredItem],eax
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]
@@:
 
 
mcall 37,2 ;GetMouseKey
test eax,111b
jz RBWMessages
mcall 37,0 ;GetMousePos
xor ebx,ebx
mov bx,ax ;y
shr eax,16 ;x
 
xor ecx,ecx
mov cx,bx
mov bx,ax
call ClickInWin
jc RBWMessages
 
mcall 34
cmp eax,[RBSlot]
je RBWMessages
 
RBWExit:
mcall 68,13,[RBUser]
mov [RButtonActiv],0
309,7 → 357,27
mcall 18,3,[slotDlgAdd]
jmp RBWExit
 
proc ClickInWin ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª­¥
mcall 37,0 ;GetMousePos
xor ebx,ebx
mov bx,ax ;y
shr eax,16 ;x
 
xor ecx,ecx
mov cx,bx
mov bx,ax
 
mcall 34
cmp eax,[RBSlot]
jne @f
stc
ret
@@:
clc
ret
endp
 
 
proc AlignIcons
local posX:WORD,\
posY:WORD,\
458,19 → 526,6
 
push ebx esi edi
 
mov edi,[key_name]
mov esi,keyMenuColor
@@: lodsb
scasb
jne @f
test al,al
jnz @b
 
stdcall [ini_get_color],[f_name],[sec_name],[key_name],0888888h
mov [RBMenuColor],eax
ret
@@:
 
mov edi,[key_name] ;®¯à¥¤¥«ï¥¬ è¨à¨­ã ¬¥­î
xor eax,eax
or ecx,-1
510,7 → 565,6
mov [RBUser+ebx*8+8],edi
 
inc [NumUserButt]
add [RMenuH],16
 
pop edi esi ebx
mov eax,1