Subversion Repositories Kolibri OS

Rev

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