Subversion Repositories Kolibri OS

Rev

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