Subversion Repositories Kolibri OS

Rev

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