forked from KolibriOS/kolibrios
d5f5e7780a
1) sync with the new box_lib.obj 2) corrected bug that could occur when pressing Ctrl+F 3) change the code git-svn-id: svn://kolibrios.org@1449 a494cfbc-eb01-0410-851d-a64ba20cac60
609 lines
10 KiB
PHP
609 lines
10 KiB
PHP
but_NewFile:
|
||
push eax ebx
|
||
call CanSave
|
||
cmp al,1
|
||
jne @f
|
||
push thread
|
||
push msgbox_2
|
||
call [mb_create] ;message: save changes in file?
|
||
;mov eax,5
|
||
;mov ebx,50
|
||
;int 0x40
|
||
push msgbox_2_funct
|
||
call [mb_setfunctions]
|
||
jmp .ret_f
|
||
@@:
|
||
call On_NewFile
|
||
.ret_f:
|
||
pop ebx eax
|
||
ret
|
||
|
||
On_NewFile:
|
||
push eax
|
||
mov al,1
|
||
call Clear
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
pop eax
|
||
ret
|
||
|
||
On_SaveAndNewFile:
|
||
call but_SaveFile
|
||
cmp byte[err_sav],0
|
||
jne @f
|
||
call On_NewFile
|
||
@@:
|
||
ret
|
||
|
||
but_OpenFile:
|
||
push eax
|
||
call CanSave
|
||
cmp al,1
|
||
jne @f
|
||
push thread
|
||
push msgbox_5
|
||
call [mb_create] ;message: save changes in file?
|
||
push msgbox_5_funct
|
||
call [mb_setfunctions]
|
||
jmp .ret_f
|
||
@@:
|
||
call On_OpenFile
|
||
.ret_f:
|
||
pop eax
|
||
ret
|
||
|
||
On_OpenFile:
|
||
push eax ebx
|
||
mov eax,70
|
||
mov [run_file_70.func_n], 0
|
||
mov [run_file_70.param1], 0
|
||
mov [run_file_70.param2], 0
|
||
mov [run_file_70.param3], maxChars-2 ;sizeof.symbol
|
||
m2m [run_file_70.param4], [tex]
|
||
mov [run_file_70.rezerv], 0
|
||
push dword[edit1.text]
|
||
pop dword[run_file_70.name]
|
||
mov ebx,run_file_70
|
||
int 0x40
|
||
|
||
cmp eax,0
|
||
je @f
|
||
cmp eax,6
|
||
je @f
|
||
cmp ax,10
|
||
jl .zifra_0_9
|
||
mov al,'?'
|
||
sub ax,48
|
||
.zifra_0_9:
|
||
add ax,48
|
||
|
||
mov byte[msgbox_4.err],al
|
||
push thread
|
||
push msgbox_4
|
||
call [mb_create] ;message: Can-t open text file!
|
||
jmp .ret_f
|
||
@@:
|
||
cmp ebx,-1
|
||
je .ret_f
|
||
;if open file
|
||
call OpenFile
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
cmp ebx,maxChars-2
|
||
jl .ret_f
|
||
push thread
|
||
push msgbox_1
|
||
call [mb_create]
|
||
.ret_f:
|
||
pop ebx eax
|
||
ret
|
||
|
||
but_SaveFile:
|
||
push eax ebx ecx edx
|
||
call CanSave
|
||
cmp al,0
|
||
je .no_save
|
||
|
||
mov ecx,maxChars
|
||
call mem_Alloc
|
||
push eax
|
||
|
||
mov edx,[tex]
|
||
xor ecx,ecx
|
||
@@:
|
||
call IteratNext
|
||
cmp edx,[tex_1]
|
||
jle @f ;edx = [tex] or edx = [tex]+sizeof.symbol
|
||
mov bl,[edx]
|
||
mov byte[eax],bl
|
||
inc eax
|
||
inc ecx
|
||
jmp @b
|
||
@@:
|
||
|
||
cmp ecx,0
|
||
je @f
|
||
pop eax
|
||
mov [run_file_70.param4],eax
|
||
push eax
|
||
mov eax,70
|
||
mov [run_file_70.func_n], 2
|
||
mov [run_file_70.param1], 0
|
||
mov [run_file_70.param2], 0
|
||
mov [run_file_70.param3], ecx
|
||
mov [run_file_70.rezerv], 0
|
||
push [edit1.text]
|
||
pop [run_file_70.name]
|
||
mov ebx,run_file_70
|
||
int 0x40
|
||
|
||
mov [err_sav],al
|
||
|
||
cmp eax,0
|
||
je .no_msg
|
||
; cmp eax,6
|
||
; je @f
|
||
cmp ax,10
|
||
jl .zifra_0_9
|
||
mov al,'?'
|
||
sub ax,48
|
||
.zifra_0_9:
|
||
add ax,48
|
||
|
||
mov byte[msgbox_6.err],al
|
||
push thread
|
||
push msgbox_6
|
||
call [mb_create] ;message: Can-t save text file!
|
||
jmp @f
|
||
.no_msg:
|
||
m2m [ls_tim],[ch_tim]
|
||
@@:
|
||
|
||
pop ecx
|
||
call mem_Free
|
||
.no_save:
|
||
pop edx ecx ebx eax
|
||
ret
|
||
|
||
but_FindText:
|
||
push eax ebx ecx edx edi
|
||
call GetPos
|
||
mov eax,[edit2.text]
|
||
mov bl,byte[eax]
|
||
@@:
|
||
call GetFindRezult
|
||
cmp bh,1
|
||
je @f ; find
|
||
|
||
call IteratNext
|
||
cmp edx,[tex_1]
|
||
jle @f
|
||
jmp @b
|
||
@@:
|
||
cmp bh,0
|
||
je @f
|
||
call GetTexCoords
|
||
inc ebx ;move cursor right
|
||
mov [sel.x1],ebx
|
||
mov [sel.y1],eax
|
||
mov edx,eax
|
||
mov ecx,ebx
|
||
call GoToPos
|
||
mov edx,edi
|
||
call GetTexCoords
|
||
mov [sel.x0],ebx
|
||
mov [sel.y0],eax
|
||
stdcall draw_main_win, tedit0
|
||
jmp .end_find
|
||
@@:
|
||
push thread
|
||
push msgbox_7
|
||
call [mb_create] ;message: Can not find text
|
||
.end_find:
|
||
pop edi edx ecx ebx eax
|
||
ret
|
||
|
||
;input:
|
||
; eax - text need find
|
||
; bl - first symbol to find
|
||
; edx - first symbol pointer
|
||
;output:
|
||
; bh - rezult
|
||
; edx - last text position (if find sucess)
|
||
; edi - first symbol pointer
|
||
GetFindRezult:
|
||
push eax
|
||
mov bh,1
|
||
mov edi,edx ;copy edx
|
||
@@:
|
||
cmp byte[edx],bl
|
||
jne .no_text
|
||
|
||
inc eax ;*** get next symbol (in find text) ***
|
||
mov bl,byte[eax]
|
||
cmp bl,0
|
||
je @f ;end of find text
|
||
|
||
call IteratNext ;*** get next symbol (in editor text) ***
|
||
cmp edx,[tex_1]
|
||
jle @f ;end of editor text
|
||
|
||
jmp @b
|
||
.no_text:
|
||
xor bh,bh
|
||
mov edx,edi ;restore edx
|
||
@@:
|
||
pop eax
|
||
mov bl,byte[eax] ;restore bl
|
||
ret
|
||
|
||
but_OpenSyntax:
|
||
cmp byte[panel_id],TE_PANEL_SYNTAX
|
||
jne @f
|
||
stdcall dword[tl_node_get_data], dword tree1
|
||
pop dword[fn_col_option]
|
||
call InitColText
|
||
call CmColored
|
||
stdcall draw_main_win, tedit0
|
||
@@:
|
||
ret
|
||
|
||
but_select_word:
|
||
push eax ebx ecx edx
|
||
|
||
call GetPos
|
||
push edx
|
||
call ItPervColorTag
|
||
cmp edx,[tex_1]
|
||
jle @f
|
||
call GetTexCoords
|
||
mov [sel.x0],ebx
|
||
mov [sel.y0],eax
|
||
@@:
|
||
pop edx
|
||
call ItNextColorTag
|
||
cmp edx,[tex_1]
|
||
jle @f
|
||
call GetTexCoords
|
||
mov [sel.x1],ebx
|
||
mov [sel.y1],eax
|
||
@@:
|
||
pop edx ecx ebx eax
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
jmp still
|
||
|
||
but_cut:
|
||
call but_Copy
|
||
call SetUndo
|
||
push bx
|
||
mov bl,1
|
||
call SelTextDel
|
||
pop bx
|
||
cmp al,1
|
||
jne @f
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
@@:
|
||
jmp still
|
||
|
||
;output:
|
||
; al = 1 if copy text
|
||
but_Copy:
|
||
push ax
|
||
stdcall IsSel, tedit0
|
||
cmp al,0
|
||
jne @f
|
||
pop ax
|
||
ret ;if not selected text
|
||
@@:
|
||
call SelNormalize
|
||
|
||
push ebx ecx edx esi
|
||
mov esi,[seln.x1]
|
||
mov ecx,[seln.y1]
|
||
call GetPosByParam
|
||
mov ebx,edx
|
||
mov esi,[seln.x0]
|
||
mov ecx,[seln.y0]
|
||
call GetPosByParam
|
||
mov esi,ebx
|
||
|
||
xor ecx,ecx
|
||
mov ebx,buf
|
||
;mov edx,[tex]
|
||
@@:
|
||
cmp edx,[tex_1] ;end of file
|
||
jle @f
|
||
cmp edx,esi ;end of select
|
||
je @f
|
||
inc ecx
|
||
cmp ecx,BUF_SIZE ;owerflow bufer
|
||
je @f
|
||
|
||
mov al,byte[edx]
|
||
mov byte[ebx],al
|
||
inc ebx
|
||
|
||
call IteratNext
|
||
jmp @b
|
||
@@:
|
||
add ecx,buf
|
||
mov byte[ebx],0
|
||
|
||
cmp ecx,0
|
||
je @f
|
||
call draw_but_toolbar
|
||
stdcall draw_bufer, tedit0
|
||
@@:
|
||
pop esi edx ecx ebx ax
|
||
ret
|
||
|
||
but_paste:
|
||
push eax bx esi edi
|
||
mov esi,buf
|
||
call strlen
|
||
cmp eax,1
|
||
jl @f
|
||
call SetUndo
|
||
mov esi,eax
|
||
mov bx,0x0101
|
||
call SelTextDel
|
||
mov edi,buf
|
||
call TextAdd
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
@@:
|
||
pop edi esi bx eax
|
||
jmp still
|
||
|
||
proc but_find, edit:dword ;<EFBFBD>맮<EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⨥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>᪠
|
||
push edi
|
||
mov edi,[edit]
|
||
|
||
cmp byte[panel_id],TE_PANEL_NULL
|
||
je @f
|
||
mov byte[panel_id],TE_PANEL_NULL
|
||
mov ted_wnd_l,0
|
||
jmp .e_if
|
||
@@:
|
||
mov byte[panel_id],TE_PANEL_FIND
|
||
mov ted_wnd_l,TE_PANEL_WIDTH
|
||
.e_if:
|
||
stdcall EvSize,edi
|
||
stdcall draw_main_win,edi
|
||
pop edi
|
||
ret
|
||
endp
|
||
|
||
but_replace:
|
||
jmp still
|
||
|
||
but_find_key_w:
|
||
jmp still
|
||
|
||
but_sumb_upper:
|
||
push edi
|
||
mov [conv_table],EvUpper
|
||
call ConvertSelText
|
||
cmp edi,0
|
||
je @f
|
||
stdcall draw_main_win, tedit0
|
||
@@:
|
||
pop edi
|
||
jmp still
|
||
|
||
but_sumb_lover:
|
||
push edi
|
||
mov [conv_table],EvLover
|
||
call ConvertSelText
|
||
cmp edi,0
|
||
je @f
|
||
stdcall draw_main_win, tedit0
|
||
@@:
|
||
pop edi
|
||
jmp still
|
||
|
||
but_reverse:
|
||
push eax ebx
|
||
stdcall IsSel, tedit0
|
||
cmp al,0
|
||
je @f
|
||
call SelNormalize
|
||
push esi ecx edx
|
||
mov esi,[seln.x0]
|
||
mov ecx,[seln.y0]
|
||
call GetPosByParam
|
||
mov eax,edx
|
||
mov esi,[seln.x1]
|
||
cmp esi,0
|
||
je .beg_str
|
||
dec esi
|
||
.beg_str:
|
||
mov ecx,[seln.y1]
|
||
call GetPosByParam
|
||
;call GetTexPervPos
|
||
mov ebx,edx
|
||
pop edx ecx esi
|
||
;cmp eax,...
|
||
;je @f
|
||
call Revers
|
||
@@:
|
||
pop ebx eax
|
||
stdcall draw_main_win, tedit0
|
||
jmp still
|
||
|
||
but_undo:
|
||
mov eax,[tim_Undo]
|
||
cmp [ch_tim],eax
|
||
jbe still
|
||
inc [tim_Undo]
|
||
;call CmColored
|
||
jmp red_win
|
||
|
||
but_redo:
|
||
cmp [tim_Undo],1
|
||
jb still
|
||
dec [tim_Undo]
|
||
;call CmColored
|
||
jmp red_win
|
||
|
||
|
||
but_sumb_invis:
|
||
xor [invis],1
|
||
jmp red_win
|
||
|
||
but_k_words_show:
|
||
xor byte[mode_colored],1
|
||
cmp byte[mode_colored],0
|
||
je red_win
|
||
call CmColored
|
||
|
||
; push eax ebx ecx esi edi
|
||
; mov eax,dword[cur_x]
|
||
; ColToIndexOffset eax,edx
|
||
; mov eax,4
|
||
; mov ebx,50*65536+75
|
||
; mov ecx,0x40ffffff
|
||
; mov edi,0x404040
|
||
; mov esi,10
|
||
; int 0x40
|
||
;
|
||
; mov eax,47
|
||
; mov ecx,250
|
||
; mov esi,0xffff80
|
||
; mov edx,50*65536+80
|
||
; mov esi,FkPos;[keyW]
|
||
; @@:
|
||
; mov ebx,0x30001
|
||
; cmp dx,300
|
||
; jl .no_br
|
||
; mov dx,80
|
||
; add edx,0x200000
|
||
; .no_br:
|
||
; add dx,10
|
||
; push ecx esi
|
||
; mov ecx,esi
|
||
; cmp dword[ecx],-1
|
||
; jne .no_minus
|
||
; mov ebx,0x10000
|
||
; mov ecx,1
|
||
; .no_minus:
|
||
; mov esi,0xffff00
|
||
; int 0x40
|
||
; pop esi ecx
|
||
; add esi,4
|
||
; loop @b
|
||
; pop edi esi ecx ebx eax
|
||
jmp red_win
|
||
|
||
but_CtrlHome:
|
||
mov [cur_x],0
|
||
mov [cur_y],0
|
||
mov [wScr.position],0
|
||
mov [hScr.position],0
|
||
|
||
call draw_but_toolbar
|
||
stdcall draw_main_win, tedit0
|
||
ret
|
||
|
||
proc but_synt_show, edit:dword
|
||
push edi
|
||
mov edi,[edit]
|
||
|
||
cmp byte[panel_id],TE_PANEL_NULL
|
||
je @f
|
||
mov byte[panel_id],TE_PANEL_NULL
|
||
mov ted_wnd_l,0
|
||
jmp .e_if
|
||
@@:
|
||
mov byte[panel_id],TE_PANEL_SYNTAX
|
||
mov ted_wnd_l,TE_PANEL_WIDTH
|
||
.e_if:
|
||
stdcall EvSize,edi
|
||
stdcall draw_main_win,edi
|
||
pop edi
|
||
ret
|
||
endp
|
||
|
||
sel_KeyUp:
|
||
cmp [dragk],1
|
||
je @f
|
||
call SelStart
|
||
mov [dragk],1
|
||
@@:
|
||
push dx
|
||
call CurMoveUp
|
||
cmp dl,8
|
||
jne @f
|
||
call OnInitialUpdate
|
||
@@:
|
||
pop dx
|
||
call SelMove
|
||
stdcall draw_main_win, tedit0
|
||
ret
|
||
|
||
sel_KeyDown:
|
||
cmp [dragk],1
|
||
je @f
|
||
call SelStart
|
||
mov [dragk],1
|
||
@@:
|
||
push dx
|
||
call CurMoveDown
|
||
cmp dl,8
|
||
jne @f
|
||
call OnInitialUpdate
|
||
@@:
|
||
pop dx
|
||
call SelMove
|
||
stdcall draw_main_win, tedit0
|
||
ret
|
||
|
||
sel_KeyLeft:
|
||
cmp [dragk],1
|
||
je @f
|
||
call SelStart
|
||
@@:
|
||
push dx
|
||
call CurMoveLeft
|
||
call SelMove
|
||
cmp [dragk],1
|
||
je @f
|
||
mov [dragk],1
|
||
mov dl,8
|
||
@@:
|
||
cmp dl,8
|
||
jne @f
|
||
call OnInitialUpdate
|
||
stdcall draw_main_win, tedit0
|
||
jmp .end_f
|
||
@@:
|
||
stdcall draw_cur_line, tedit0
|
||
.end_f:
|
||
pop dx
|
||
ret
|
||
|
||
sel_KeyRight:
|
||
cmp [dragk],1
|
||
je @f
|
||
call SelStart
|
||
@@:
|
||
push dx
|
||
call CurMoveRight
|
||
call SelMove
|
||
cmp [dragk],1
|
||
je @f
|
||
mov [dragk],1
|
||
mov dl,8
|
||
@@:
|
||
cmp dl,8
|
||
jne @f
|
||
call OnInitialUpdate
|
||
stdcall draw_main_win, tedit0
|
||
jmp .end_f
|
||
@@:
|
||
stdcall draw_cur_line, tedit0
|
||
.end_f:
|
||
pop dx
|
||
ret |