forked from KolibriOS/kolibrios
c65339bd59
git-svn-id: svn://kolibrios.org@1338 a494cfbc-eb01-0410-851d-a64ba20cac60
601 lines
10 KiB
PHP
601 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
|
|
call draw_main_win
|
|
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
|
|
@@:
|
|
mov [err_opn],1
|
|
cmp ebx,-1
|
|
je .ret_f
|
|
;if open file
|
|
call OpenFile
|
|
call draw_but_toolbar
|
|
call draw_main_win
|
|
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
|
|
call draw_main_win
|
|
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
|
|
push dword tree1
|
|
call dword [tl_node_get_data]
|
|
pop dword [fn_col_option]
|
|
call InitColText
|
|
call CmColored
|
|
call draw_main_win
|
|
@@:
|
|
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
|
|
call draw_main_win
|
|
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
|
|
call draw_main_win
|
|
@@:
|
|
jmp still
|
|
|
|
;output:
|
|
; al = 1 if copy text
|
|
but_Copy:
|
|
push ax
|
|
call IsSel
|
|
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
|
|
call draw_bufer
|
|
@@:
|
|
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
|
|
call draw_main_win
|
|
@@:
|
|
pop edi esi bx eax
|
|
jmp still
|
|
|
|
but_find:
|
|
cmp byte[panel_id],TE_PANEL_NULL
|
|
je @f
|
|
mov byte[panel_id],TE_PANEL_NULL
|
|
mov word[wndMain.left],0
|
|
jmp .e_if
|
|
@@:
|
|
mov byte[panel_id],TE_PANEL_FIND
|
|
mov word[wndMain.left],TE_PANEL_WIDTH
|
|
.e_if:
|
|
call EvSize
|
|
call draw_main_win
|
|
jmp still
|
|
|
|
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
|
|
call draw_main_win
|
|
@@:
|
|
pop edi
|
|
jmp still
|
|
|
|
but_sumb_lover:
|
|
push edi
|
|
mov [conv_table],EvLover
|
|
call ConvertSelText
|
|
cmp edi,0
|
|
je @f
|
|
call draw_main_win
|
|
@@:
|
|
pop edi
|
|
jmp still
|
|
|
|
but_reverse:
|
|
push eax ebx
|
|
call IsSel
|
|
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
|
|
call draw_main_win
|
|
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
|
|
call draw_main_win
|
|
ret
|
|
|
|
but_synt_show:
|
|
cmp byte[panel_id],TE_PANEL_NULL
|
|
je @f
|
|
mov byte[panel_id],TE_PANEL_NULL
|
|
mov word[wndMain.left],0
|
|
jmp .e_if
|
|
@@:
|
|
mov byte[panel_id],TE_PANEL_SYNTAX
|
|
mov word[wndMain.left],TE_PANEL_WIDTH
|
|
.e_if:
|
|
call EvSize
|
|
call draw_main_win
|
|
jmp still
|
|
|
|
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
|
|
call draw_main_win
|
|
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
|
|
call draw_main_win
|
|
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
|
|
call draw_main_win
|
|
jmp .end_f
|
|
@@:
|
|
call draw_cur_line
|
|
.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
|
|
call draw_main_win
|
|
jmp .end_f
|
|
@@:
|
|
call draw_cur_line
|
|
.end_f:
|
|
pop dx
|
|
ret |