Subversion Repositories Kolibri OS

Rev

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

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