Subversion Repositories Kolibri OS

Rev

Rev 3962 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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