Subversion Repositories Kolibri OS

Rev

Rev 3921 | Rev 4003 | 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.         cmp     [DlgSelIcon],-1
  371.         jne      @f
  372.         mov     edi,DTitleAdd
  373.         jmp     .l1
  374.       @@:
  375.         mov     edi,DTitleProp
  376.       .l1:
  377.         mcall   0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+185>,,,
  378.  
  379.         stdcall [edit_box_draw],edtName
  380.         stdcall [edit_box_draw],edtExePath
  381.         stdcall [edit_box_draw],edtParams
  382.         stdcall [edit_box_draw],edtIcon
  383.  
  384.         call    DrawStdIcons
  385.  
  386.  
  387.         stdcall [scrollbar_h_draw],sbIcons
  388.         mcall   38,<ICONSX+1,END_ICONS_AREAW-2>,\
  389.                    <END_ICONS_AREAH+3,END_ICONS_AREAH+3>,\
  390.                 [sc.work_graph]
  391.         mcall     ,<ICONSX+1,END_ICONS_AREAW-2>,\
  392.                    <END_ICONS_AREAH+3+15,END_ICONS_AREAH+3+15>,\
  393.                 [sc.work_graph]
  394.  
  395.         mcall     ,<ICONSX,ICONSX>,\
  396.                    <END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\
  397.                 [sc.work_graph]
  398.         mcall     ,<END_ICONS_AREAW-1,END_ICONS_AREAW-1>,\
  399.                    <END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\
  400.                 [sc.work_graph]
  401.  
  402.                                   ;BUTTONS
  403.         mcall   8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button]
  404.         mcall    ,<305,54>,                       ,idbCancel
  405.         mcall    ,<351,14>,<26,14>             ,idbChange
  406.  
  407.                                   ;CAPTIONS
  408.         mov     ecx,[sc.work_text]
  409.         or      ecx,80000000h
  410.         mcall   4,<30+IMG_SIZE,10>,,DCaptName
  411.         mcall    ,<30+IMG_SIZE,30>,,DCaptPath
  412.         mcall    ,<30+IMG_SIZE,50>,,DCaptParams
  413.         mcall    ,<30+IMG_SIZE,70>,,DCaptIcon
  414.  
  415. if lang eq ru
  416.         mov     ecx,[sc.work_button_text]
  417.         or      ecx,80000000h
  418.         mcall    ,<309,35+END_ICONS_AREAH>,,DCaptCancel
  419.  
  420.         cmp     [DlgSelIcon],-1
  421.         jne     @f
  422.         mpack   ebx,255,35+END_ICONS_AREAH
  423.         mov     edx,DCaptCreate
  424.         jmp     .DRD1
  425.       @@:
  426.         mpack   ebx,252,35+END_ICONS_AREAH
  427.         mov     edx,DCaptProperties
  428.      .DRD1:
  429. else
  430.         mov     ecx,[sc.work_button_text]
  431.         or      ecx,80000000h
  432.         mcall    ,<315,35+END_ICONS_AREAH>,,DCaptCancel
  433.  
  434.  
  435.         cmp     [DlgSelIcon],-1
  436.         jne     @f
  437.         mpack   ebx,257,35+END_ICONS_AREAH
  438.         mov     edx,DCaptCreate
  439.         jmp     .DRD1
  440.       @@:
  441.         mpack   ebx,257,35+END_ICONS_AREAH
  442.         mov     edx,DCaptProperties
  443.      .DRD1:
  444. end if
  445.         mcall
  446.  
  447.         mcall   1,351+4  ,26+10,[sc.work_button_text]
  448.         mcall    ,351+4+3,26+10,
  449.         mcall    ,351+4+6,26+10,
  450.  
  451.         call DrawSelIcon
  452.  
  453.         mcall   12,2            ;RedrawWinEnd
  454.         ret
  455. endp
  456.  
  457.  
  458. proc DrawStdIcons
  459. local IcoX:DWORD,\
  460.       IcoY:DWORD,\
  461.       iIcon:DWORD
  462.  
  463.         mov     ecx,[sbIcons.position]
  464.         xor     eax,eax
  465.         m2m     dword[iIcon],0
  466.  
  467.         test    ecx,ecx
  468.         jz      .DST1
  469.      @@:
  470.         add     [iIcon],ICONS_DRAW_COUNTH
  471.         add     eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH
  472.         loop    @b
  473.    .DST1:
  474.  
  475.         lea     esi,[eax+44]
  476.         add     esi,[raw_pointer]
  477.  
  478.         mov     [IcoX],ICONSX
  479.  
  480.  
  481.         mov     ecx,ICONS_DRAW_COUNTW
  482.   .DrawIcons:
  483.         push    ecx
  484.  
  485.         mov     [IcoY],ICONSY
  486.  
  487.         mov     ecx,ICONS_DRAW_COUNTH
  488.   .DrawIcoStolb:
  489.         push    ecx
  490.  
  491.         mov     edi,IconArea
  492.         mov     edx,IMG_SIZE
  493.  
  494.     .DrawLine:
  495.  
  496.  
  497.         mov     ecx,IMG_SIZE
  498.      .DrawPix:
  499.  
  500.         lodsd
  501.         test    eax,0FF000000h
  502.         jnz     @f
  503.         mov     eax,[sc.work]
  504.      @@:
  505.  
  506.         mov     word[edi],ax
  507.         shr     eax,16
  508.         mov     [edi+2],al
  509.         add     edi,3
  510.  
  511.         loop    .DrawPix
  512.  
  513.         dec     edx
  514.         jnz    .DrawLine
  515.  
  516.         mov     edx,[IcoX]
  517.         shl     edx,16
  518.         mov     dx,word[IcoY]
  519.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>
  520.  
  521.         inc     [iIcon]
  522.         mov     eax,[iIcon]
  523.         cmp     eax,[icon_count]
  524.         jae     .endDrawIcon
  525.  
  526.         add     dword[IcoY],IMG_SIZE+SPCH
  527.         pop     ecx
  528.         loop    .DrawIcoStolb
  529.  
  530.         add     dword[IcoX],IMG_SIZE+SPCW
  531.         pop     ecx
  532.         loop    .DrawIcons
  533.         jmp     .endProc
  534.  
  535.     .endDrawIcon:
  536.  
  537.         mov     ecx,IMG_SIZE*IMG_SIZE
  538.         mov     edi,IconArea
  539.         mov     eax,[sc.work]
  540.         mov     ebx,eax
  541.         shr     ebx,16
  542.      @@:
  543.         mov     word[edi],ax
  544.         mov     [edi+2],bl
  545.         add     edi,3
  546.         loop    @b
  547.  
  548.                                      ;§ â¨à ­¨¥ ­¥ ¨á¯®«ì§®¢ ­ëå ¬¥áâ
  549.         jmp     .Dalee
  550.  
  551.   .DrawIcons2:
  552.         push    ecx
  553.  
  554.         mov     [IcoY],ICONSY
  555.         mov     ecx,ICONS_DRAW_COUNTH
  556.   .DrawIcoStolb2:
  557.         push    ecx
  558.  
  559.         mov     edx,[IcoX]
  560.         shl     edx,16
  561.         mov     dx,word[IcoY]
  562.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>
  563.  
  564.      .Dalee:
  565.         add     dword[IcoY],IMG_SIZE+SPCH
  566.         pop     ecx
  567.         loop    .DrawIcoStolb2
  568.  
  569.         add     dword[IcoX],IMG_SIZE+SPCW
  570.         pop     ecx
  571.         loop    .DrawIcons2
  572.  
  573.    .endProc:
  574.         ret
  575. endp
  576.  
  577. proc DrawSelIcon
  578.         mov     edi,DAreaIcon
  579.         cmp     byte[edi],0
  580.         jne     @f
  581.         ret
  582.       @@:
  583.  
  584.         mov     al,[edi]
  585.         cmp     al,'9'
  586.         ja      .PathToIcon
  587.         cmp     al,'/'
  588.         jne     .GetIconInd
  589.    .PathToIcon:
  590.         mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
  591.         mov     byte[edi+1],0
  592.    .GetIconInd:
  593. ;int3
  594.         sub     al,30h
  595.         cmp     byte[edi+1],0
  596.         je      @f
  597.         shl     eax,1
  598.         lea     eax,[eax*4+eax]
  599.         xor     edx,edx
  600.         mov     dl,[edi+1]
  601.         sub     dl,30h
  602.         add     eax,edx
  603.      @@:             ;eax=num icon
  604.         cmp     eax,[icon_count]
  605.         jb      @f
  606.         xor     eax,eax
  607.      @@:
  608.         test    eax,eax
  609.         je      .DI1
  610.         mov     ecx,eax
  611.         xor     eax,eax
  612.       @@:
  613.         add     eax,IMG_SIZE*IMG_SIZE*4
  614.         loop    @b
  615.      .DI1:
  616.         mov     esi,eax
  617.         add     esi,[raw_pointer]
  618.         add     esi,44
  619.  
  620.         mov     edi,IconArea
  621.         mov     edx,IMG_SIZE
  622.     .DrawLine:
  623.  
  624.         mov     ecx,IMG_SIZE
  625.      .DrawPix:
  626.  
  627.         lodsd
  628.         test    eax,0FF000000h
  629.         jnz     @f
  630.         mov     eax,[sc.work]
  631.      @@:
  632.  
  633.         mov     word[edi],ax
  634.         shr     eax,16
  635.         mov     [edi+2],al
  636.         add     edi,3
  637.  
  638.         loop    .DrawPix
  639.  
  640.         dec     edx
  641.         jnz     .DrawLine
  642.  
  643.         mcall   7,IconArea,<IMG_SIZE,IMG_SIZE>,<15,25>
  644.  
  645.         ret
  646. endp