Subversion Repositories Kolibri OS

Rev

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