0,0 → 1,1336 |
ICON_STRIP equ '/rd/1/icons32.png' |
ICON_INI equ '/rd/1/settings/icon.ini' |
ICON_SIZE equ 68 ;à §¬¥à ®¡« á⨠¤«ï ¨ª®ª¨ á ¤¯¨áìî |
IMG_SIZE equ 32 ;à §¬¥à ¨ª®®ª |
TEXT_BOTTOM_Y equ 14 ;®âáâ㯠¯® Y ⥪á⠮⠨§ ¨ª®ª¨ |
IMAGE_TOP_Y equ 10 ;>=1 ®®à¤¨ â Y ¨ª®ª¨ ¢ ®¡« á⨠¤«ï ¤ ®© ¨ª®ª¨ |
ALIGN_SIZE equ 68 ;à §¬¥à á¥âª¨ ¢ëà ¢¨¢ ¨ï |
NAME_LENGTH equ 11 ;¤«¨ ¨¬¥¨ ¨ª®ª¨ |
MIN_NO_MOVING equ 8 ;ç¥à¥§ á⮫쪮 ¯¨ªá¥«¥© ᤢ¨£ ¬ëè¨ ç¨ ¥âáï â ᪠¨¥ ¨ª®ª¨ |
|
;--------¤«ï ¤¨ «®£ ᮧ¤ ¨ï/। ªâ¨à®¢ ¨ï |
ICONSX equ 20 |
ICONSY equ 90 |
ICONS_DRAW_COUNTW equ 12 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ è¨à¨ã |
ICONS_DRAW_COUNTH equ 6 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ ¢ëá®âã |
SPCW equ 3 ;¯à®¡¥« ¬¥¦¤ã ¨ª®ª ¬¨ ¯® £®à¨§®â «¨ |
SPCH equ 3 |
END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
|
|
|
SizeData equ bufStdIco+32 |
BegData equ fiStdIco.point |
;------------------------------------------------------------------------------ |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd ENDMEM ; memory for app |
dd stack_main ; esp |
dd 0 ; boot parameters |
dd 0 ; path |
;------------------------------------------------------------------------------ |
include 'lang.inc' |
include '../../macros.inc' |
include '../../proc32.inc' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../dll.inc' |
;include '../../debug.inc' |
;------------------------------------------------------------------------------ |
START: ; start of execution |
mcall 68,11 |
stdcall dll.Load,IMPORTS |
test eax,eax |
jnz ErrLoadLibs |
|
; unpack deflate |
mov eax,[unpack_DeflateUnpack2] |
mov [deflate_unpack],eax |
;--------------------------------------------------------------------- |
; get size of file icons32.png |
mcall 70,fiStdIco |
test eax,eax |
jnz ErrorStrp |
; get memory for icons32.png |
mov ecx,dword[bufStdIco+32] |
mov [fiStdIco.size],ecx |
mov [img_size],ecx |
mcall 68,12 |
mov [fiStdIco.point],eax |
mov [image_file],eax |
; load icons32.png |
mov dword[fiStdIco],0 |
mcall 70,fiStdIco |
test eax,eax |
jnz close |
; convert PNG to RAW |
xor eax,eax |
mov [return_code],eax |
;int3 |
|
push image_file |
call [cnv_png_import.Start] |
|
mov eax,[raw_pointer] |
mov ebx,[eax+32] |
mov [strip_file_size],ebx |
mov eax,[eax+28] |
add eax,[raw_pointer] |
mov [strip_file],eax |
; back memory to system |
mcall 68,13,[fiStdIco.point] |
|
mov eax,[raw_pointer] |
mov eax,[eax+8] |
shr eax,5 |
mov [icon_count],eax |
|
and eax,0x7 |
mov [cur_band_compensation],eax |
|
;########## § £à㦠¥¬ ¤ ë¥ ¨ª®®ª ¢ ¯ ¬ïâì ########################## |
|
mcall 70,fiIni ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç®© ¤«ï åà ¥¨ï ini ä ©« . |
test eax,eax ;
ñ â®ç® å¢ â¨â ¤«ï åà ¥¨ï ¤ ëå ®¡ ¨ª®ª å |
jnz ErrorIni |
|
cmp dword[bufIni+32],0 |
je ErrorIni |
mcall 68,12,dword[bufIni+32] |
mov dword[BegData],eax |
jmp NoErrIni |
|
ErrorIni: |
mcall 70,fiRunProg |
mcall -1 |
|
NoErrIni: |
m2m [PIcoDB],[BegData] |
|
|
|
mov edi,IconsID |
xor eax,eax |
mov ecx,100h/4 |
rep stosd |
mov [nLoadIcon],0 |
stdcall [ini_enum_sections],IconIni,LoadIconsData |
;int3 |
mov eax,dword[PIcoDB] |
sub eax,[BegData] |
mov dword[SizeData],eax |
mov eax,[BegData] |
cmp eax,[PIcoDB] |
jne @f |
mov dword[eax],0 |
mov dword[SizeData],0 |
@@: |
;###################################################################### |
call FillIconsOffs ;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
|
;¨¨æ¨ «¨§ æ¨ï IPC ¡ãä¥à |
mov dword[IPCbuffer],0 |
mov dword[IPCbuffer+4],8 |
mcall 60,1,IPCbuffer,1024 |
|
mcall 40,01100000b ;ã¦ë ⮫쪮 ᮡëâ¨ï ¬ëè¨ ¨ IPC, |
;¯¥à¥à¨á®¢ª ¨ª®®ª ¡ã¤¥â ¢ ¤à㣮¬ ¯®â®ª¥ |
mov eax,[icon_count] |
mov bl,ICONS_DRAW_COUNTH |
div bl |
test ah,ah |
jz @f |
inc al |
@@: |
and eax,0FFh |
mov [sbIcons.max_area],eax |
|
mcall 51,1,BGRedrawThread,stack_bredraw ;§ ¯ã᪠¥¬ ¯®â®ª ¯¥à¥à¨á®¢ª¨ ¨ª®®ª |
stdcall [OpenDialog_Init],OpenDialog_data |
|
;dph [MaxNumIcon] |
|
messages: |
mcall 10 |
sub eax,6 |
jz MSGMouse |
dec eax |
jz MSGIPC |
jmp messages |
|
MSGIPC: |
call IPCCreateIcon |
jmp messages |
|
MSGMouse: |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
|
mcall 34 |
cmp eax,1 |
jne messages |
|
cmp [RButtonActiv],1 |
je messages |
|
mov [MouseY],ecx |
mov [MouseX],ebx |
|
|
mcall 37,2 |
test al,001b |
jnz LButtonPress |
test al,010b |
jnz RButtonPress |
jmp messages |
|
ErrLoadLibs: |
;dps '¥ 㤠«®áì § £à㧨âì ¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨' |
;debug_newline |
jmp close |
ErrorStrp: |
;dps '訡ª ®âªàëâ¨ï icons32.png' |
;debug_newline |
close: |
mcall -1 |
|
LButtonPress: |
|
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
;int3 |
cmp eax,-1 |
jnz @f |
|
WaitLB1: |
mcall 37,2 |
test al,001b |
jz messages |
;Yield |
mcall 5,1 |
jmp WaitLB1 |
|
|
@@: |
push eax |
stdcall DrawIcon,eax,1 |
WaitLB: |
mcall 37,2 |
test al,001b |
jz endWaitLB |
|
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
sub eax,[MouseX] |
jns @f |
neg eax |
@@: |
sub ebx,[MouseY] |
jns @f |
neg ebx |
@@: |
cmp [bFixIcons],0 |
jne @f |
cmp eax,MIN_NO_MOVING |
ja MovingIcon |
cmp ebx,MIN_NO_MOVING |
ja MovingIcon |
@@: |
;Yield |
mcall 5,1 ;Sleep 1 |
|
jmp WaitLB |
endWaitLB: |
|
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
mov [MouseX],ebx |
mov [MouseY],ecx |
|
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
cmp eax,[esp] ;[esp] = ®¬¥à ¨ª®ª¨ |
jne @f |
|
mov edi,[IconsOffs+eax*4] |
or ecx,-1 |
xor al,al |
repne scasb |
mov ebx,edi |
repne scasb |
;run program |
mov dword[fiRunProg+8],edi |
mov dword[fiRunProg+21],ebx |
mcall 70,fiRunProg |
test eax,80000000h |
jz @f |
|
mov dword[fiRunProg+8],ErrRunProg |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
|
@@: |
pop eax |
stdcall RestoreBackgrnd,eax |
jmp messages |
|
;------------------------------------------------------------------------------- |
MovingIcon: |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
mov [SelIcon],eax |
mov [IconNoDraw],eax |
stdcall RestoreBackgrnd,[SelIcon] |
|
; mov ecx,[MaxNumIcon] |
; xor ebx,ebx |
; .MI: push ecx |
; cmp ebx,[SelIcon] |
; je @f |
; stdcall DrawIcon,ebx,0 |
; @@: |
; inc ebx |
; pop ecx |
; loop .MI |
|
|
|
;dps 'Moving' |
;debug_newline |
; mov edi,[SelIcon] |
; mov edi,[IconsOffs+edi*4] |
; or ecx,-1 |
; xor al,al |
; repne scasb |
; repne scasb |
; repne scasb |
; repne scasb |
; xor ebx,ebx |
; xor esi,esi |
; mov bx,word[edi+2] |
; mov si,word[edi] |
; stdcall GetNumIcon,ebx,esi,[SelIcon] |
; cmp eax,-1 |
; je @f |
; dps 'Q' |
; stdcall DrawIcon,eax,0 |
; @@: |
; |
; add ebx,ICON_SIZE-1 |
; stdcall GetNumIcon,ebx,esi,[SelIcon] |
; cmp eax,-1 |
; je @f |
; dps 'Q' |
; stdcall DrawIcon,eax,0 |
; |
; @@: |
; add esi,ICON_SIZE-1 |
; stdcall GetNumIcon,ebx,esi,[SelIcon] |
; cmp eax,-1 |
; je @f |
; dps 'Q' |
; stdcall DrawIcon,eax,0 |
; |
; @@: |
; sub ebx,ICON_SIZE-1 |
; stdcall GetNumIcon,ebx,esi,[SelIcon] |
; cmp eax,-1 |
; je @f |
; dps 'Q' |
; stdcall DrawIcon,eax,0 |
; @@: |
|
|
; Sleep 40 |
|
;qweqwe: |
|
mov [MovingActiv],1 |
mcall 51,1,MovingWnd,stack_mov ;CreateThread MovingWnd,stack_dlg |
.WaitLB: |
mcall 37,2 ;GetMouseKey |
test al,001b |
jz .endWaitLB |
|
;Yield |
mcall 5,1 ;Sleep 1 |
jmp .WaitLB |
.endWaitLB: |
|
|
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
|
sub eax,1+ICON_SIZE/2 |
jnc @f |
xor eax,eax |
@@: |
|
sub ebx,ICON_SIZE/2-7 |
jnc @f |
xor ebx,ebx |
@@: |
|
cmp ax,[wsX] |
jae @f |
mov ax,[wsX] |
@@: |
|
cmp bx,[wsY] |
jae @f |
mov bx,[wsY] |
@@: ;eax,ebx - ॠ«ì ï ª®®à¤¨ â . ᥠª®®à¤¨ âë ¢ ¯à®£¥ ®â®á¨â¥«ì® «¥¢®£® ¢¥à奣® 㣫 à ¡®ç¥© ®¡« á⨠|
|
xor edx,edx |
mov dx,[wsXe] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
@@: |
|
mov dx,[wsYe] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
@@: |
|
xor edx,edx ;¯à¥®¡à §®¢ë¢ ¥¬ ¢ ®â®á¨â¥«ìë¥ |
mov dx,[wsW] |
shr edx,1 |
add dx,[wsX] |
cmp eax,edx |
jbe @f |
sub ax,[wsXe] |
inc ax |
jmp .mov1 |
@@: |
sub ax,[wsX] |
.mov1: |
|
xor edx,edx |
mov dx,[wsH] |
shr edx,1 |
add dx,[wsY] |
cmp ebx,edx |
jbe @f |
sub bx,[wsYe] |
inc bx |
jmp .mov2 |
@@: |
sub bx,[wsY] |
.mov2: |
|
stdcall SetPosition,[SelIcon],eax,ebx |
|
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,Ini_SavePos ;in RButton.inc |
|
mov [bNotSave],1 |
mov [IconNoDraw],-1 |
|
mov [MovingActiv],0 ;⮫쪮 ⥯¥àì ®âª«îç ¥¬ ®ª® á ¬ëèìî |
|
jmp messages |
|
;------------------------------------------------------------------------------- |
|
RButtonPress: |
mov [RButtonActiv],1 |
|
@@: |
mcall 37,2 ;GetMouseKey |
test al,010b |
jz @f |
mcall 5,1 ;Yield |
jmp @b |
@@: |
|
mcall 51,1,RButtonWin,stack_rmenu ;CreateThread RButtonWin,stack_rmenu |
|
jmp messages |
|
|
;############################################################################### |
;ret eax = 1/0 = 㤠ç /®è¨¡ª |
proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n |
local IconData:DWORD |
push ebx edi esi |
|
mov ecx,ICON_SIZE*ICON_SIZE |
xor eax,eax |
mov edi,IconArea |
rep stosd |
|
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop esi edi ebx |
ret |
@@: |
|
mov esi,[IconsOffs+eax*4] |
mov [IconData],esi |
|
;à¨á㥬 ⥪áâ |
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
mov edx,esi |
mov eax,edi |
sub eax,esi |
dec eax |
shl eax,1 ;*6 |
lea eax,[eax*2+eax] |
mov ebx,ICON_SIZE |
sub ebx,eax |
shr ebx,1 ;ebx = x ⥪áâ |
shl ebx,16 |
mov bx,ICON_SIZE |
sub bx,TEXT_BOTTOM_Y |
mov ecx,88000000h |
mov edi,IconAreaH |
add ebx,-1*10000h+0 |
mcall 4 |
add ebx,2*10000h+0 |
mcall ;4 |
add ebx,-1*10000h-1 |
mcall ;4 |
add ebx,0*10000h+2 |
mcall ;4 |
add ebx,1*10000h+0 |
mcall ;4 |
inc ebx;add ebx,0*10000h+1 |
mcall ;4 |
add ebx,-1*10000h+0 |
mcall ;4 |
add ebx,0*10000h-2 |
mov ecx,88FFFFFFh |
mcall ;4 |
;à¨á㥬 ª à⨪ã |
|
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
mov al,[edi] |
cmp al,'9' |
ja PathToIcon |
cmp al,'/' |
jne GetIconInd |
|
PathToIcon: |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
|
jmp CopyToMem |
GetIconInd: |
|
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
@@: |
test eax,eax |
je DI1 |
mov ecx,eax |
xor eax,eax |
@@: |
add eax,IMG_SIZE*IMG_SIZE*4 |
loop @b |
DI1: |
add eax,[raw_pointer] |
add eax,0+4*11 |
mov esi,eax |
|
CopyToMem: |
mov edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4 |
|
mov eax,IMG_SIZE |
mov edx,eax |
@@: |
mov ecx,eax |
rep movsd |
add edi,(ICON_SIZE-IMG_SIZE)*4 |
dec edx |
jnz @b |
|
;----------------- |
;¥á«¨ ¤®, â® à¨á㥬 ®¡¢®¤ªã |
cmp [Activ],0 |
je .NoSelect |
|
mov edi,IconArea |
mov eax,0FF000000h |
mov ecx,ICON_SIZE |
rep stosd |
;mov edi,IconArea+ICON_SIZE*1 |
|
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
|
mov edi,IconArea+ICON_SIZE*2*4-4 |
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
|
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4 |
mov ecx,ICON_SIZE-2 |
rep stosd |
|
|
mov edi,IconArea+ICON_SIZE*4+4 |
mov eax,0FFFFFFFFh |
mov ecx,ICON_SIZE-2 |
rep stosd |
|
mov edi,IconArea+ICON_SIZE*4+4 |
mov ecx,ICON_SIZE-2 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
|
mov edi,IconArea+ICON_SIZE*2*4-4*2 |
mov ecx,ICON_SIZE-3 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
|
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2 |
mov ecx,ICON_SIZE-3 |
rep stosd |
;-------------- |
|
.NoSelect: |
mov edi,[IconData] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov edx,[edi] |
|
test edx,00008000h |
jz @f |
add dx,[wsYe] |
jmp .DI11 |
@@: |
add dx,[wsY] |
.DI11: |
|
test edx,80000000h |
jz @f |
mov ax,[wsXe] |
shl eax,16 |
add edx,eax |
jmp .DI12 |
@@: |
mov ax,[wsX] |
shl eax,16 |
add edx,eax |
.DI12: |
|
mov ebx,IconArea |
mov ecx,ICON_SIZE*10000h+ICON_SIZE |
mcall 25 |
|
; mov eax,1 |
pop esi edi ebx |
ret |
endp |
|
proc RestoreBackgrnd,NumIcon:DWORD |
push ebx edi |
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop edi ebx |
ret |
@@: |
|
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
|
mov ax,[edi+2] |
test ax,8000h |
jz @f |
add ax,[wsXe] |
jmp .rbg1 |
@@: |
add ax,[wsX] |
.rbg1: |
|
mov bx,[edi] |
test bx,8000h |
jz @f |
add bx,[wsYe] |
jmp .rbg2 |
@@: |
add bx,[wsY] |
.rbg2: |
|
mov cx,ax |
shl ecx,16 |
add ax,ICON_SIZE |
mov cx,ax |
mov dx,bx |
shl edx,16 |
add bx,ICON_SIZE |
mov dx,bx |
dec ecx |
dec edx |
mcall 15,9 |
pop edi ebx |
ret |
endp |
|
;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
proc FillIconsOffs |
push ebx edi |
mov edi,[BegData] |
mov dword[MaxNumIcon],0 |
cmp dword[edi],0 |
jne @f |
mov dword[IconsOffs],0 |
pop edi ebx |
ret |
@@: |
|
mov [IconsOffs],edi |
xor al,al |
xor edx,edx |
mov ebx,dword[SizeData] |
add ebx,dword[BegData] |
or ecx,-1 |
.CalcNumIc: |
|
repne scasb |
repne scasb |
repne scasb |
repne scasb |
add edi,4 |
mov dword[IconsOffs+edx+4],edi |
inc dword[MaxNumIcon] |
add edx,4 |
|
cmp edi,ebx |
jae @f |
jmp .CalcNumIc |
@@: |
|
mov dword[IconsOffs+edx],0 |
|
pop edi ebx |
ret |
endp |
|
proc LoadIconsData stdcall,f_name,sec_name |
push ebx esi edi |
|
mov edi,secRButt |
mov esi,[sec_name] |
@@: lodsb |
scasb |
jnz .lid1 |
test al,al |
jnz @b |
|
mov eax,1 |
pop edi esi ebx |
ret |
.lid1: |
|
|
mov ebx,[sec_name] ;ª®¯¨à㥬 ID |
mov ax,[ebx] |
mov edi,[nLoadIcon] |
mov word[edi*4+IconsID],ax |
mov word[edi*4+IconsID+2],0 |
|
mov edi,[PIcoDB] |
stdcall [ini_get_str],[f_name],[sec_name],keyName,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
|
|
|
stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
|
stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
|
stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
|
stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
mov word[edi+2],ax |
|
stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
mov word[edi],ax |
add edi,4 |
mov [PIcoDB],edi |
|
inc [nLoadIcon] |
|
mov eax,1 |
pop edi esi ebx |
ret |
endp |
|
proc GenerateID ;ax = ID |
push ebx edi |
mov ebx,[MaxNumIcon] |
test ebx,ebx |
jnz @f |
mov eax,'00' |
pop edi ebx |
ret |
@@: |
|
mov eax,dword[IconsID+ebx*4-4] |
.inc: |
inc ah |
cmp ah,'9'+1 |
jne @f |
mov ah,'A' |
@@: |
cmp ah,'F'+1 |
jne @f |
mov ah,'0' |
inc al |
@@: |
cmp al,'9'+1 |
jne @f |
mov al,'A' |
@@: |
cmp al,'F'+1 |
jne @f |
mov al,'0' |
@@: |
|
|
mov edi,IconsID |
;cmp dword[edi],0 |
;je @f |
mov ecx,100h |
@@: scasd |
je .inc |
cmp dword[edi],0 |
je @f |
loop @b |
@@: |
|
pop edi ebx |
ret |
endp |
|
;------------------------------------------------------------------------------- |
|
|
;ä®à¬ â IPC-á®®¡é¥¨ï |
;dd X |
;dd Y |
;asciiz Icon |
;asciiz Name |
;asciiz Path |
;asciiz Params |
;------------------------------------------------------------------------------- |
proc IPCCreateIcon |
locals |
ix rd 1 |
iy rd 1 |
endl |
|
mov eax,IPCbuffer+8 |
mov dword[IPCbuffer],1 |
;mov edx,dword[IPCbuffer+4] |
lea edx,[eax+8] |
|
m2m dword[ix],dword[edx] |
m2m dword[iy],dword[edx+4] |
|
lea esi,[edx+8] |
|
mov ecx,256 |
mov edi,DAreaIcon |
@@: lodsb |
stosb |
test al,al |
jnz @b |
|
mov ecx,NAME_LENGTH+1 |
mov edi,DAreaName |
@@: lodsb |
stosb |
test al,al |
jz @f |
loop @b |
@@: |
|
mov edi,DAreaPath |
@@: lodsb |
stosb |
test al,al |
jnz @b |
|
mov edi,DAreaParams |
@@: lodsb |
stosb |
test al,al |
jnz @b |
|
mov dword[IPCbuffer+4],8 |
mov dword[IPCbuffer],0 |
|
stdcall AddIcon,[ix],[iy],DAreaIcon,DAreaName,DAreaPath,DAreaParams |
|
mcall 15,3 |
ret |
endp |
|
|
include 'iconman.inc' |
include 'bgredraw.inc' |
include 'RButton.inc' |
include 'DlgAdd.inc' |
include 'Moving.inc' |
|
;'Eolite',0,'/sys/File managers/eolite',0,'/hd0/3/Muzik',0,'1',0,00010001h |
;------------------------------------------------------------------------------- |
;##### DATA #################################################################### |
;------------------------------------------------------------------------------- |
; not change this section!!! |
; start section |
;------------------------------------------------------------------------------ |
align 4 |
image_file dd 0 ;+0 |
raw_pointer dd 0 ;+4 |
return_code dd 0 ;+8 |
img_size dd 0 ;+12 |
deflate_unpack dd 0 ;+16 ; not use for scaling |
raw_pointer_2 dd 0 ;+20 ; not use for scaling |
;------------------------------------------------------------------------------ |
; end section |
;------------------------------------------------------------------------------ |
|
|
align 4 |
fiStdIco: |
dd 5 |
dd 0 |
dd 0 |
.size dd 0 |
.point dd bufStdIco |
db ICON_STRIP,0 |
|
|
align 4 |
fiRunProg: ;¤«ï § ¯ã᪠¯à®£à ¬¬ |
dd 7 |
dd 0 |
dd 0 |
dd 0 |
dd ErrNotFoundIni |
db 0 |
dd pthNotify |
|
fiIni dd 5 ;¤«ï ini ä ©« |
dd 0 |
dd 0 |
dd 0 |
dd bufIni |
db 0 |
dd IconIni |
|
|
IconsFile db ICON_STRIP,0 |
|
align 4 |
MaxNumIcon dd 0 ;ª®«¨ç¥á⢮ ¨ª®®ª |
IconNoDraw dd -1 ;-1 «¨¡® ®¬¥à ¨ª®ª¨, ª®â®àãî ¥ ¤® à¨á®¢ âì( ª®£¤ ¥ñ â ᪠îâ ) |
|
bFixIcons dd 1 |
bNotSave dd 0 |
|
LButtonActiv dd 0 |
RButtonActiv dd 0 |
MovingActiv dd 0 |
DlgAddActiv dd 0 |
|
IconIni db ICON_INI,0 |
|
pthNotify db '/rd/1/@notify',0 |
|
keyName db 'name',0 |
keyPath db 'path',0 |
keyParams db 'param',0 |
keyIco db 'ico',0 |
keyX db 'x',0 |
keyY db 'y',0 |
|
;------------------------------------------------------------------------------- |
IMPORTS: |
library cnv_png ,'cnv_png.obj',\ |
archiver,'archiver.obj',\ |
box_lib ,'box_lib.obj',\ |
proc_lib,'proc_lib.obj',\ |
libini ,'libini.obj' |
|
import cnv_png,\ |
cnv_png_import.Start ,'START',\ |
cnv_png_import.Version ,'version',\ |
cnv_png_import.Check ,'Check_Header',\ |
cnv_png_import.Assoc ,'Associations' |
|
import archiver,\ |
unpack_DeflateUnpack2 ,'deflate_unpack2' |
|
import box_lib,\ |
edit_box_draw ,'edit_box',\ |
edit_box_key ,'edit_box_key',\ |
edit_box_mouse ,'edit_box_mouse',\ |
scrollbar_h_draw ,'scrollbar_h_draw',\ |
scrollbar_h_mouse ,'scrollbar_h_mouse' |
|
import proc_lib,\ |
OpenDialog_Init ,'OpenDialog_init',\ |
OpenDialog_Start ,'OpenDialog_start' |
|
import libini,\ |
ini_enum_sections ,'ini_enum_sections',\ |
ini_enum_keys ,'ini_enum_keys',\ |
ini_get_str ,'ini_get_str',\ |
ini_set_str ,'ini_set_str',\ |
ini_get_color ,'ini_get_color',\ |
ini_get_int ,'ini_get_int',\ |
ini_set_int ,'ini_set_int',\ |
ini_del_section ,'ini_del_section',\ |
ini_exist_sect ,'ini_exist_sect' |
|
|
;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val) |
;ini.set_str (f_name, sec_name, key_name, buffer, buf_len) |
|
|
;------------------------------------------------------------------------------- |
;----- RButton.inc ------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
|
if lang eq ru |
MinRMenuW dd 18*6+10 |
else |
MinRMenuW dd 15*6+10 |
end if |
|
secRButt db 'rbmenu',0 |
|
PredItem dd -1 |
|
if lang eq ru |
RMenuRedrawFon db '¥à¥à¨á®¢ âì',0 |
RMenuAlign db 'ë஢ïâì ¯® á¥âª¥',0 |
RMenuOffMoving db ' ªà¥¯¨âì ¨ª®ª¨',0 |
RMenuOnMoving db 'âªà¥¯¨âì ¨ª®ª¨',0 |
RMenuAdd db '®¡ ¢¨âì',0 |
RMenuDel db '¤ «¨âì',0 |
RMenuProp db '¢®©á⢠',0 |
else |
RMenuRedrawFon db 'Redraw',0 |
RMenuAlign db 'Snap to Grid',0 |
RMenuOffMoving db 'Fix the icons',0 |
RMenuOnMoving db 'Unfix the icons',0 |
RMenuAdd db 'Add',0 |
RMenuDel db 'Delete',0 |
RMenuProp db 'Properties',0 |
end if |
|
if lang eq ru |
ErrRunProg db '訡ª § ¯ã᪠¯à®£à ¬¬ë',0 |
WarningSave db '¥ § ¡ã¤ì⥠á®åà ¨âì ¨§¬¥¥¨ï, § ¯ãáâ¨âì RDSave',0 |
ErrNotFoundIni db '¥ ©¤¥ icon.ini',0 |
ErrName db '¬ï "rbmenu" § १¥à¢¨à®¢ ®',0 |
else |
ErrRunProg db 'Error runing program',0 |
WarningSave db 'Do not forget to save the changes, run the RDSave',0 |
ErrNotFoundIni db 'icon.ini not found',0 |
ErrName db 'The name "rbmenu" reserved',0 |
end if |
|
;------------------------------------------------------------------------------- |
;------- AddDlg.inc --------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
if lang eq ru |
DTitleAdd db '®¡ ¢¨âì ¨ª®ªã',0 |
DTitleProp db '§¬¥¨âì ¨ª®ªã',0 |
|
DCaptName db ' •',0 |
DCaptPath db ' ãâì',0 |
DCaptParams db ' «îç¨',0 |
;DCaptChange db '.',0 |
DCaptCreate db '®§¤ âì',0 |
DCaptProperties db '§¬¥¨âì',0 |
DCaptCancel db '⬥¨âì',0 |
|
else |
DTitleAdd db 'Add icon',0 |
DTitleProp db 'Change icon',0 |
|
DCaptName db ' Name',0 |
DCaptPath db ' Path',0 |
DCaptParams db ' Params',0 |
DCaptCreate db 'Create',0 |
DCaptProperties db 'Change',0 |
DCaptCancel db 'Cancel',0 |
end if |
DCaptDots db '...',0 |
|
;/¥ ¬¥ïâì ¯®«®¦¥¨¥ |
edtName edit_box NAME_LENGTH*8+4,120+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0x90000000,NAME_LENGTH,\ |
DAreaName,mouse_dd,0,0,0 |
edtExePath edit_box END_ICONS_AREAW-120-IMG_SIZE-40,120+IMG_SIZE,30,0FFFFFFh,06F9480h,\ |
0FFh,0h,0x90000000,255, DAreaPath,mouse_dd,0,0,0 |
edtParams edit_box END_ICONS_AREAW-120-IMG_SIZE, 120+IMG_SIZE,54,0FFFFFFh,06F9480h,\ |
0FFh,0h,0x90000000,255, DAreaParams,mouse_dd,0,0,0 |
edtIcon edit_box 28,24,62,0FFFFFFh,0FFFFFFh,0FFh,0h,0x90000000,3,\ |
DAreaIcon,0,0,0,0 |
endEdits: |
;\ |
|
sbIcons: |
dw END_ICONS_AREAW-ICONSX |
dw ICONSX |
dw 15 |
dw END_ICONS_AREAH+3 |
dd 0 |
dd 1 |
.max_area dd 0 |
.cur_area dd ICONS_DRAW_COUNTW |
.position dd 0 |
.bckg_col dd 0 |
.frnt_col dd 0 |
.line_col dd 0 |
.redraw dd 0 |
.delta dd 0 |
.delta2 dd 0 |
.r_size_x dw 0 |
.r_start_x dw 0 |
.r_size_y dw 0 |
|
.r_start_y dw 0 |
.m_pos dd 0 |
.m_pos2 dd 0 |
.m_keys dd 0 |
.run_size dd 0 |
.position2 dd 0 |
.work_size dd 0 |
.all_redraw dd 0 |
.ar_offset dd 0 |
|
;------------------------------------------------------------------------------- |
OpenDialog_data: |
.type dd 0 |
.procinfo dd RBProcInfo ;+4 |
.com_area_name dd communication_area_name ;+8 |
.com_area dd 0 ;+12 |
.opendir_pach dd temp_dir_pach ;+16 |
.dir_default_pach dd communication_area_default_pach ;+20 |
.start_path dd open_dialog_path ;+24 |
.draw_window dd DRedrawWin;draw_window_for_OD ;+28 |
.status dd 0 ;+32 |
.openfile_pach dd DAreaPath;fname_Info ;+36 |
.filename_area dd 0;DAreaPath ;+40 |
.filter_area dd Filter |
.x: |
.x_size dw 420 ;+48 ; Window X size |
.x_start dw 100 ;+50 ; Window X position |
.y: |
.y_size dw 320 ;+52 ; Window y size |
.y_start dw 100 ;+54 ; Window Y position |
|
communication_area_name: |
db 'FFFFFFFF_open_dialog',0 |
open_dialog_path: |
db '/sys/File managers/opendial',0 |
|
communication_area_default_pach: |
db '/sys',0 |
|
Filter dd 0 |
|
;open_dialog db 0 |
;------------------------------------------------------------------------------- |
|
;/¥ à §¤¥«ïâì |
align 4 |
IconAreaH dd ICON_SIZE,ICON_SIZE |
I_END: |
;##### UDATA ################################################################### |
IconArea rb 4*ICON_SIZE*ICON_SIZE |
;\ |
|
sc system_colors |
sc.workL rd 1 |
sc.workH rd 1 |
|
|
align 4 |
IPCbuffer rb 1024 |
|
align 4 |
|
ScreenW rw 1 |
ScreenH rw 1 |
wsX rw 1 |
wsY rw 1 |
wsXe rw 1 |
wsYe rw 1 |
wsW rw 1 |
wsH rw 1 |
|
|
MouseX rd 1 |
MouseY rd 1 |
|
RBSlot rd 1 |
AddX rd 1 |
AddY rd 1 |
|
SelIcon rd 1 |
DlgSelIcon rd 1 |
slotDlgAdd rd 1 |
DlgBufImg rb IMG_SIZE*IMG_SIZE*3 |
|
align 4 |
bufStdIco rb 40 |
IconsOffs rd 100 ;â ¡«¨æ á 㪠§ ⥫ﬨ ª®ªà¥âë¥ ¨ª®ª¨(¤«ï ã᪮२ï) |
PIcoDB rd 1 |
nLoadIcon rd 1 ;®¬¥à ç¨â ¥¬®© ¨§ ini ¨ª®ª¨ |
IconsID rd 100 ;ID ¨ª®®ª - 2 ¡ ©âa + ¡ ©â 0 + ¢ëà ¢¨¢ î騩 ¡ ©â - áâப á 2¬ï è¥á ¤æ¥â¨à¨ç묨 æ¨äà ¬¨ |
|
nameSection rb 4 |
|
align 4 |
icon_count rd 1 |
strip_file rd 1 |
strip_file_size rd 1 |
|
cur_band_compensation rd 1 |
|
;---- RButton ----------------------------------------------------------------------- |
|
bufIni rb 40 |
NumMenuButt rd 1 |
RBMenuCP rd MAX_USER_BUTTONS*2 ;㪠§ ⥫¨ ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ ᮩ (dd) ¤«ï § ¢¥àè î饣® ã«ï |
RMenuW rw 1 |
RMenuH rw 1 |
|
MaxPage rd 1 |
mouse_dd rd 1 |
|
DAreaName rb NAME_LENGTH+1 |
DAreaPath rb 255+1 |
DAreaParams rb 255+1 |
DAreaIcon rb 255+1 |
|
align 4 |
RBProcInfo rb 1024 |
align 4 |
|
|
;------ OpenDialog ------------------------------- |
temp_dir_pach rb 1024 |
fname_Info rb 1024 |
|
;------------------------------------------------------------------------------- |
rb 512 |
stack_mov: ;®¤®¢à¥¬¥® â ᪠âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥îèªã ¥¢®§¬®¦® |
stack_rmenu: |
rb 512 |
stack_dlg: |
rb 512 |
stack_bredraw: |
rb 512 |
stack_main: |
;------------------------------------------------------------------------------ |
ENDMEM: |