Subversion Repositories Kolibri OS

Rev

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

  1. idbChange       equ 2
  2. idbCreate       equ 3
  3. idbLeft         equ 4
  4. idbRight        equ 5
  5. idbCancel       equ 1
  6.  
  7. DlgAdd:
  8. DlgProp:
  9.  
  10.         mov     eax,[SelIcon]
  11.         mov     [DlgSelIcon],eax
  12.         cmp     eax,-1
  13.         jne     SetProp
  14.  
  15.         m2m     dword[AddX],dword[MouseX]
  16.         m2m     dword[AddY],dword[MouseY]
  17.  
  18.         mov     ecx,NAME_LENGTH
  19.         mov     edi,DAreaName
  20.         xor     al,al
  21.         rep     stosb
  22.         mov     dword[edtName.size],0
  23.         mov     dword[edtName.pos],0
  24.  
  25.         mov     ecx,256
  26.         mov     edi,DAreaPath
  27.         rep     stosb
  28.         mov     dword[edtExePath.size],0
  29.         mov     dword[edtExePath.pos],0
  30.  
  31.         mov     ecx,256
  32.         mov     edi,DAreaParams
  33.         rep     stosb
  34.         mov     dword[edtParams.size],0
  35.         mov     dword[edtParams.pos],0
  36.  
  37.         mov     ecx,256
  38.         mov     edi,DAreaIcon
  39.         rep     stosb
  40.         mov     dword[edtIcon.size],0
  41.         mov     dword[edtIcon.pos],0
  42.  
  43.         jmp     startDlg
  44.     ;--------
  45. SetProp:
  46.         mov     esi,[IconsOffs+eax*4]
  47.         mov     edi,DAreaName
  48.         xor     ecx,ecx
  49.      @@:
  50.         lodsb
  51.         stosb
  52.         inc     ecx
  53.         test    al,al
  54.         jnz     @b
  55.         dec     ecx
  56.         mov     dword[edtName.size],ecx
  57.         mov     dword[edtName.pos],ecx
  58.  
  59.         xor     ecx,ecx
  60.         mov     edi,DAreaPath
  61.      @@:
  62.         lodsb
  63.         stosb
  64.         inc     ecx
  65.         test    al,al
  66.         jnz     @b
  67.         dec     ecx
  68.         mov     dword[edtExePath.size],ecx
  69.         mov     dword[edtExePath.pos],ecx
  70.  
  71.         xor     ecx,ecx
  72.         mov     edi,DAreaParams
  73.      @@:
  74.         lodsb
  75.         stosb
  76.         inc     ecx
  77.         test    al,al
  78.         jnz     @b
  79.         dec     ecx
  80.         mov     dword[edtParams.size],ecx
  81.         mov     dword[edtParams.pos],ecx
  82.  
  83.         xor     ecx,ecx
  84.         mov     edi,DAreaIcon
  85.      @@:
  86.         lodsb
  87.         stosb
  88.         inc     ecx
  89.         test    al,al
  90.         jnz     @b
  91.         dec     ecx
  92.         mov     dword[edtIcon.size],ecx
  93.         mov     dword[edtIcon.pos],ecx
  94.  
  95.  
  96. startDlg:
  97.         mcall   9,RBProcInfo,-1
  98.         mcall   18,21,dword[RBProcInfo+30]
  99.         mov     [slotDlgAdd],eax
  100.  
  101.         or      [edtName.flags],ed_focus
  102.  
  103.         mcall   40,100111b      ;SetMaskMessage 100111b
  104.         xor     eax,eax
  105.         mov     dword[MaxPage],0
  106.       @@:
  107.         add     eax,ICONS_DRAW_COUNTW
  108.         inc     dword[MaxPage]
  109.         cmp     eax,[icon_count]
  110.         jb      @b
  111.         dec     dword[MaxPage]
  112.         cmp     dword[MaxPage],0
  113.         jne     @f
  114.         mov     dword[MaxPage],1
  115.       @@:
  116.  
  117. DReDraw:
  118.         mcall   48,3,sc,40
  119.  
  120.         mov     eax,[sc.work]
  121.         rol     eax,16
  122.         add     al,9
  123.         jnc     @f
  124.         mov     al,0FFh
  125.       @@:
  126.         rol     eax,16
  127.         add     al,9
  128.         jnc     @f
  129.         mov     al,0FFh
  130.       @@:
  131.         add     ah,9
  132.         jnc     @f
  133.         mov     ah,0FFh
  134.       @@:
  135.  
  136.         mov     [sbIcons.bckg_col],eax
  137.         m2m     [sbIcons.frnt_col],[sc.work]
  138.         m2m     [sbIcons.line_col],[sc.work_graph]
  139.  
  140.         edit_boxes_set_sys_color edtName,edtExePath,sc
  141.         edit_boxes_set_sys_color edtExePath,edtParams,sc
  142.         edit_boxes_set_sys_color edtParams,edtIcon,sc
  143.         edit_boxes_set_sys_color edtIcon,endEdits,sc
  144.  
  145.         call    DRedraw
  146.  
  147. DMessages:
  148.         mcall   10              ;WaitMessage
  149.  
  150.         dec     eax
  151.         jz      DReDraw
  152.         dec     eax
  153.         jz      DKey
  154.         dec     eax
  155.         jz      DButton
  156.         sub     eax,3
  157.         jz      DMouse
  158.  
  159.         jmp  DMessages
  160.  
  161.  
  162. ;---------------------------------------------------------------------
  163. DKey:
  164.         mcall   2               ;GetKeyPressed
  165.         cmp     ah,1Bh
  166.         je      DExit
  167.         cmp     ah,9  ;Tab
  168.         je      DNextEdit
  169.         stdcall [edit_box_key],edtName
  170.         stdcall [edit_box_key],edtExePath
  171.         stdcall [edit_box_key],edtParams
  172.         stdcall [edit_box_key],edtIcon
  173.  
  174.         jmp     DMessages
  175.  
  176.  
  177. DNextEdit:
  178.         test    [edtName.flags],ed_focus
  179.         jne      .DNE1
  180.         test    [edtExePath.flags],ed_focus
  181.         jne      .DNE2
  182.         test    [edtParams.flags],ed_focus
  183.         jne      .DNE3
  184.         test    [edtIcon.flags],ed_focus
  185.         jne      .DNE4
  186.         jmp     DMessages
  187.  
  188.     .DNE1:
  189.         and     [edtName.flags],not ed_focus
  190.         or      [edtExePath.flags],ed_focus
  191.         stdcall [edit_box_draw],edtName
  192.         stdcall [edit_box_draw],edtExePath
  193.         jmp     DMessages
  194.  
  195.     .DNE2:
  196.         and     [edtExePath.flags],not ed_focus
  197.         or      [edtParams.flags],ed_focus
  198.         stdcall [edit_box_draw],edtExePath
  199.         stdcall [edit_box_draw],edtParams
  200.         jmp     DMessages
  201.  
  202.     .DNE3:
  203.         and     [edtParams.flags],not ed_focus
  204.         or      [edtIcon.flags],ed_focus
  205.         stdcall [edit_box_draw],edtParams
  206.         stdcall [edit_box_draw],edtIcon
  207.         jmp     DMessages
  208.  
  209.     .DNE4:
  210.         and     [edtIcon.flags],not ed_focus
  211.         or      [edtName.flags],ed_focus
  212.         stdcall [edit_box_draw],edtName
  213.         stdcall [edit_box_draw],edtIcon
  214.         jmp     DMessages
  215. ;---------------------------------------------------------------------
  216. DButton:
  217.         mcall   17              ;GetButtonPressed
  218.         cmp     ah, idbCancel
  219.         je      DExit
  220.         cmp     ah,idbChange
  221.         je      DSetExePath
  222.         cmp     ah,idbCreate
  223.         je      DSaveIcon
  224.  
  225.         jmp     DMessages
  226. ;-------------------------------------------------------------------------------
  227. DMouse:
  228.         stdcall [edit_box_mouse],edtName
  229.         stdcall [edit_box_mouse],edtExePath
  230.         stdcall [edit_box_mouse],edtParams
  231.         stdcall [edit_box_mouse],edtIcon
  232.  
  233.         push    [sbIcons.position]
  234.         stdcall [scrollbar_h_mouse],sbIcons
  235.         pop     eax
  236.         cmp     eax,[sbIcons.position]
  237.         je      @f
  238.         call    DrawStdIcons
  239.       @@:
  240.  
  241.         mcall   37,2            ;GetMouseKey
  242.         test    eax,1
  243.         jz      DMessages
  244.         mcall   37,1            ;GetMouseWinPos
  245.  
  246.         test    eax,10001000h
  247.         jne     DMessages
  248.         xor     edx,edx
  249.         mov     dx,ax     ;y
  250.         shr     eax,16    ;x
  251.  
  252.         sub     eax,ICONSX
  253.         js      DMessages
  254.         sub     edx,ICONSY
  255.         js      DMessages
  256.  
  257.         cmp     eax,(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
  258.         ja      DMessages
  259.         cmp     edx,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
  260.         ja      DMessages
  261.  
  262.         xor     ebx,ebx
  263.         mov     ecx,[sbIcons.position]
  264.         test    ecx,ecx
  265.         jz      .DM
  266.      @@:
  267.         add     ebx,ICONS_DRAW_COUNTH
  268.         loop    @b
  269.      .DM:
  270.  
  271.         sub     eax,IMG_SIZE+SPCW
  272.         js     .DM1
  273.      @@:
  274.         add     ebx,ICONS_DRAW_COUNTH
  275.         sub     eax,IMG_SIZE+SPCW
  276.         jns     @b
  277.      .DM1:
  278.  
  279.  
  280.         sub     edx,IMG_SIZE+SPCH
  281.         js     .DM2
  282.      @@:
  283.         inc     ebx
  284.         sub     edx,IMG_SIZE+SPCH
  285.         jns     @b
  286.      .DM2:
  287.  
  288.         mov     eax,ebx
  289.  
  290.         cmp     eax,[icon_count]
  291.         jae     DMessages
  292.  
  293.         mov     bl,10
  294.         div     bl
  295.  
  296.         add     ah,30h
  297.         test    al,al
  298.         jz      @f
  299.  
  300.         add     al,30h
  301.         mov     byte[DAreaIcon],al
  302.         mov     byte[DAreaIcon+1],ah
  303.         mov     byte[DAreaIcon+2],0
  304.         mov     dword[edtIcon.size],2
  305.         jmp     .RedrawNum
  306.  
  307.       @@:
  308.         mov     byte[DAreaIcon],ah
  309.         mov     byte[DAreaIcon+1],0
  310.         mov     dword[edtIcon.size],1
  311.         jmp     .RedrawNum
  312.     .RedrawNum:
  313.  
  314.  
  315.         stdcall [edit_box_draw],edtIcon
  316.  
  317.  
  318.         call    DrawSelIcon
  319.         jmp     DReDraw;DMessages;
  320. ;-------------------------------------------------------------------------------
  321. DSetExePath:
  322.         stdcall [OpenDialog_Start],OpenDialog_data
  323.         mov     edi,DAreaPath
  324.         xor     al,al
  325.         or      ecx,-1
  326.         repne   scasb
  327.         sub     edi,DAreaPath
  328.         dec     edi
  329.         mov     dword[edtExePath+12*4],edi
  330.  
  331.         jmp     DMessages;DReDraw;
  332.  
  333. DSaveIcon:
  334.         mov     dword[fiRunProg+8],WarningSave
  335.         mov     dword[fiRunProg+21],pthNotify
  336.         mcall   70,fiRunProg
  337.  
  338.  
  339.         cmp     [DlgSelIcon],-1
  340.         je      @f
  341.                        ;㤠«ï¥¬ ¨§ ini áâ àãî ¨ª®­ªã
  342.         mov     ebx,[DlgSelIcon]
  343.         mov     eax,[IconsOffs+ebx*4]
  344.         stdcall [ini_del_section],IconIni,eax
  345.  
  346.         stdcall EditIcon,[DlgSelIcon],DAreaIcon,DAreaName,DAreaPath,DAreaParams
  347.         jmp     DExitAndSave
  348.      @@:
  349.         stdcall AddIcon,[AddX],[AddY],DAreaIcon,DAreaName,DAreaPath,DAreaParams
  350.         ;jmp     DExitAndSave
  351. ;-------------------------------------------------------------------------------
  352. DExitAndSave:
  353.  
  354.          stdcall [ini_set_str],IconIni,DAreaName,keyPath,DAreaPath,dword[edtExePath.size]
  355.          stdcall [ini_set_str],IconIni,DAreaName,keyParams,DAreaParams,dword[edtParams.size]
  356.          stdcall [ini_set_str],IconIni,DAreaName,keyIco,DAreaIcon,dword[edtIcon.size]
  357.          stdcall [ini_set_int],IconIni,DAreaName,keyX,[MouseX]
  358.          stdcall [ini_set_int],IconIni,DAreaName,keyY,[MouseY]
  359.  
  360. DExit:
  361.         mov     [DlgAddActiv],0
  362.         mov     [slotDlgAdd],0
  363.         mcall   -1              ;ExitThread
  364.  
  365. ;##################################################################
  366. proc DRedraw
  367.         mcall   12,1            ;RedrawWinBeg
  368.         mov     edx,[sc.work]
  369.         or      edx,33000000h
  370.         mcall   0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+185>,,,DTitle
  371.  
  372.         stdcall [edit_box_draw],edtName
  373.         stdcall [edit_box_draw],edtExePath
  374.         stdcall [edit_box_draw],edtParams
  375.         stdcall [edit_box_draw],edtIcon
  376.  
  377.         call    DrawStdIcons
  378.  
  379.  
  380.         stdcall [scrollbar_h_draw],sbIcons
  381.         mcall   38,<ICONSX+1,END_ICONS_AREAW-2>,\
  382.                    <END_ICONS_AREAH+3,END_ICONS_AREAH+3>,\
  383.                 [sc.work_graph]
  384.         mcall     ,<ICONSX+1,END_ICONS_AREAW-2>,\
  385.                    <END_ICONS_AREAH+3+15,END_ICONS_AREAH+3+15>,\
  386.                 [sc.work_graph]
  387.  
  388.         mcall     ,<ICONSX,ICONSX>,\
  389.                    <END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\
  390.                 [sc.work_graph]
  391.         mcall     ,<END_ICONS_AREAW-1,END_ICONS_AREAW-1>,\
  392.                    <END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\
  393.                 [sc.work_graph]
  394.  
  395.                                   ;BUTTONS
  396.         mcall   8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button]
  397.         mcall    ,<305,54>,                       ,idbCancel
  398.         mcall    ,<351,14>,<26,14>             ,idbChange
  399.  
  400.                                   ;CAPTIONS
  401.         mov     ecx,[sc.work_text]
  402.         or      ecx,80000000h
  403.         mcall   4,<30+IMG_SIZE,10>,,DCaptName
  404.         mcall    ,<30+IMG_SIZE,30>,,DCaptPath
  405.         mcall    ,<30+IMG_SIZE,50>,,DCaptParams
  406.         mcall    ,<30+IMG_SIZE,70>,,DCaptIcon
  407.  
  408. if lang eq ru
  409.         mov     ecx,[sc.work_button_text]
  410.         or      ecx,80000000h
  411.         mcall    ,<309,35+END_ICONS_AREAH>,,DCaptCancel
  412.  
  413.         cmp     [DlgSelIcon],-1
  414.         jne     @f
  415.         mpack   ebx,255,35+END_ICONS_AREAH
  416.         mov     edx,DCaptCreate
  417.         jmp     .DRD1
  418.       @@:
  419.         mpack   ebx,252,35+END_ICONS_AREAH
  420.         mov     edx,DCaptProperties
  421.      .DRD1:
  422. else
  423.         mov     ecx,[sc.work_button_text]
  424.         or      ecx,80000000h
  425.         mcall    ,<315,35+END_ICONS_AREAH>,,DCaptCancel
  426.  
  427.  
  428.         cmp     [DlgSelIcon],-1
  429.         jne     @f
  430.         mpack   ebx,257,35+END_ICONS_AREAH
  431.         mov     edx,DCaptCreate
  432.         jmp     .DRD1
  433.       @@:
  434.         mpack   ebx,257,35+END_ICONS_AREAH
  435.         mov     edx,DCaptProperties
  436.      .DRD1:
  437. end if
  438.         mcall
  439.  
  440.         mcall   1,351+4  ,26+10,[sc.work_button_text]
  441.         mcall    ,351+4+3,26+10,
  442.         mcall    ,351+4+6,26+10,
  443.  
  444.         call DrawSelIcon
  445.  
  446.         mcall   12,2            ;RedrawWinEnd
  447.         ret
  448. endp
  449.  
  450.  
  451. proc DrawStdIcons
  452. local IcoX:DWORD,\
  453.       IcoY:DWORD,\
  454.       iIcon:DWORD
  455.  
  456.         mov     ecx,[sbIcons.position]
  457.         xor     eax,eax
  458.         m2m     dword[iIcon],0
  459.  
  460.         test    ecx,ecx
  461.         jz      .DST1
  462.      @@:
  463.         add     [iIcon],ICONS_DRAW_COUNTH
  464.         add     eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH
  465.         loop    @b
  466.    .DST1:
  467.  
  468.         lea     esi,[eax+44]
  469.         add     esi,[raw_pointer]
  470.  
  471.         mov     [IcoX],ICONSX
  472.  
  473.  
  474.         mov     ecx,ICONS_DRAW_COUNTW
  475.   .DrawIcons:
  476.         push    ecx
  477.  
  478.         mov     [IcoY],ICONSY
  479.  
  480.         mov     ecx,ICONS_DRAW_COUNTH
  481.   .DrawIcoStolb:
  482.         push    ecx
  483.  
  484.         mov     edi,IconArea
  485.         mov     edx,IMG_SIZE
  486.  
  487.     .DrawLine:
  488.  
  489.  
  490.         mov     ecx,IMG_SIZE
  491.      .DrawPix:
  492.  
  493.         lodsd
  494.         test    eax,0FF000000h
  495.         jnz     @f
  496.         mov     eax,[sc.work]
  497.      @@:
  498.  
  499.         mov     word[edi],ax
  500.         shr     eax,16
  501.         mov     [edi+2],al
  502.         add     edi,3
  503.  
  504.         loop    .DrawPix
  505.  
  506.         dec     edx
  507.         jnz    .DrawLine
  508.  
  509.         mov     edx,[IcoX]
  510.         shl     edx,16
  511.         mov     dx,word[IcoY]
  512.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>
  513.  
  514.         inc     [iIcon]
  515.         mov     eax,[iIcon]
  516.         cmp     eax,[icon_count]
  517.         jae     .endDrawIcon
  518.  
  519.         add     dword[IcoY],IMG_SIZE+SPCH
  520.         pop     ecx
  521.         loop    .DrawIcoStolb
  522.  
  523.         add     dword[IcoX],IMG_SIZE+SPCW
  524.         pop     ecx
  525.         loop    .DrawIcons
  526.         jmp     .endProc
  527.  
  528.     .endDrawIcon:
  529.  
  530.         mov     ecx,IMG_SIZE*IMG_SIZE
  531.         mov     edi,IconArea
  532.         mov     eax,[sc.work]
  533.         mov     ebx,eax
  534.         shr     ebx,16
  535.      @@:
  536.         mov     word[edi],ax
  537.         mov     [edi+2],bl
  538.         add     edi,3
  539.         loop    @b
  540.  
  541.                                      ;§ â¨à ­¨¥ ­¥ ¨á¯®«ì§®¢ ­ëå ¬¥áâ
  542.         jmp     .Dalee
  543.  
  544.   .DrawIcons2:
  545.         push    ecx
  546.  
  547.         mov     [IcoY],ICONSY
  548.         mov     ecx,ICONS_DRAW_COUNTH
  549.   .DrawIcoStolb2:
  550.         push    ecx
  551.  
  552.         mov     edx,[IcoX]
  553.         shl     edx,16
  554.         mov     dx,word[IcoY]
  555.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>
  556.  
  557.      .Dalee:
  558.         add     dword[IcoY],IMG_SIZE+SPCH
  559.         pop     ecx
  560.         loop    .DrawIcoStolb2
  561.  
  562.         add     dword[IcoX],IMG_SIZE+SPCW
  563.         pop     ecx
  564.         loop    .DrawIcons2
  565.  
  566.    .endProc:
  567.         ret
  568. endp
  569.  
  570. proc DrawSelIcon
  571.         mov     edi,DAreaIcon
  572.         cmp     byte[edi],0
  573.         jne     @f
  574.         ret
  575.       @@:
  576.  
  577.         mov     al,[edi]
  578.         cmp     al,'9'
  579.         ja      .PathToIcon
  580.         cmp     al,'/'
  581.         jne     .GetIconInd
  582.    .PathToIcon:
  583.         mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
  584.         mov     byte[edi+1],0
  585.    .GetIconInd:
  586. ;int3
  587.         sub     al,30h
  588.         cmp     byte[edi+1],0
  589.         je      @f
  590.         shl     eax,1
  591.         lea     eax,[eax*4+eax]
  592.         xor     edx,edx
  593.         mov     dl,[edi+1]
  594.         sub     dl,30h
  595.         add     eax,edx
  596.      @@:             ;eax=num icon
  597.         cmp     eax,[icon_count]
  598.         jb      @f
  599.         xor     eax,eax
  600.      @@:
  601.         test    eax,eax
  602.         je      .DI1
  603.         mov     ecx,eax
  604.         xor     eax,eax
  605.       @@:
  606.         add     eax,IMG_SIZE*IMG_SIZE*4
  607.         loop    @b
  608.      .DI1:
  609.         mov     esi,eax
  610.         add     esi,[raw_pointer]
  611.         add     esi,44
  612.  
  613.         mov     edi,IconArea
  614.         mov     edx,IMG_SIZE
  615.     .DrawLine:
  616.  
  617.         mov     ecx,IMG_SIZE
  618.      .DrawPix:
  619.  
  620.         lodsd
  621.         test    eax,0FF000000h
  622.         jnz     @f
  623.         mov     eax,[sc.work]
  624.      @@:
  625.  
  626.         mov     word[edi],ax
  627.         shr     eax,16
  628.         mov     [edi+2],al
  629.         add     edi,3
  630.  
  631.         loop    .DrawPix
  632.  
  633.         dec     edx
  634.         jnz     .DrawLine
  635.  
  636.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>,<15,25>
  637.  
  638.         ret
  639. endp