Subversion Repositories Kolibri OS

Rev

Rev 3921 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;  ¯®â®¬: ¤®¡ ¢¨â § £à㧪ã ico ¨ ¢®§¬®¦­®áâì ¢ë¡®à  ¨ª®­ª¨ ­¥ ¨§ iconstrp
  2.  
  3. ICONS_DAT       equ '/rd/1/icons.dat'
  4. ICON_STRIP      equ '/rd/1/iconstrp.png'
  5. ICON_SIZE       equ 68
  6. IMG_SIZE        equ 32
  7. TEXT_BOTTOM_Y   equ 14
  8. IMAGE_TOP_Y     equ 10    ;>=1
  9. ALIGN_SIZE      equ 68
  10. NAME_LENGTH     equ 11
  11. MIN_NO_MOVING   equ 8
  12.                            ;¤«ï ¤¨ «®£  ᮧ¤ ­¨ï/। ªâ¨à®¢ ­¨ï
  13. ICONSX          equ 20
  14. ICONSY          equ 100
  15. ICONS_DRAW_COUNTW equ 10  ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ è¨à¨­ã
  16. ICONS_DRAW_COUNTH equ 2   ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ ¢ëá®âã
  17. SPCW            equ 3     ;¯à®¡¥« ¬¥¦¤ã ¨ª®­ª ¬¨ ¯® £®à¨§®­â «¨
  18. SPCH            equ 3
  19. END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
  20. END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
  21.  
  22.  
  23.  
  24. SizeData        equ bufStdIco+32
  25. BegData         equ fiStdIco.point
  26. ;------------------------------------------------------------------------------
  27.         use32
  28.         org 0x0
  29.         db 'MENUET01'   ; 8 byte id
  30.         dd 0x01         ; header version
  31.         dd START        ; start of code
  32.         dd I_END       ; size of image
  33.         dd ENDMEM        ; memory for app
  34.         dd stack_area   ; esp
  35.         dd 0            ; boot parameters
  36.         dd 0            ; path
  37. ;------------------------------------------------------------------------------
  38. include 'lang.inc'
  39. include '../../macros.inc'
  40. include '../../proc32.inc'
  41. include '../../develop/libraries/box_lib/trunk/box_lib.mac'
  42. include '../../dll.inc'
  43. ;include '../../debug.inc'
  44.  
  45. ;------------------------------------------------------------------------------
  46. START:          ; start of execution
  47.         mcall   68,11
  48.         stdcall dll.Load,IMPORTS
  49.         test    eax,eax
  50.         jnz     ErrLoadLibs
  51. ;-------------------------------------------------------------------------------
  52.  
  53. ; unpack deflate
  54.         mov     eax,[unpack_DeflateUnpack2]
  55.         mov     [deflate_unpack],eax
  56. ;---------------------------------------------------------------------
  57. ; get size of file ICONSTRP.PNG
  58.         mcall   70,fiStdIco
  59.         test    eax,eax
  60.         jnz     ErrorStrp
  61. ; get memory for ICONSTRP.PNG
  62.         mov     ecx,dword[bufStdIco+32]
  63.         mov     [fiStdIco.size],ecx
  64.         mov     [img_size],ecx
  65.         mcall   68,12
  66.         mov     [fiStdIco.point],eax
  67.         mov     [image_file],eax
  68. ; load ICONSTRP.PNG
  69.         mov     dword[fiStdIco],0
  70.         mcall   70,fiStdIco
  71.         test    eax,eax
  72.         jnz     close
  73. ; convert PNG to RAW
  74.         xor     eax,eax
  75.         mov     [return_code],eax
  76. ;int3
  77.  
  78.         push    image_file
  79.         call    [cnv_png_import.Start]
  80.  
  81.         mov     eax,[raw_pointer]
  82.         mov     ebx,[eax+32]
  83.         mov     [strip_file_size],ebx
  84.         mov     eax,[eax+28]
  85.         add     eax,[raw_pointer]
  86.         mov     [strip_file],eax
  87. ; back memory to system
  88.         mcall   68,13,[fiStdIco.point]
  89.  
  90.         mov     eax,[raw_pointer]
  91.         mov     eax,[eax+8]
  92.         shr     eax,5
  93.         mov     [icon_count],eax
  94.  
  95.         and     eax,0x7
  96.         mov     [cur_band_compensation],eax
  97.  
  98. ;########## § £à㦠¥¬ ¤ ­­ë¥ ¨ª®­®ª ¢ ¯ ¬ïâì ##########################
  99.  
  100.         mcall   70,fiIni                     ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç­®© ¤«ï åà ­¥­¨ï ini ä ©« . …ñ â®ç­® 墠â¨â ¤«ï åà ­¥­¨ï ¤ ­­ëå ®¡ ¨ª®­ª å
  101.         test    eax,eax
  102.         jnz     ErrorIni
  103.  
  104.         cmp     dword[bufIni+32],0
  105.         je      ErrorIni
  106.         mcall   68,12,dword[bufIni+32]
  107.         mov     dword[BegData],eax
  108.         jmp     NoErrIni
  109.  
  110.   ErrorIni:
  111.         mcall   70,fiRunProg
  112.         mcall   -1
  113.  
  114.   NoErrIni:
  115.         m2m     [PIcoDB],[BegData]
  116.  
  117.         stdcall [ini_enum_sections],IconIni,LoadIconsData
  118. ;int3
  119.         mov     eax,dword[PIcoDB]
  120.         sub     eax,[BegData]
  121.         mov     dword[SizeData],eax
  122.         mov     eax,[BegData]
  123.         cmp     eax,[PIcoDB]
  124.         jne     @f
  125.         mov     dword[eax],0
  126.         mov     dword[SizeData],0
  127.    @@:
  128. ;######################################################################
  129.  
  130.         call    FillIconsOffs
  131.  
  132.         mcall   40,0110000b
  133.  
  134.         mov     eax,[icon_count]
  135.         mov     bl,ICONS_DRAW_COUNTH
  136.         div     bl
  137.         test    ah,ah
  138.         jz      @f
  139.         inc     al
  140.      @@:
  141.         and     eax,0FFh
  142.         mov     [sbIcons.max_area],eax
  143.  
  144.         stdcall [OpenDialog_Init],OpenDialog_data
  145.  
  146.         jmp     MSGRedrawIcons
  147.  
  148. messages:
  149.         mcall   10
  150.         sub     eax,5
  151.         jz      MSGRedrawIcons
  152.         dec     eax
  153.         jz      MSGMouse
  154.  
  155.         jmp     messages
  156.  
  157. MSGRedrawIcons:
  158.  
  159.         mcall   48,5
  160.         mov     dx,ax
  161.         shr     eax,16
  162.         sub     dx,ax
  163.         mov     [ScreenX],dx
  164.         mov     ax,bx
  165.         shr     ebx,16
  166.         sub     ax,bx
  167.         mov     [ScreenY],ax
  168.  
  169.         mov     ecx,[MaxNumIcon]
  170.         test    ecx,ecx
  171.         jz      .NoDraw
  172.         xor     ebx,ebx
  173.     @@: push    ecx
  174.         stdcall DrawIcon,ebx,0
  175.         inc     ebx
  176.         pop     ecx
  177.         loop    @b
  178.    .NoDraw:
  179.         jmp     messages
  180.  
  181. MSGMouse:
  182.         mcall   37,0    ;GetMousePos
  183.         xor     ebx,ebx
  184.         mov     bx,ax
  185.         shr     eax,16
  186.         mov     ecx,ebx
  187.         mov     ebx,eax
  188.  
  189.         mcall   34
  190.         cmp     eax,1
  191.         jne     messages
  192.  
  193.         cmp     [RButtonActiv],1
  194.         je      messages
  195.  
  196.         mov     [MouseY],ecx
  197.         mov     [MouseX],ebx
  198.  
  199.  
  200.         mcall   37,2
  201.         test    al,001b
  202.         jnz     LButtonPress
  203.         test    al,010b
  204.         jnz     RButtonPress
  205.         jmp     messages
  206.  
  207. ErrLoadLibs:
  208.         ;dps     '¥ 㤠«®áì § £à㧨âì ­¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨'
  209.         ;debug_newline
  210.         jmp     close
  211. ErrorStrp:
  212.         ;dps     'Žè¨¡ª  ®âªàëâ¨ï iconstrp.png'
  213.         ;debug_newline
  214. close:
  215.         mcall   -1
  216.  
  217. LButtonPress:
  218.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  219. ;int3
  220.         cmp     eax,-1
  221.         jnz     @f
  222.  
  223.     WaitLB1:
  224.         mcall   37,2
  225.         test    al,001b
  226.         jz      messages
  227.         ;Yield
  228.         mcall   5,1
  229.         jmp     WaitLB1
  230.  
  231.  
  232.      @@:
  233.         push    eax
  234.         stdcall DrawIcon,eax,1
  235.    WaitLB:
  236.         mcall   37,2
  237.         test    al,001b
  238.         jz      endWaitLB
  239.  
  240.         mcall   37,0
  241.         xor     ebx,ebx
  242.         mov     bx,ax
  243.         shr     eax,16
  244.         sub     eax,[MouseX]
  245.         jns     @f
  246.         neg     eax
  247.       @@:
  248.         sub     ebx,[MouseY]
  249.         jns     @f
  250.         neg     ebx
  251.       @@:
  252.         cmp     [bFixIcons],0
  253.         jne     @f
  254.         cmp     eax,MIN_NO_MOVING
  255.         ja      MovingIcon
  256.         cmp     ebx,MIN_NO_MOVING
  257.         ja      MovingIcon
  258.       @@:
  259.         ;Yield
  260.         mcall   5,1     ;Sleep   1
  261.         jmp     WaitLB
  262.    endWaitLB:
  263.  
  264.         mcall   37,0
  265.         xor     ebx,ebx
  266.         mov     bx,ax
  267.         shr     eax,16
  268.         mov     ecx,ebx
  269.         mov     ebx,eax
  270.         mov     [MouseX],ebx
  271.         mov     [MouseY],ecx
  272.  
  273.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  274.         cmp     eax,[esp]       ;[esp] = ­®¬¥à ¨ª®­ª¨
  275.         jne     @f
  276.  
  277.         mov     edi,[IconsOffs+eax*4]
  278.         or      ecx,-1
  279.         xor     al,al
  280.         repne   scasb
  281.         mov     ebx,edi
  282.         repne   scasb
  283.                              ;run program
  284.         mov     dword[fiRunProg+8],edi
  285.         mov     dword[fiRunProg+21],ebx
  286.         mcall   70,fiRunProg
  287.         test    eax,80000000h
  288.         jz      @f
  289.  
  290.         mov     dword[fiRunProg+8],ErrRunProg
  291.         mov     dword[fiRunProg+21],pthNotify
  292.         mcall   70,fiRunProg
  293.  
  294.      @@:
  295.         pop     eax
  296.         stdcall RestoreBackgrnd,eax
  297.         jmp     messages
  298.  
  299. ;-------------------------------------------------------------------------------
  300. MovingIcon:
  301. ;int3
  302.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  303.         mov     [SelIcon],eax
  304.         stdcall RestoreBackgrnd,[SelIcon]
  305.  
  306. ;        mov     ecx,[MaxNumIcon]
  307. ;        xor     ebx,ebx
  308. ;   .MI: push    ecx
  309. ;        cmp     ebx,[SelIcon]
  310. ;        je      @f
  311. ;        stdcall DrawIcon,ebx,0
  312. ;      @@:
  313. ;        inc     ebx
  314. ;        pop     ecx
  315. ;        loop    .MI
  316.  
  317.  
  318.  
  319. ;dps 'Moving'
  320. ;debug_newline
  321. ;        mov     edi,[SelIcon]
  322. ;        mov     edi,[IconsOffs+edi*4]
  323. ;        or      ecx,-1
  324. ;        xor     al,al
  325. ;        repne scasb
  326. ;        repne scasb
  327. ;        repne scasb
  328. ;        repne scasb
  329. ;        xor     ebx,ebx
  330. ;        xor     esi,esi
  331. ;        mov     bx,word[edi+2]
  332. ;        mov     si,word[edi]
  333. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  334. ;        cmp     eax,-1
  335. ;        je      @f
  336. ;  dps 'Q'
  337. ;        stdcall DrawIcon,eax,0
  338. ;     @@:
  339. ;
  340. ;        add     ebx,ICON_SIZE-1
  341. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  342. ;        cmp     eax,-1
  343. ;        je      @f
  344. ;  dps 'Q'
  345. ;        stdcall DrawIcon,eax,0
  346. ;
  347. ;     @@:
  348. ;        add     esi,ICON_SIZE-1
  349. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  350. ;        cmp     eax,-1
  351. ;        je      @f
  352. ;  dps 'Q'
  353. ;        stdcall DrawIcon,eax,0
  354. ;
  355. ;     @@:
  356. ;        sub     ebx,ICON_SIZE-1
  357. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  358. ;        cmp     eax,-1
  359. ;        je      @f
  360. ;   dps 'Q'
  361. ;        stdcall DrawIcon,eax,0
  362. ;     @@:
  363.  
  364.  
  365. ; Sleep 40
  366.  
  367. ;qweqwe:
  368.  
  369.         mov    [MovingActiv],1
  370.         mcall   51,1,MovingWnd,stack_move        ;CreateThread MovingWnd,stack_dlg
  371.    .WaitLB:
  372.         mcall   37,2            ;GetMouseKey
  373.         test    al,001b
  374.         jz      .endWaitLB
  375.  
  376.         ;Yield
  377.         mcall   5,1     ;Sleep 1
  378.         jmp     .WaitLB
  379.    .endWaitLB:
  380.         mov    [MovingActiv],0
  381.  
  382.         mcall   37,0            ;GetMousePos
  383.         xor     ebx,ebx
  384.         mov     bx,ax
  385.         shr     eax,16
  386.  
  387.         add     ebx,7
  388.         dec     eax
  389.  
  390.         sub     eax,ICON_SIZE/2
  391.         jns     @f
  392.         xor     eax,eax
  393.       @@:
  394.         sub     ebx,ICON_SIZE/2
  395.         jns     @f
  396.         xor     ebx,ebx
  397.       @@:
  398.  
  399.         movzx   edx,[ScreenX]
  400.         sub     edx,ICON_SIZE
  401.         cmp     eax,edx
  402.         jbe     @f
  403.         mov     eax,edx
  404.       @@:
  405.  
  406.         movzx   edx,[ScreenY]
  407.         sub     edx,ICON_SIZE
  408.         cmp     ebx,edx
  409.         jbe     @f
  410.         mov     ebx,edx
  411.       @@:
  412.  
  413.         xor     edx,edx
  414.         mov     dx,[ScreenX]
  415.         shr     edx,1
  416.         cmp     eax,edx
  417.         jbe     @f
  418.         sub     ax,[ScreenX]
  419.         inc     ax
  420.       @@:
  421.  
  422.         xor     edx,edx
  423.         mov     dx,[ScreenY]
  424.         shr     edx,1
  425.         cmp     ebx,edx
  426.         jbe     @f
  427.         sub     bx,[ScreenY]
  428.         inc     bx
  429.       @@:
  430.  
  431.         stdcall SetPosition,[SelIcon],eax,ebx
  432.         mcall   15,3
  433.  
  434.         m2m     [PIcoDB],[BegData]
  435.         stdcall [ini_enum_sections],IconIni,Ini_SavePos  ;in RButton.inc
  436.  
  437. ;        mov     dword[fInfo],2
  438. ;        mcall   70,fInfo
  439.  
  440.         mov     [bNotSave],1
  441.  
  442.         jmp     messages
  443.  
  444. ;-------------------------------------------------------------------------------
  445.  
  446. RButtonPress:
  447.         cmp     [RButtonActiv],1
  448.         je      messages
  449.         mov     [RButtonActiv],1
  450.  
  451.      @@:
  452.         mcall   37,2    ;GetMouseKey
  453.         test    al,010b
  454.         jz      @f
  455.         mcall   5,1     ;Yield
  456.         jmp     @b
  457.      @@:
  458.  
  459.         mcall   51,1,RButtonWin,stack_rb       ;CreateThread RButtonWin,stack_dlg
  460.  
  461.         jmp     messages
  462.  
  463.  
  464. ;###############################################################################
  465. ;ret eax = 1/0 = 㤠ç /®è¨¡ª 
  466. proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n
  467. local   IconData:DWORD
  468.    ; int3
  469.         push    ebx edi esi
  470.  
  471.         mov     ecx,ICON_SIZE*ICON_SIZE
  472.         xor     eax,eax
  473.         ;mov     eax,0FFFFFFFh
  474.         mov     edi,IconArea
  475.         rep     stosd
  476.  
  477.         mov     eax,[NumIcon]
  478.         cmp     eax,[MaxNumIcon]
  479.         jb      @f
  480.         xor     eax,eax
  481.         pop     esi edi ebx
  482.         ret
  483.       @@:
  484.  
  485.         mov     esi,[IconsOffs+eax*4]
  486.         mov     [IconData],esi
  487.  
  488.                               ;à¨á㥬 ⥪áâ
  489.         mov     edi,esi
  490.         xor     al,al
  491.         or      ecx,-1
  492.         repne scasb
  493.         mov     edx,esi
  494.         mov     eax,edi
  495.         sub     eax,esi
  496.         dec     eax
  497.         shl     eax,1            ;*6
  498.         lea     eax,[eax*2+eax]
  499.         mov     ebx,ICON_SIZE
  500.         sub     ebx,eax
  501.         shr     ebx,1        ;ebx = x ⥪áâ 
  502.         shl     ebx,16
  503.         mov     bx,ICON_SIZE
  504.         sub     bx,TEXT_BOTTOM_Y
  505.         mov     ecx,88000000h
  506.         mov     edi,IconAreaH
  507.         add     ebx,-1*10000h+0
  508.         mcall   4
  509.         add     ebx,2*10000h+0
  510.         mcall   4
  511.         add     ebx,-1*10000h-1
  512.         mcall   4
  513.         add     ebx,0*10000h+2
  514.         mcall   4
  515.         add     ebx,1*10000h+0
  516.         mcall   4
  517.         add     ebx,0*10000h+1
  518.         mcall   4
  519.         add     ebx,-1*10000h+0
  520.         mcall   4
  521.         add     ebx,0*10000h-2
  522.         mov     ecx,88FFFFFFh
  523.         mcall   4
  524.                                     ;à¨á㥬 ª à⨭ªã
  525.  
  526.         mov     edi,esi
  527.         xor     al,al
  528.         or      ecx,-1
  529.         repne   scasb
  530.         repne   scasb
  531.         repne   scasb
  532.         mov     al,[edi]
  533.         cmp     al,'9'
  534.         ja      PathToIcon
  535.         cmp     al,'/'
  536.         jne     GetIconInd
  537.  
  538.    PathToIcon:
  539.         ;stdcall LoadIcon,edi
  540.         ;mov     esi,eax
  541.         mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
  542.         mov     byte[edi+1],0
  543.  
  544.         jmp     CopyToMem
  545.    GetIconInd:
  546.  
  547.         sub     al,30h
  548.         cmp     byte[edi+1],0
  549.         je      @f
  550.         shl     eax,1
  551.         lea     eax,[eax*4+eax]
  552.         xor     edx,edx
  553.         mov     dl,[edi+1]
  554.         sub     dl,30h
  555.         add     eax,edx
  556.      @@:             ;eax=num icon
  557.         cmp     eax,[icon_count]
  558.         jb      @f
  559.         xor     eax,eax
  560.      @@:
  561.         test    eax,eax
  562.         je      DI1
  563.         mov     ecx,eax
  564.         xor     eax,eax
  565.       @@:
  566.         add     eax,IMG_SIZE*IMG_SIZE*4
  567.         loop    @b
  568.      DI1:
  569.         mov     esi,eax
  570.         add     esi,[raw_pointer]
  571.         add     esi,0+4*11
  572.  
  573.   CopyToMem:
  574.         mov     edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4
  575.  
  576.         mov     eax,IMG_SIZE
  577.         mov     edx,eax
  578.       @@:
  579.         mov     ecx,eax
  580.         rep     movsd
  581.         add     edi,(ICON_SIZE-IMG_SIZE)*4
  582.         dec     edx
  583.         jnz     @b
  584.  
  585. ;-----------------
  586.                                 ;¥á«¨ ­ ¤®, â® à¨á㥬 ®¡¢®¤ªã
  587.         cmp     [Activ],0
  588.         je      .NoSelect
  589.  
  590.         mov     edi,IconArea
  591.         mov     eax,0FF000000h
  592.         mov     ecx,ICON_SIZE
  593.         rep     stosd
  594.         ;mov     edi,IconArea+ICON_SIZE*1
  595.  
  596.         mov     ecx,ICON_SIZE-1
  597.     @@: mov     dword[edi],eax
  598.         add     edi,(ICON_SIZE)*4
  599.         loop    @b
  600.  
  601.         mov     edi,IconArea+ICON_SIZE*2*4-4
  602.         mov     ecx,ICON_SIZE-1
  603.     @@: mov     dword[edi],eax
  604.         add     edi,(ICON_SIZE)*4
  605.         loop    @b
  606.  
  607.         mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4
  608.         mov     ecx,ICON_SIZE-2
  609.         rep     stosd
  610.  
  611.  
  612.         mov     edi,IconArea+ICON_SIZE*4+4
  613.         mov     eax,0FFFFFFFFh
  614.         mov     ecx,ICON_SIZE-2
  615.         rep     stosd
  616.  
  617.         mov     edi,IconArea+ICON_SIZE*4+4
  618.         mov     ecx,ICON_SIZE-2
  619.     @@: mov     dword[edi],eax
  620.         add     edi,(ICON_SIZE)*4
  621.         loop    @b
  622.  
  623.         mov     edi,IconArea+ICON_SIZE*2*4-4*2
  624.         mov     ecx,ICON_SIZE-3
  625.     @@: mov     dword[edi],eax
  626.         add     edi,(ICON_SIZE)*4
  627.         loop    @b
  628.  
  629.         mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2
  630.         mov     ecx,ICON_SIZE-3
  631.         rep     stosd
  632. ;--------------
  633.  
  634.    .NoSelect:
  635.         mov     edi,[IconData]
  636.         xor     al,al
  637.         or      ecx,-1
  638.         repne   scasb
  639.         repne   scasb
  640.         repne   scasb
  641.         repne   scasb
  642.         mov     edx,[edi]
  643.  
  644.         test    edx,00008000h
  645.         jz      @f
  646.         add     dx,[ScreenY]
  647.     @@:
  648.         test    edx,80000000h
  649.         jz      @f
  650.         rol     edx,16
  651.         add     dx,[ScreenX]
  652.         rol     edx,16
  653.     @@:
  654.  
  655.         mov     ebx,IconArea
  656.         mov     ecx,ICON_SIZE*10000h+ICON_SIZE
  657.         mcall   25
  658.  
  659. ;        mov     eax,1
  660.         pop     esi edi ebx
  661.         ret
  662. endp
  663.  
  664.  
  665.  
  666. proc RestoreBackgrnd,NumIcon:DWORD
  667.         push    ebx edi
  668.         mov     eax,[NumIcon]
  669.         cmp     eax,[MaxNumIcon]
  670.         jb      @f
  671.         xor     eax,eax
  672.         pop     edi ebx
  673.         ret
  674.       @@:
  675.  
  676.         mov     edi,[IconsOffs+eax*4]
  677.         xor     al,al
  678.         or      ecx,-1
  679.         repne   scasb
  680.         repne   scasb
  681.         repne   scasb
  682.         repne   scasb
  683.  
  684.         mov     ax,[edi+2]
  685.         test    ax,8000h
  686.         jz      @f
  687.         add     ax,[ScreenX]
  688.       @@:
  689.  
  690.         mov     bx,[edi]
  691.         test    bx,8000h
  692.         jz      @f
  693.         add     bx,[ScreenY]
  694.       @@:
  695.  
  696.         mov     cx,ax
  697.         shl     ecx,16
  698.         add     ax,ICON_SIZE
  699.         mov     cx,ax
  700.         mov     dx,bx
  701.         shl     edx,16
  702.         add     bx,ICON_SIZE
  703.         mov     dx,bx
  704.         dec     ecx
  705.         dec     edx
  706.         mcall   15,9
  707.         pop     edi ebx
  708.         ret
  709. endp
  710.  
  711. ;ret eax=numIcon
  712. proc AddIcon stdcall,x,y,lpIcon,lpName,lpExeFile,lpParams
  713.         push    ebx edi esi
  714.  
  715.         mov     eax,[x]
  716.         mov     ebx,[y]
  717.  
  718.         xor     edx,edx
  719.         test    eax,8000h
  720.         jnz     @f
  721.         mov     dx,[ScreenX]    ;¥á«¨ ­ ¤®, â® ¯à¥®¡à §®¢ë¢ ¥¬ ¢
  722.         shr     edx,1           ;®âà¨æ â¥«ì­ë¥ ª®®à¤¨­ âë
  723.         cmp     eax,edx
  724.         jbe     @f
  725.         sub     ax,[ScreenX]
  726.         inc     eax
  727.       @@:
  728.  
  729.         test    ebx,8000h
  730.         jnz     @f
  731.         mov     dx,[ScreenY]
  732.         shr     edx,1
  733.         cmp     ebx,edx
  734.         jbe     @f
  735.         sub     bx,[ScreenY]
  736.         inc     ebx
  737.       @@:
  738.                                 ;¯®¯à ¢ª  ­  á«ãç © ¢ë室  §  ªà © íªà ­ 
  739.  
  740.         test    eax,8000h
  741.         jnz     @f
  742.         mov     dx,[ScreenX]
  743.         sub     edx,ICON_SIZE
  744.         cmp     eax,edx
  745.         jbe     @f
  746.         mov     eax,edx
  747.      @@:
  748.  
  749.         test    ebx,8000h
  750.         jnz     @f
  751.         mov     dx,[ScreenY]
  752.         sub     edx,ICON_SIZE
  753.         cmp     ebx,edx
  754.         jbe     @f
  755.         mov     ebx,edx
  756.      @@:
  757.  
  758.         mov     [x],eax
  759.         mov     [y],ebx
  760.  
  761.         xor     al,al
  762.         or      ecx,-1
  763.         mov     edi,[lpName]
  764.         repne   scasb
  765.         sub     edi,[lpName]
  766.         mov     ebx,edi
  767.         mov     edi,[lpExeFile]
  768.         repne   scasb
  769.         sub     edi,[lpExeFile]
  770.         add     ebx,edi
  771.         mov     edi,[lpParams]
  772.         repne   scasb
  773.         sub     edi,[lpParams]
  774.         add     ebx,edi
  775.         mov     edi,[lpIcon]
  776.         repne   scasb
  777.         sub     edi,[lpIcon]
  778.         add     ebx,edi
  779.         add     ebx,4
  780.         mov     ecx,dword[SizeData]
  781.         add     ecx,ebx
  782.         mov     edx,[IconsOffs]
  783.         mcall   68,20
  784.  
  785.         mov     edx,dword[SizeData]
  786.         mov     dword[SizeData],ecx
  787.         mov     dword[BegData],eax
  788.         mov     edi,eax
  789.         add     edi,edx
  790.         mov     esi,[lpName]
  791.     @@: lodsb
  792.         stosb
  793.         test    al,al
  794.         jnz     @b
  795.  
  796.         mov     esi,[lpExeFile]
  797.     @@: lodsb
  798.         stosb
  799.         test    al,al
  800.         jnz     @b
  801.  
  802.         mov     esi,[lpParams]
  803.     @@: lodsb
  804.         stosb
  805.         test    al,al
  806.         jnz     @b
  807.  
  808.         mov     esi,[lpIcon]
  809.     @@: lodsb
  810.         stosb
  811.         test    al,al
  812.         jnz     @b
  813.  
  814.         mov     eax,[x]
  815.         mov     ebx,[y]
  816.         shl     eax,16
  817.         mov     ax,bx
  818.         mov     dword[edi],eax
  819.  
  820.         stdcall FillIconsOffs
  821.  
  822.         pop     esi edi ebx
  823.         ret
  824. endp
  825.  
  826.  
  827. proc EditIcon stdcall,NumIcon,lpIcon,lpName,lpExeFile,lpParams
  828.         push    edi
  829.         mov     eax,[NumIcon]
  830.         mov     edi,[IconsOffs+eax*4]
  831.         xor     al,al
  832.         or      ecx,-1
  833.         repne   scasb
  834.         repne   scasb
  835.         repne   scasb
  836.         repne   scasb
  837.         push    dword[edi]
  838.         stdcall DelIcon,[NumIcon]
  839.         pop     edx
  840.         xor     eax,eax
  841.         mov     ax,dx
  842.         shr     edx,16
  843.         stdcall AddIcon,edx,eax,DAreaIcon,DAreaName,DAreaPath,DAreaParams
  844.         pop     edi
  845.         ret
  846. endp
  847.  
  848. proc SetPosition stdcall,NumIcon,x,y
  849.         push    edi
  850.         mov     eax,[NumIcon]
  851.         mov     edi,[IconsOffs+eax*4]
  852.         xor     al,al
  853.         or      ecx,-1
  854.         repne   scasb
  855.         repne   scasb
  856.         repne   scasb
  857.         repne   scasb
  858.         mov     eax,[x]
  859.         shl     eax,16
  860.         mov     ax,word[y]
  861.         mov     dword[edi],eax
  862.         pop     edi
  863.         ret
  864. endp
  865.  
  866. proc GetNumIcon stdcall,x,y,NumIconI  ;­®¬¥à ¨ª®­ª¨, ª®â®àë© ¯à®¢¥àïâì ­¥ ­ ¤® ¨«¨ -1
  867. local posX:WORD,\
  868.       posY:WORD
  869.         push    ebx edi
  870.         mov     ecx,[MaxNumIcon]
  871.         test    ecx,ecx
  872.         jnz     @f
  873.         or      eax,-1
  874.         pop     edi ebx
  875.         ret
  876.      @@:
  877.  
  878.         xor     ebx,ebx
  879.    .TestIcon:
  880.         cmp     dword[NumIconI],-1
  881.         je      @f
  882.  
  883.         cmp     ebx,[NumIconI]
  884.         jne     @f
  885.         inc     ebx
  886.         dec     ecx
  887.         test    ecx,ecx
  888.         jz      .NoIcon
  889.      @@:
  890.  
  891.         push    ecx
  892.  
  893.         or      ecx,-1
  894.         xor     al,al
  895.         mov     edi,[IconsOffs+ebx*4]
  896.         repne   scasb
  897.         repne   scasb
  898.         repne   scasb
  899.         repne   scasb
  900.  
  901.         mov     ax,[edi+2]
  902.         test    ax,8000h
  903.         jz      @f
  904.         add     ax,[ScreenX]
  905.       @@:
  906.         mov     [posX],ax
  907.  
  908.         mov     ax,[edi]
  909.         test    ax,8000h
  910.         jz      @f
  911.         add     ax,[ScreenY]
  912.       @@:
  913.         mov     [posY],ax
  914.  
  915.         mov     eax,[x]
  916.         mov     edx,[y]
  917.  
  918.         cmp     ax,[posX]
  919.         jb      @f
  920.         add     word[posX],ICON_SIZE
  921.         cmp     ax,[posX]
  922.         ja      @f
  923.  
  924.         cmp     dx,[posY]
  925.         jb      @f
  926.         add     word[posY],ICON_SIZE
  927.         cmp     dx,[posY]
  928.         ja      @f
  929.  
  930.         jmp     .OkIcon
  931.      @@:
  932.  
  933.         inc     ebx
  934.         pop     ecx
  935.  
  936.         ;loop    .TestIcon
  937.         dec     ecx
  938.         jnz     .TestIcon
  939.         jmp     .NoIcon
  940.    .OkIcon:
  941.         mov     eax,ebx
  942.         pop     edi ebx
  943.         ret
  944.    .NoIcon:
  945.         or      eax,-1
  946.         pop     edi ebx
  947.         ret
  948. endp
  949.  
  950. proc DelIcon stdcall,NumIcon
  951.         push    ebx edi esi
  952.  
  953.         cmp     [MaxNumIcon],0
  954.         je      .end
  955.  
  956.         cmp     [MaxNumIcon],1
  957.         je      .OhneIco
  958.  
  959.         mov     ebx,[NumIcon]
  960.  
  961.         mov     eax,[MaxNumIcon]
  962.         dec     eax
  963.         mov     [MaxNumIcon],eax
  964.         cmp     ebx,eax
  965.         je      @f
  966.  
  967.         shl     ebx,2
  968.  
  969.         mov     ecx,dword[BegData]
  970.         add     ecx,dword[SizeData]
  971.         sub     ecx,[IconsOffs+4+ebx]
  972.  
  973.         mov     edx,[IconsOffs+4+ebx]
  974.         sub     edx,[IconsOffs+ebx]
  975.         sub     dword[SizeData],edx
  976.  
  977.         mov     esi,[IconsOffs+4+ebx]
  978.         mov     edi,[IconsOffs+ebx]
  979.         rep     movsb
  980.         jmp     .endDel
  981.  
  982.      @@:
  983.         mov     ecx,dword[BegData]
  984.         add     ecx,dword[SizeData]
  985.         sub     ecx,[IconsOffs+ebx*4]
  986.         sub     dword[SizeData],ecx
  987.  
  988.   .endDel:
  989.         stdcall FillIconsOffs
  990.         jmp     .end
  991.  
  992. .OhneIco:
  993.         mov     edi,[BegData]
  994.         mov     [SizeData],0
  995.         mov     dword[edi],0
  996.         mov     [MaxNumIcon],0
  997.         mov     dword[IconsOffs],0
  998.    .end:
  999.         mcall   15,3
  1000.         pop     esi edi ebx
  1001.         ret
  1002. endp
  1003.                                  ;§ ¯®«­ï¥â MaxNumIcon,IconsOffs
  1004. proc FillIconsOffs
  1005.         push    ebx edi
  1006.         mov     edi,[BegData]
  1007.         mov     dword[MaxNumIcon],0
  1008.         cmp     dword[edi],0
  1009.         jne     @f
  1010.         mov     dword[IconsOffs],0
  1011.         pop     edi ebx
  1012.         ret
  1013.     @@:
  1014.  
  1015.         mov     [IconsOffs],edi
  1016.         xor     al,al
  1017.         xor     edx,edx
  1018.         mov     ebx,dword[SizeData]
  1019.         add     ebx,dword[BegData]
  1020.         or      ecx,-1
  1021.  .CalcNumIc:
  1022.         repne   scasb
  1023.         repne   scasb
  1024.         repne   scasb
  1025.         repne   scasb
  1026.         add     edi,4
  1027.         mov     dword[IconsOffs+edx+4],edi
  1028.         inc     dword[MaxNumIcon]
  1029.         add     edx,4
  1030.  
  1031.         cmp     edi,ebx
  1032.         jae     @f
  1033.         jmp     .CalcNumIc
  1034.    @@:
  1035.  
  1036.         mov     dword[IconsOffs+edx],0
  1037.         pop     edi ebx
  1038.         ret
  1039. endp
  1040.  
  1041. proc LoadIconsData stdcall,f_name,sec_name
  1042.         push    ebx esi edi
  1043.  
  1044.         mov     edi,secRButt
  1045.         mov     esi,[sec_name]
  1046.     @@: lodsb
  1047.         scasb
  1048.         jnz     .lid1
  1049.         test    al,al
  1050.         jnz     @b
  1051.  
  1052.         mov     eax,1
  1053.         pop     edi esi ebx
  1054.         ret
  1055.      .lid1:
  1056.  
  1057.         mov     edi,[PIcoDB]
  1058.         mov     esi,[sec_name]
  1059.     @@: lodsb
  1060.         stosb
  1061.         test    al,al
  1062.         jnz     @b
  1063.  
  1064.         stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0
  1065.         test    eax,eax
  1066.         jz      @f
  1067.         xor     eax,eax
  1068.         pop     edi esi ebx
  1069.         ret
  1070.      @@:
  1071.         xor     al,al
  1072.         or      ecx,-1
  1073.         repne   scasb
  1074.  
  1075.         stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0
  1076.         test    eax,eax
  1077.         jz      @f
  1078.         xor     eax,eax
  1079.         pop     edi esi ebx
  1080.         ret
  1081.      @@:
  1082.         xor     al,al
  1083.         or      ecx,-1
  1084.         repne   scasb
  1085.  
  1086.         stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0
  1087.         test    eax,eax
  1088.         jz      @f
  1089.         xor     eax,eax
  1090.         pop     edi esi ebx
  1091.         ret
  1092.      @@:
  1093.         xor     al,al
  1094.         or      ecx,-1
  1095.         repne   scasb
  1096.  
  1097.         stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h
  1098.         cmp     eax,80000000h
  1099.         jne     @f
  1100.         xor     eax,eax
  1101.         pop     edi esi ebx
  1102.         ret
  1103.      @@:
  1104.         mov     word[edi+2],ax
  1105.  
  1106.         stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h
  1107.         cmp     eax,80000000h
  1108.         jne     @f
  1109.         xor     eax,eax
  1110.         pop     edi esi ebx
  1111.         ret
  1112.      @@:
  1113.         mov     word[edi],ax
  1114.         add     edi,4
  1115.         mov     [PIcoDB],edi
  1116.  
  1117.         mov     eax,1
  1118.         pop     edi esi ebx
  1119.         ret
  1120. endp
  1121.  
  1122. include 'RButton.inc'
  1123. include 'DlgAdd.inc'
  1124. include 'Moving.inc'
  1125. ;include 'Ico.inc'
  1126.  
  1127. ;'Eolite',0,'/sys/File managers/eolite',0,'/hd0/3/Muzik',0,'1',0,00010001h
  1128. ;-------------------------------------------------------------------------------
  1129. ;##### DATA ####################################################################
  1130. ;-------------------------------------------------------------------------------
  1131. ; not change this section!!!
  1132. ; start section
  1133. ;------------------------------------------------------------------------------
  1134. align 4
  1135. image_file     dd 0 ;+0
  1136. raw_pointer    dd 0 ;+4
  1137. return_code    dd 0 ;+8
  1138. img_size       dd 0 ;+12
  1139. deflate_unpack dd 0 ;+16        ; not use for scaling
  1140. raw_pointer_2  dd 0 ;+20        ; not use for scaling
  1141. ;------------------------------------------------------------------------------
  1142. ; end section
  1143. ;------------------------------------------------------------------------------
  1144.  
  1145.  
  1146. align 4
  1147. fiStdIco:
  1148.         dd 5
  1149.         dd 0
  1150.         dd 0
  1151. .size   dd 0
  1152. .point  dd bufStdIco
  1153.         db ICON_STRIP,0
  1154.  
  1155.  
  1156. align 4
  1157. fiRunProg:            ;¤«ï § ¯ã᪠ ¯à®£à ¬¬
  1158.         dd 7
  1159.         dd 0
  1160.         dd 0
  1161.         dd 0
  1162.         dd ErrNotFoundIni
  1163.         db 0
  1164.         dd pthNotify
  1165.  
  1166. fiIni   dd 5           ;¤«ï ini ä ©« 
  1167.         dd 0
  1168.         dd 0
  1169.         dd 0
  1170.         dd bufIni
  1171.         db '/rd/1/icon.ini',0
  1172.  
  1173.  
  1174. IconsFile       db ICON_STRIP,0
  1175. NameIconsDat    db ICONS_DAT,0
  1176. align 4
  1177. MaxNumIcon      dd 0           ;ª®«¨ç¥á⢮ ¨ª®­®ª
  1178.  
  1179. bFixIcons       dd 1
  1180. bNotSave        dd 0
  1181.  
  1182. LButtonActiv    dd 0
  1183. RButtonActiv    dd 0
  1184. MovingActiv     dd 0
  1185. DlgAddActiv     dd 0
  1186.  
  1187. slotDlgAdd      dd 0
  1188.  
  1189. IconIni         db '/rd/1/icon.ini',0
  1190.  
  1191.  
  1192. ;keyName         db 'name',0
  1193. keyPath         db 'path',0
  1194. keyParams       db 'param',0
  1195. keyIco          db 'ico',0
  1196. keyX            db 'x',0
  1197. keyY            db 'y',0
  1198.  
  1199. ;-------------------------------------------------------------------------------
  1200. IMPORTS:
  1201. library cnv_png,'cnv_png.obj',\
  1202.         archiver,'archiver.obj',\
  1203.         box_lib,'box_lib.obj',\
  1204.         proc_lib,'proc_lib.obj',\
  1205.         libini,'libini.obj'
  1206.  
  1207. import  cnv_png,\
  1208.         cnv_png_import.Start,'START',\
  1209.         cnv_png_import.Version,'version',\
  1210.         cnv_png_import.Check,'Check_Header',\
  1211.         cnv_png_import.Assoc,'Associations'
  1212.  
  1213. import  archiver,\
  1214.         unpack_DeflateUnpack2,'deflate_unpack2'
  1215.  
  1216. import  box_lib,\
  1217.         edit_box_draw,'edit_box',\
  1218.         edit_box_key,'edit_box_key',\
  1219.         edit_box_mouse,'edit_box_mouse',\
  1220.         scrollbar_h_draw,'scrollbar_h_draw',\
  1221.         scrollbar_h_mouse,'scrollbar_h_mouse'
  1222.  
  1223. import  proc_lib,\
  1224.         OpenDialog_Init,'OpenDialog_init',\
  1225.         OpenDialog_Start,'OpenDialog_start'
  1226.  
  1227. import  libini,\
  1228.         ini_enum_sections,'ini_enum_sections',\
  1229.         ini_enum_keys,'ini_enum_keys',\
  1230.         ini_get_str,'ini_get_str',\
  1231.         ini_set_str,'ini_set_str',\
  1232.         ini_get_color,'ini_get_color',\
  1233.         ini_get_int,'ini_get_int',\
  1234.         ini_set_int,'ini_set_int',\
  1235.         ini_del_section,'ini_del_section'
  1236.  
  1237.  
  1238. ;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val)
  1239. ;ini.set_str (f_name, sec_name, key_name, buffer, buf_len)
  1240.  
  1241.  
  1242. ;-------------------------------------------------------------------------------
  1243. ;----- RButton.inc -------------------------------------------------------------
  1244. ;-------------------------------------------------------------------------------
  1245. secRButt        db 'rbmenu',0
  1246. keyMenuColor    db 'menucolor',0
  1247.  
  1248. if lang eq ru
  1249.  RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
  1250.  RMenuAlign     db '‚ë஢­ïâì ¯® á¥âª¥',0
  1251.  RMenuAdd       db '„®¡ ¢¨âì',0
  1252.  RMenuDel       db '“¤ «¨âì',0
  1253.  RMenuProp      db '‘¢®©á⢠',0
  1254.  RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
  1255.  RMenuOnMoving  db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
  1256. else if lang eq et
  1257.  RMenuRedrawFon db 'Värskenda',0
  1258.  RMenuAlign     db 'Tõmme võrgule',0
  1259.  RMenuAdd       db 'Lisa',0
  1260.  RMenuDel       db 'Kustuta',0
  1261.  RMenuProp      db 'Omadused',0
  1262.  RMenuOffMoving db 'Paranda ikoonid',0
  1263.  RMenuOnMoving  db 'Ära paranda ikoone',0
  1264. else
  1265.  
  1266.  RMenuRedrawFon db 'Redraw',0
  1267.  RMenuAlign     db 'Snap to Grid',0
  1268.  RMenuAdd       db 'Add',0
  1269.  RMenuDel       db 'Delete',0
  1270.  RMenuProp      db 'Properties',0
  1271.  RMenuOffMoving db 'Fix the icons',0
  1272.  RMenuOnMoving  db 'Unfix the icons',0
  1273.  
  1274. end if
  1275.  
  1276. if lang eq ru
  1277.  
  1278.  ErrRunProg     db 'Žè¨¡ª  § ¯ã᪠ ¯à®£à ¬¬ë',0
  1279.  WarningSave    db '¥ § ¡ã¤ì⥠á®åà ­¨âì ¨§¬¥­¥­¨ï, § ¯ãáâ¨âì RDSave',0
  1280.  ErrNotFoundIni db '¥ ­ ©¤¥­ icon.ini',0
  1281. else if lang eq et
  1282.  ErrRunProg     db 'Programmi käivitamise viga',0
  1283.  WarningSave    db 'Ära unusta muudatusi salvestada, käivita RDSave',0
  1284.  ErrNotFoundIni db 'icon.ini ei leitud',0
  1285. else
  1286.  
  1287.  ErrRunProg     db 'Error runing program',0
  1288.  WarningSave    db 'Do not forget to save the changes, run the RDSave',0
  1289.  ErrNotFoundIni db 'icon.ini not found',0
  1290.  
  1291. end if
  1292.  
  1293.  
  1294. pthNotify       db '/rd/1/@notify',0
  1295.  
  1296. ;-------------------------------------------------------------------------------
  1297. ;------- AddDlg.inc ---------------------------------------------------------------
  1298. ;-------------------------------------------------------------------------------
  1299. if lang eq ru
  1300. DTitle          db '„®¡ ¢¨âì ¨ª®­ªã',0
  1301.  
  1302. DCaptName       db 'ˆ¬ï',0
  1303. DCaptPath       db 'ãâì',0
  1304. DCaptParams     db ' à ¬¥âàë',0
  1305. DCaptIcon       db 'ˆª®­ª ',0
  1306. DCaptCreate     db '‘®§¤ âì',0
  1307. DCaptProperties db 'ˆ§¬¥­¨âì',0
  1308. DCaptCancel     db 'Žâ¬¥­¨âì',0
  1309.  
  1310. else if lang eq et
  1311. DTitle          db 'Lisa ikoon',0
  1312.  
  1313. DCaptName       db 'Nimi',0
  1314. DCaptPath       db 'Asukoht',0
  1315. DCaptParams     db 'Parameetrid',0
  1316. DCaptIcon       db 'Ikoon',0
  1317. ;DCaptChange     db '.',0
  1318. DCaptCreate     db 'Loo',0
  1319. DCaptProperties db 'Muuda',0
  1320. DCaptCancel     db 'Katkesta',0
  1321.  
  1322. else
  1323. DTitle          db 'Add icon',0
  1324.  
  1325. DCaptName       db 'Name',0
  1326. DCaptPath       db 'Path',0
  1327. DCaptParams     db 'Parameters',0
  1328. DCaptIcon       db 'Icon',0
  1329. DCaptCreate     db 'Create',0
  1330. DCaptProperties db 'Change',0
  1331. DCaptCancel     db 'Cancel',0
  1332. end if
  1333.  
  1334. ;/­¥ ¬¥­ïâì ¯®«®¦¥­¨¥
  1335. edtName    edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\
  1336.                 DAreaName,mouse_dd,0,0,0
  1337. edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
  1338.                 DAreaPath,mouse_dd,0,0,0
  1339. edtParams  edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,46,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
  1340.                 DAreaParams,mouse_dd,0,0,0
  1341. edtIcon    edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,66,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
  1342.                 DAreaIcon,mouse_dd,0,0,0
  1343. endEdits:
  1344. ;\
  1345.  
  1346. sbIcons:
  1347.              dw END_ICONS_AREAW-ICONSX
  1348.              dw ICONSX
  1349.              dw 15
  1350.              dw END_ICONS_AREAH+3
  1351.              dd 0
  1352.              dd 1
  1353.  .max_area   dd 0
  1354.  .cur_area   dd ICONS_DRAW_COUNTW
  1355.  .position   dd 0
  1356.  .bckg_col   dd 0
  1357.  .frnt_col   dd 0
  1358.  .line_col   dd 0
  1359.  .redraw     dd 0
  1360.  .delta      dd 0
  1361.  .delta2     dd 0
  1362.  .r_size_x   dw 0
  1363.  .r_start_x  dw 0
  1364.  .r_size_y   dw 0
  1365.  .r_start_y  dw 0
  1366.  .m_pos      dd 0
  1367.  .m_pos2     dd 0
  1368.  .m_keys     dd 0
  1369.  .run_size   dd 0
  1370.  .position2  dd 0
  1371.  .work_size  dd 0
  1372.  .all_redraw dd 0
  1373.  .ar_offset  dd 0
  1374.  
  1375. ;-------------------------------------------------------------------------------
  1376. OpenDialog_data:
  1377. .type                   dd 0
  1378. .procinfo               dd RBProcInfo       ;+4
  1379. .com_area_name          dd communication_area_name      ;+8
  1380. .com_area               dd 0    ;+12
  1381. .opendir_pach           dd temp_dir_pach        ;+16
  1382. .dir_default_pach       dd communication_area_default_pach      ;+20
  1383. .start_path             dd open_dialog_path     ;+24
  1384. .draw_window            dd DRedraw;draw_window_for_OD   ;+28
  1385. .status                 dd 0    ;+32
  1386. .openfile_pach          dd DAreaPath;fname_Info   ;+36
  1387. .filename_area          dd 0;DAreaPath        ;+40
  1388. .filter_area            dd Filter
  1389. .x:
  1390. .x_size                 dw 420 ;+48 ; Window X size
  1391. .x_start                dw 100 ;+50 ; Window X position
  1392. .y:
  1393. .y_size                 dw 320 ;+52 ; Window y size
  1394. .y_start                dw 100 ;+54 ; Window Y position
  1395.  
  1396. communication_area_name:
  1397.         db 'FFFFFFFF_open_dialog',0
  1398. open_dialog_path:
  1399.         db '/sys/File managers/opendial',0
  1400.  
  1401. communication_area_default_pach:
  1402.         db '/sys',0
  1403.  
  1404. Filter  dd 0
  1405.  
  1406. ;open_dialog     db 0
  1407. ;-------------------------------------------------------------------------------
  1408.  
  1409. ;/­¥ à §¤¥«ïâì
  1410. align 4
  1411. IconAreaH       dd ICON_SIZE,ICON_SIZE
  1412. I_END:
  1413. ;##### UDATA ###################################################################
  1414. IconArea        rb 4*ICON_SIZE*ICON_SIZE
  1415. ;\
  1416.  
  1417. ScreenX         rw 1
  1418. ScreenY         rw 1
  1419.  
  1420. MouseX          rd 1
  1421. MouseY          rd 1
  1422.  
  1423. RBSlot          rd 1
  1424.  
  1425. AddX            rd 1
  1426. AddY            rd 1
  1427.  
  1428. SelIcon         rd 1
  1429. DlgSelIcon      rd 1
  1430.  
  1431. sc              system_colors
  1432.  
  1433. align 4
  1434. bufStdIco       rb 40
  1435. IconsOffs       rd 100
  1436. PIcoDB          rd 1
  1437.  
  1438. align 4
  1439. icon_count      rd 1
  1440. strip_file      rd 1
  1441. strip_file_size rd 1
  1442.  
  1443. cur_band_compensation rd 1
  1444.  
  1445. ;---- RButton -----------------------------------------------------------------------
  1446. bufIni          rb 40
  1447. NumUserButt     rd 1
  1448. RBUser          rd 16*2+1
  1449. RMenuW          rw 1
  1450. RMenuH          rw 1
  1451. RMenuHsb        rw 1
  1452.  
  1453. MaxPage         rd 1
  1454.  
  1455. mouse_dd        rd 1
  1456.  
  1457. DAreaName       rb NAME_LENGTH+1
  1458. DAreaPath       rb 256+1
  1459. DAreaParams     rb 256+1
  1460. DAreaIcon       rb 256+1
  1461.  
  1462. align 4
  1463. RBProcInfo      rb 1024
  1464. RBMenuColor     rd 1
  1465.  
  1466.  
  1467.  
  1468. ; OpenDialog
  1469. temp_dir_pach   rb 1024
  1470. fname_Info      rb 1024
  1471. ;-------------------------------------------------------------------------------
  1472.                 rb 256
  1473. stack_move:
  1474. stack_rb:
  1475.                 rb 1024
  1476. stack_dlg:
  1477. align 4
  1478.                 rb 1024
  1479. stack_area:
  1480. ;------------------------------------------------------------------------------
  1481. ENDMEM: