Subversion Repositories Kolibri OS

Rev

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