Subversion Repositories Kolibri OS

Rev

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

  1. but_NewFile:
  2.   push eax ebx
  3.   call CanSave
  4.   cmp al,1
  5.   jne @f
  6.     push thread
  7.     push msgbox_2
  8.     call [mb_create] ;message: save changes in file?
  9.     ;mov eax,5
  10.     ;mov ebx,50
  11.     ;int 0x40
  12.     push msgbox_2_funct
  13.     call [mb_setfunctions]
  14.     jmp .ret_f
  15.   @@:
  16.   call On_NewFile
  17.   .ret_f:
  18.   pop ebx eax
  19.   ret
  20.  
  21. On_NewFile:
  22.   push eax
  23.   mov al,1
  24.   call Clear
  25.   call draw_but_toolbar
  26.   stdcall draw_main_win, tedit0
  27.   pop eax
  28.   ret
  29.  
  30. On_SaveAndNewFile:
  31.   call but_SaveFile
  32.   cmp byte[err_sav],0
  33.   jne @f
  34.     call On_NewFile
  35.   @@:
  36.   ret
  37.  
  38. but_OpenFile:
  39.   push eax
  40.   call CanSave
  41.   cmp al,1
  42.   jne @f
  43.     push thread
  44.     push msgbox_5
  45.     call [mb_create] ;message: save changes in file?
  46.     push msgbox_5_funct
  47.     call [mb_setfunctions]
  48.     jmp .ret_f
  49.   @@:
  50.   call On_OpenFile
  51.   .ret_f:
  52.   pop eax
  53.   ret
  54.  
  55. On_OpenFile:
  56.   push eax ebx
  57.   mov eax,70
  58.   mov [run_file_70.func_n], 0
  59.   mov [run_file_70.param1], 0
  60.   mov [run_file_70.param2], 0
  61.   mov [run_file_70.param3], maxChars-2 ;sizeof.symbol
  62.   m2m [run_file_70.param4], [tex]
  63.   mov [run_file_70.rezerv], 0
  64.   push dword[edit1.text]
  65.   pop dword[run_file_70.name]
  66.   mov ebx,run_file_70
  67.   int 0x40
  68.  
  69.   cmp eax,0
  70.   je @f
  71.   cmp eax,6
  72.   je @f
  73.     cmp ax,10
  74.     jl .zifra_0_9
  75.       mov al,'?'
  76.       sub ax,48
  77.     .zifra_0_9:
  78.     add ax,48
  79.  
  80.     mov byte[msgbox_4.err],al
  81.     push thread
  82.     push msgbox_4
  83.     call [mb_create] ;message: Can-t open text file!
  84.     jmp .ret_f
  85.   @@:
  86.   cmp ebx,-1
  87.   je .ret_f
  88.     ;if open file
  89.     call OpenFile
  90.     call draw_but_toolbar
  91.     stdcall draw_main_win, tedit0
  92.     cmp ebx,maxChars-2
  93.     jl .ret_f
  94.     push thread
  95.     push msgbox_1
  96.     call [mb_create]
  97.   .ret_f:
  98.   pop ebx eax
  99.   ret
  100.  
  101. but_SaveFile:
  102.   push eax ebx ecx edx
  103.   call CanSave
  104.   cmp al,0
  105.   je .no_save
  106.  
  107.   mov   ecx,maxChars
  108.   call mem_Alloc
  109.   push eax
  110.  
  111.   mov edx,[tex]
  112.   xor ecx,ecx
  113.   @@:
  114.     call IteratNext
  115.     cmp edx,[tex_1]
  116.     jle @f ;edx = [tex] or edx = [tex]+sizeof.symbol
  117.     mov bl,[edx]
  118.     mov byte[eax],bl
  119.     inc eax
  120.     inc ecx
  121.     jmp @b
  122.   @@:
  123.  
  124.   cmp ecx,0
  125.   je @f
  126.     pop eax
  127.     mov [run_file_70.param4],eax
  128.     push eax
  129.     mov eax,70
  130.     mov [run_file_70.func_n], 2
  131.     mov [run_file_70.param1], 0
  132.     mov [run_file_70.param2], 0
  133.     mov [run_file_70.param3], ecx
  134.     mov [run_file_70.rezerv], 0
  135.     push [edit1.text]
  136.     pop [run_file_70.name]
  137.     mov ebx,run_file_70
  138.     int 0x40
  139.  
  140.     mov [err_sav],al
  141.  
  142.     cmp eax,0
  143.     je .no_msg
  144. ;    cmp eax,6
  145. ;    je @f
  146.       cmp ax,10
  147.       jl .zifra_0_9
  148.         mov al,'?'
  149.         sub ax,48
  150.       .zifra_0_9:
  151.       add ax,48
  152.  
  153.       mov byte[msgbox_6.err],al
  154.       push thread
  155.       push msgbox_6
  156.       call [mb_create] ;message: Can-t save text file!
  157.       jmp @f
  158.     .no_msg:
  159.     m2m [ls_tim],[ch_tim]
  160.   @@:
  161.  
  162.   pop ecx
  163.   call mem_Free
  164.   .no_save:
  165.   pop edx ecx ebx eax
  166.   ret
  167.  
  168. but_FindText:
  169.   push eax ebx ecx edx edi
  170.     call GetPos
  171.     mov eax,[edit2.text]
  172.     mov bl,byte[eax]
  173.     @@:
  174.       call GetFindRezult
  175.       cmp bh,1
  176.       je @f ; find
  177.  
  178.       call IteratNext
  179.       cmp edx,[tex_1]
  180.       jle @f
  181.       jmp @b
  182.     @@:
  183.     cmp bh,0
  184.     je @f
  185.       call GetTexCoords
  186.       inc ebx ;move cursor right
  187.       mov [sel.x1],ebx
  188.       mov [sel.y1],eax
  189.       mov edx,eax
  190.       mov ecx,ebx
  191.       call GoToPos
  192.       mov edx,edi
  193.       call GetTexCoords
  194.       mov [sel.x0],ebx
  195.       mov [sel.y0],eax
  196.       stdcall draw_main_win, tedit0
  197.       jmp .end_find
  198.     @@:
  199.       push thread
  200.       push msgbox_7
  201.       call [mb_create] ;message: Can not find text
  202.     .end_find:
  203.   pop edi edx ecx ebx eax
  204.   ret
  205.  
  206. ;input:
  207. ; eax - text need find
  208. ; bl - first symbol to find
  209. ; edx - first symbol pointer
  210. ;output:
  211. ; bh - rezult
  212. ; edx - last text position (if find sucess)
  213. ; edi - first symbol pointer
  214. GetFindRezult:
  215.   push eax
  216.     mov bh,1
  217.     mov edi,edx ;copy edx
  218.     @@:
  219.       cmp byte[edx],bl
  220.       jne .no_text
  221.  
  222.       inc eax ;*** get next symbol (in find text) ***
  223.       mov bl,byte[eax]
  224.       cmp bl,0
  225.       je @f ;end of find text
  226.  
  227.       call IteratNext ;*** get next symbol (in editor text) ***
  228.       cmp edx,[tex_1]
  229.       jle @f ;end of editor text
  230.  
  231.       jmp @b
  232.       .no_text:
  233.         xor bh,bh
  234.         mov edx,edi ;restore edx
  235.     @@:
  236.   pop eax
  237.   mov bl,byte[eax] ;restore bl
  238.   ret
  239.  
  240. but_OpenSyntax:
  241.   cmp byte[panel_id],TE_PANEL_SYNTAX
  242.   jne @f
  243.     stdcall dword[tl_node_get_data], dword tree1
  244.     pop dword[fn_col_option]
  245.     call InitColText
  246.     call CmColored
  247.     stdcall draw_main_win, tedit0
  248.   @@:
  249.   ret
  250.  
  251. but_select_word:
  252.   push eax ebx ecx edx
  253.  
  254.   call GetPos
  255.   push edx
  256.     call ItPervColorTag
  257.     cmp edx,[tex_1]
  258.     jle @f
  259.       call GetTexCoords
  260.       mov [sel.x0],ebx
  261.       mov [sel.y0],eax
  262.     @@:
  263.   pop edx
  264.     call ItNextColorTag
  265.     cmp edx,[tex_1]
  266.     jle @f
  267.       call GetTexCoords
  268.       mov [sel.x1],ebx
  269.       mov [sel.y1],eax
  270.     @@:
  271.   pop edx ecx ebx eax
  272.   call draw_but_toolbar
  273.   stdcall draw_main_win, tedit0
  274.   jmp still
  275.  
  276. but_cut:
  277.   call but_Copy
  278.   call SetUndo
  279.   push bx
  280.     mov bl,1
  281.     call SelTextDel
  282.   pop bx
  283.   cmp al,1
  284.   jne @f
  285.     call draw_but_toolbar
  286.     stdcall draw_main_win, tedit0
  287.   @@:
  288.   jmp still
  289.  
  290. ;output:
  291. ; al = 1 if copy text
  292. but_Copy:
  293.   push ax
  294.   stdcall IsSel, tedit0
  295.   cmp al,0
  296.   jne @f
  297.     pop ax
  298.     ret ;if not selected text
  299.   @@:
  300.   call SelNormalize
  301.  
  302.   push ebx ecx edx esi
  303.   mov esi,[seln.x1]
  304.   mov ecx,[seln.y1]
  305.   call GetPosByParam
  306.   mov ebx,edx
  307.   mov esi,[seln.x0]
  308.   mov ecx,[seln.y0]
  309.   call GetPosByParam
  310.   mov esi,ebx
  311.  
  312.   xor ecx,ecx
  313.   mov ebx,buf
  314.   ;mov edx,[tex]
  315.   @@:
  316.     cmp edx,[tex_1] ;end of file
  317.     jle @f
  318.     cmp edx,esi ;end of select
  319.     je @f
  320.     inc ecx
  321.     cmp ecx,BUF_SIZE ;owerflow bufer
  322.     je @f
  323.  
  324.     mov al,byte[edx]
  325.     mov byte[ebx],al
  326.     inc ebx
  327.  
  328.     call IteratNext
  329.     jmp @b
  330.   @@:
  331.   add ecx,buf
  332.   mov byte[ebx],0
  333.  
  334.   cmp ecx,0
  335.   je @f
  336.     call draw_but_toolbar
  337.     stdcall draw_bufer, tedit0
  338.   @@:
  339.   pop esi edx ecx ebx ax
  340.   ret
  341.  
  342. but_paste:
  343.   push eax bx esi edi
  344.     mov esi,buf
  345.     call strlen
  346.     cmp eax,1
  347.     jl @f
  348.       call SetUndo
  349.       mov esi,eax
  350.       mov bx,0x0101
  351.       call SelTextDel
  352.       mov edi,buf
  353.       call TextAdd
  354.       call draw_but_toolbar
  355.       stdcall draw_main_win, tedit0
  356.     @@:
  357.   pop edi esi bx eax
  358.   jmp still
  359.  
  360. proc but_find, edit:dword ;вызов/скрытие панели поиска
  361.   push edi
  362.   mov edi,[edit]
  363.  
  364.   cmp byte[panel_id],TE_PANEL_NULL
  365.   je @f
  366.     mov byte[panel_id],TE_PANEL_NULL
  367.     mov ted_wnd_l,0
  368.     jmp .e_if
  369.   @@:
  370.     mov byte[panel_id],TE_PANEL_FIND
  371.     mov ted_wnd_l,TE_PANEL_WIDTH
  372.   .e_if:
  373.   stdcall EvSize,edi
  374.   stdcall draw_main_win,edi
  375.   pop edi
  376.   ret
  377. endp
  378.  
  379. but_replace:
  380.   jmp still
  381.  
  382. but_find_key_w:
  383.   jmp still
  384.  
  385. but_sumb_upper:
  386.   push edi
  387.   mov [conv_table],EvUpper
  388.   call ConvertSelText
  389.   cmp edi,0
  390.   je @f
  391.     stdcall draw_main_win, tedit0
  392.   @@:
  393.   pop edi
  394.   jmp still
  395.  
  396. but_sumb_lover:
  397.   push edi
  398.   mov [conv_table],EvLover
  399.   call ConvertSelText
  400.   cmp edi,0
  401.   je @f
  402.     stdcall draw_main_win, tedit0
  403.   @@:
  404.   pop edi
  405.   jmp still
  406.  
  407. but_reverse:
  408.   push eax ebx
  409.   stdcall IsSel, tedit0
  410.   cmp al,0
  411.   je @f
  412.     call SelNormalize
  413.     push esi ecx edx
  414.       mov esi,[seln.x0]
  415.       mov ecx,[seln.y0]
  416.       call GetPosByParam
  417.       mov eax,edx
  418.       mov esi,[seln.x1]
  419.       cmp esi,0
  420.       je .beg_str
  421.         dec esi
  422.       .beg_str:
  423.       mov ecx,[seln.y1]
  424.       call GetPosByParam
  425.       ;call GetTexPervPos
  426.       mov ebx,edx
  427.     pop edx ecx esi
  428.     ;cmp eax,...
  429.     ;je @f
  430.     call Revers
  431.   @@:
  432.   pop ebx eax
  433.   stdcall draw_main_win, tedit0
  434.   jmp still
  435.  
  436. but_undo:
  437.   mov eax,[tim_Undo]
  438.   cmp [ch_tim],eax
  439.   jbe still
  440.   inc [tim_Undo]
  441.   ;call CmColored
  442.   jmp red_win
  443.  
  444. but_redo:
  445.   cmp [tim_Undo],1
  446.   jb still
  447.   dec [tim_Undo]
  448.   ;call CmColored
  449.   jmp red_win
  450.  
  451.  
  452. but_sumb_invis:
  453.   xor [invis],1
  454.   jmp red_win
  455.  
  456. but_k_words_show:
  457.   xor byte[mode_colored],1
  458.   cmp byte[mode_colored],0
  459.   je red_win
  460.   call CmColored
  461.  
  462. ;  push eax ebx ecx esi edi
  463. ;  mov eax,dword[cur_x]
  464. ;  ColToIndexOffset eax,edx
  465. ;  mov eax,4
  466. ;  mov ebx,50*65536+75
  467. ;  mov ecx,0x40ffffff
  468. ;  mov edi,0x404040
  469. ;  mov esi,10
  470. ;  int 0x40
  471. ;
  472. ;  mov eax,47
  473. ;  mov ecx,250
  474. ;  mov esi,0xffff80
  475. ;  mov edx,50*65536+80
  476. ;  mov esi,FkPos;[keyW]
  477. ;  @@:
  478. ;    mov ebx,0x30001
  479. ;    cmp dx,300
  480. ;    jl .no_br
  481. ;      mov dx,80
  482. ;      add edx,0x200000
  483. ;    .no_br:
  484. ;    add dx,10
  485. ;    push ecx esi
  486. ;      mov ecx,esi
  487. ;      cmp dword[ecx],-1
  488. ;      jne .no_minus
  489. ;       mov ebx,0x10000
  490. ;       mov ecx,1
  491. ;      .no_minus:
  492. ;      mov esi,0xffff00
  493. ;      int 0x40
  494. ;    pop esi ecx
  495. ;    add esi,4
  496. ;  loop @b
  497. ;  pop edi esi ecx ebx eax
  498.   jmp red_win
  499.  
  500. but_CtrlHome:
  501.   mov [cur_x],0
  502.   mov [cur_y],0
  503.   mov [wScr.position],0
  504.   mov [hScr.position],0
  505.  
  506.   call draw_but_toolbar
  507.   stdcall draw_main_win, tedit0
  508.   ret
  509.  
  510. proc but_synt_show, edit:dword
  511.   push edi
  512.   mov edi,[edit]
  513.  
  514.   cmp byte[panel_id],TE_PANEL_NULL
  515.   je @f
  516.     mov byte[panel_id],TE_PANEL_NULL
  517.     mov ted_wnd_l,0
  518.     jmp .e_if
  519.   @@:
  520.     mov byte[panel_id],TE_PANEL_SYNTAX
  521.     mov ted_wnd_l,TE_PANEL_WIDTH
  522.   .e_if:
  523.   stdcall EvSize,edi
  524.   stdcall draw_main_win,edi
  525.   pop edi
  526.   ret
  527. endp
  528.  
  529. sel_KeyUp:
  530.   cmp [dragk],1
  531.   je @f
  532.     call SelStart
  533.     mov [dragk],1
  534.   @@:
  535.   push dx
  536.     call CurMoveUp
  537.     cmp dl,8
  538.     jne @f
  539.       call OnInitialUpdate
  540.     @@:
  541.   pop dx
  542.   call SelMove
  543.   stdcall draw_main_win, tedit0
  544.   ret
  545.  
  546. sel_KeyDown:
  547.   cmp [dragk],1
  548.   je @f
  549.     call SelStart
  550.     mov [dragk],1
  551.   @@:
  552.   push dx
  553.     call CurMoveDown
  554.     cmp dl,8
  555.     jne @f
  556.       call OnInitialUpdate
  557.     @@:
  558.   pop dx
  559.   call SelMove
  560.   stdcall draw_main_win, tedit0
  561.   ret
  562.  
  563. sel_KeyLeft:
  564.   cmp [dragk],1
  565.   je @f
  566.     call SelStart
  567.   @@:
  568.   push dx
  569.     call CurMoveLeft
  570.     call SelMove
  571.     cmp [dragk],1
  572.     je @f
  573.       mov [dragk],1
  574.       mov dl,8
  575.     @@:
  576.     cmp dl,8
  577.     jne @f
  578.       call OnInitialUpdate
  579.       stdcall draw_main_win, tedit0
  580.       jmp .end_f
  581.     @@:
  582.       stdcall draw_cur_line, tedit0
  583.     .end_f:
  584.   pop dx
  585.   ret
  586.  
  587. sel_KeyRight:
  588.   cmp [dragk],1
  589.   je @f
  590.     call SelStart
  591.   @@:
  592.   push dx
  593.     call CurMoveRight
  594.     call SelMove
  595.     cmp [dragk],1
  596.     je @f
  597.       mov [dragk],1
  598.       mov dl,8
  599.     @@:
  600.     cmp dl,8
  601.     jne @f
  602.       call OnInitialUpdate
  603.       stdcall draw_main_win, tedit0
  604.       jmp .end_f
  605.     @@:
  606.       stdcall draw_cur_line, tedit0
  607.     .end_f:
  608.   pop dx
  609.   ret