Subversion Repositories Kolibri OS

Rev

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