Subversion Repositories Kolibri OS

Rev

Rev 4082 | Blame | Last modification | View Log | Download | RSS feed

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