't_edit' add commands [Ctrl]+[End], [Ctrl]+[A]

'msgbox' change select button use [Tab] key

git-svn-id: svn://kolibrios.org@4988 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2014-06-27 21:34:57 +00:00
parent bb0466488a
commit 0bcb04f0e3
2 changed files with 129 additions and 67 deletions

View File

@ -1,6 +1,6 @@
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj ; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS ; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 27.06.2014 IgorA ; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 28.06.2014 IgorA
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï ; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
;input: ;input:
@ -9,8 +9,8 @@
;output: ;output:
; reg = pointer to 'tex' struct ; reg = pointer to 'tex' struct
macro ConvertIndexToPointer reg { macro ConvertIndexToPointer reg {
imul reg,sizeof.symbol imul reg,sizeof.symbol
add reg,ted_tex add reg,ted_tex
} }
;--- out_reg = ted_key_words_data[ind_reg].Text[0] --- ;--- out_reg = ted_key_words_data[ind_reg].Text[0] ---
@ -27,13 +27,14 @@ TED_PANEL_FIND equ 1 ;
TED_PANEL_SYNTAX equ 2 ;¯ ­¥«ì ¢ë¡®à  ä ©«®¢ ¯®¤á¢¥âª¨ TED_PANEL_SYNTAX equ 2 ;¯ ­¥«ì ¢ë¡®à  ä ©«®¢ ¯®¤á¢¥âª¨
TED_PANEL_WIDTH equ 150 ;è¨à¨­  ¯ ­¥«¨ TED_PANEL_WIDTH equ 150 ;è¨à¨­  ¯ ­¥«¨
TED_LINES_IN_NEW_FILE equ 30 ;ç¨á«® áâப ¢ ­®¢®¬ ä ©«¥
MAX_COLOR_WORD_LEN equ 40 MAX_COLOR_WORD_LEN equ 40
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
struct TexSelect struct TexSelect
x0 dd ? x0 dd ?
y0 dd ? y0 dd ?
x1 dd ? x1 dd ?
y1 dd ? y1 dd ?
ends ends
struct TexColViv struct TexColViv
@ -46,12 +47,12 @@ struct TexColViv
ends ends
struct symbol struct symbol
c db ? ; +0 ᨬ¢®« c db ? ; +0 ᨬ¢®«
col db ? ; +1 梥â col db ? ; +1 梥â
perv dd ? ; +2 perv dd ? ; +2
next dd ? ; +6 㪠§ â¥«¨ next dd ? ; +6 㪠§ â¥«¨
tc dd ? ; +10 ¢à¥¬. ᮧ¤ ­¨ï tc dd ? ; +10 ¢à¥¬. ᮧ¤ ­¨ï
td dd ? ; +14 ¢à¥¬. 㤠«¥­¨ï td dd ? ; +14 ¢à¥¬. 㤠«¥­¨ï
ends ends
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -159,9 +160,9 @@ proc ted_init_scroll_bars, edit:dword, opt:dword
bt dword[opt],2 ; ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â  ? bt dword[opt],2 ; ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â  ?
jae .doc_resize jae .doc_resize
call ted_get_num_lines call ted_get_num_lines
cmp eax,100 cmp eax,TED_LINES_IN_NEW_FILE
jge @f jge @f
mov eax,100 mov eax,TED_LINES_IN_NEW_FILE
@@: @@:
mov dword[esi+sb_offs_max_area],eax mov dword[esi+sb_offs_max_area],eax
.doc_resize: .doc_resize:
@ -243,6 +244,7 @@ proc ted_key, edit:dword, table:dword, control:dword
test esi,KM_CTRL ;Ctrl+... test esi,KM_CTRL ;Ctrl+...
jz .key_Ctrl jz .key_Ctrl
; *** ¢ë§®¢ ¢­¥è­¨å ä㭪権 ª®â®àë¥ âॡãîâ ®ª­  ®âªàëâ¨ï/á®åà ­¥­¨ï/¯®¨áª /...
cmp ah,24 ;Ctrl+O cmp ah,24 ;Ctrl+O
jne @f jne @f
cmp ted_fun_on_key_ctrl_o,0 cmp ted_fun_on_key_ctrl_o,0
@ -263,6 +265,17 @@ proc ted_key, edit:dword, table:dword, control:dword
je @f je @f
call ted_fun_on_key_ctrl_f call ted_fun_on_key_ctrl_f
@@: @@:
cmp ah,49 ;Ctrl+N
jne @f
cmp ted_fun_on_key_ctrl_n,0
je @f
call ted_fun_on_key_ctrl_n
@@:
; *** ¢ë§®¢ ¢­ãâ७­¨å ä㭪権
cmp ah,30 ;Ctrl+A
jne @f
call ted_sel_all
@@:
cmp ah,44 ;Ctrl+Z cmp ah,44 ;Ctrl+Z
jne @f jne @f
stdcall ted_but_undo,edi stdcall ted_but_undo,edi
@ -275,16 +288,14 @@ proc ted_key, edit:dword, table:dword, control:dword
jne @f jne @f
stdcall ted_but_paste,edi stdcall ted_but_paste,edi
@@: @@:
cmp ah,49 ;Ctrl+N
jne @f
cmp ted_fun_on_key_ctrl_n,0
je @f
call ted_fun_on_key_ctrl_n
@@:
cmp ah,199 ;Ctrl+Home cmp ah,199 ;Ctrl+Home
jne @f jne @f
call ted_key_ctrl_home call ted_key_ctrl_home
@@: @@:
cmp ah,207 ;Ctrl+End
jne @f
call ted_key_ctrl_end
@@:
jmp .end_key_fun jmp .end_key_fun
.key_Ctrl: .key_Ctrl:
@ -539,21 +550,21 @@ endp
; al = 1 - selected ; al = 1 - selected
align 4 align 4
proc ted_is_select proc ted_is_select
push ebx push ebx
xor al,al xor al,al
cmp ted_drag_m,1 cmp ted_drag_m,1
je @f je @f
mov al,1 mov al,1
mov ebx,ted_sel_x0 mov ebx,ted_sel_x0
cmp ebx,ted_sel_x1 cmp ebx,ted_sel_x1
jne @f jne @f
mov ebx,ted_sel_y0 mov ebx,ted_sel_y0
cmp ebx,ted_sel_y1 cmp ebx,ted_sel_y1
jne @f jne @f
xor al,al xor al,al
@@: @@:
pop ebx pop ebx
ret ret
endp endp
;input: ;input:
@ -645,6 +656,29 @@ proc ted_sel_move
ret ret
endp endp
;input:
; edi = pointer to tedit struct
;description:
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¢ë¤¥«¥­¨¨ ¢á¥£® ¤®ªã¬¥­â 
align 4
proc ted_sel_all
push eax
xor eax,eax
mov ted_sel_x0,eax
mov ted_sel_y0,eax
mov ted_sel_x1,eax ;???
call ted_get_num_lines
mov ted_sel_y1,eax
pop eax
stdcall ted_draw,edi
cmp ted_fun_draw_panel_buttons,0 ;redraw toolbar (need to button Copy)
je @f
call ted_fun_draw_panel_buttons
@@:
ret
endp
;input: ;input:
; cl_al_mem = 1 - clear all memory ; cl_al_mem = 1 - clear all memory
align 4 align 4
@ -851,9 +885,9 @@ proc ted_on_open_file
@@: @@:
call ted_get_num_lines call ted_get_num_lines
cmp eax,100 cmp eax,TED_LINES_IN_NEW_FILE
jge @f jge @f
mov eax,100 mov eax,TED_LINES_IN_NEW_FILE
@@: @@:
mov esi,ted_scr_w mov esi,ted_scr_w
mov dword[esi+sb_offs_max_area],eax mov dword[esi+sb_offs_max_area],eax
@ -988,31 +1022,30 @@ ted_iterat_next_pos_char:
; edi = pointer to tedit struct ; edi = pointer to tedit struct
align 4 align 4
ted_iterat_perv_color_tag: ted_iterat_perv_color_tag:
@@: @@:
cmp byte[edx+1],0 cmp byte[edx+1],0
jne @f jne @f
call ted_iterat_perv call ted_iterat_perv
cmp edx,ted_tex_1 cmp edx,ted_tex_1
jle @f jle @f
jmp @b jmp @b
@@: @@:
ret ret
;input: ;input:
; edx = pointer to symbol struct ; edx = pointer to symbol struct
; edi = pointer to tedit struct ; edi = pointer to tedit struct
align 4 align 4
ted_iterat_next_color_tag: ted_iterat_next_color_tag:
@@: @@:
call ted_iterat_next call ted_iterat_next
cmp byte[edx+1],0 cmp byte[edx+1],0
jne @f jne @f
cmp edx,ted_tex_1 cmp edx,ted_tex_1
jle @f jle @f
jmp @b jmp @b
@@: @@:
;call ted_iterat_next ret
ret
;input: ;input:
; edx = pointer to symbol struct ; edx = pointer to symbol struct
@ -2848,6 +2881,30 @@ ted_key_ctrl_home:
@@: @@:
ret ret
;input:
; edi = pointer to tedit struct
align 4
ted_key_ctrl_end:
push eax ebx
call ted_get_num_lines
mov ebx,ted_scr_w
mov dword[ebx+sb_offs_position],eax ;áâ ¢¨¬ ¯®«§ã­®ª ­  ¯®á«¥¤­îî áâப㠤®ªã¬¥­â 
cmp eax,dword[ebx+sb_offs_cur_area]
jle @f
mov eax,dword[ebx+sb_offs_cur_area] ;¯®«ãç ¥¬ ç¨á«® áâப ¢« §ïé¨å ¢ ®ª­®
@@:
sub dword[ebx+sb_offs_position],eax ;®â­¨¬ ¥¬ ®â ¯®«§ã­ª  ç¨á«® áâப ¢« §ïé¨å ¢ ®ª­® (­® ­¥ ¡®«ìè¥ â¥å, çâ® ¥áâì ¢ ¤®ªã¬¥­â¥)
dec eax
mov ted_cur_y,eax ;áâ ¢¨¬ ªãàá®à ­  ¯®á«¥¤­îî áâப㠤®ªã¬¥­â 
pop ebx eax
call ted_cur_move_x_last_char
stdcall ted_draw,edi
cmp ted_fun_draw_panel_buttons,0
je @f
call ted_fun_draw_panel_buttons
@@:
ret
;input: ;input:
; edi = pointer to tedit struct ; edi = pointer to tedit struct
align 4 align 4
@ -3181,6 +3238,7 @@ proc ted_draw, edit:dword
jmp @b jmp @b
.no_draw_text: .no_draw_text:
inc dword[line_num]
stdcall ted_clear_line_before_draw,edi,ebx,0,dword[line_num] stdcall ted_clear_line_before_draw,edi,ebx,0,dword[line_num]
call ted_draw_line_numbers call ted_draw_line_numbers
call ted_draw_main_cursor call ted_draw_main_cursor
@ -3676,7 +3734,6 @@ proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_l
cmp dword[clear_o],0 cmp dword[clear_o],0
jne @f jne @f
add ebx,ted_rec_h add ebx,ted_rec_h
inc esi
ror ebx,16 ror ebx,16
xor bx,bx xor bx,bx
add ebx,ted_wnd_l add ebx,ted_wnd_l
@ -3706,20 +3763,21 @@ proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_l
jge @f jge @f
.pusto: .pusto:
mov cx,ax mov cx,ax
jmp .no_select ;¥á«¨ ®ç¨á⪠ ®ª­  ¤® ­¨§ã, â® ¢á¥£¤  ä®­®¢ë¬ 梥⮬
@@: @@:
call ted_is_select call ted_is_select
cmp al,0 cmp al,0
je @f je .no_select
cmp ted_seln_y0,esi cmp ted_seln_y0,esi
jg @f jg .no_select
cmp ted_seln_y1,esi cmp ted_seln_y1,esi
jl @f jl .no_select
mov edx,ted_color_select ;draw selected line mov edx,ted_color_select ;draw selected line
@@: .no_select:
mov eax,13 ;rect mov eax,13 ;rect
int 0x40 int 0x40 ;§ ªà áª  ¯®«­®© áâப¨ 梥⮬ ä®­  ¨«¨ 梥⮬ ¢ë¤¥«¥­¨ï
call ted_is_select call ted_is_select
cmp al,0 cmp al,0
@ -3748,7 +3806,8 @@ proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_l
@@: @@:
cmp ted_seln_y1,esi cmp ted_seln_y1,esi
jne @f jne @f
push esi ;push esi
;¥á«¨ ¢ë¤¥«¥­ ¢¥áì ä ©« âãâ ¬®¦­® ᤥ« âì ¢ë室, ­® ⮣¤  ­ã¦­® ¢ëè¥ ã¡à âì jmp .no_select
mov edx,ted_seln_x1 ; ­¨¦­ïï ¯®«®á  (§ â¨à ¥â á¯à ¢ ) mov edx,ted_seln_x1 ; ­¨¦­ïï ¯®«®á  (§ â¨à ¥â á¯à ¢ )
mov esi,ted_scr_h mov esi,ted_scr_h
cmp edx,dword[esi+sb_offs_position] cmp edx,dword[esi+sb_offs_position]
@ -3759,10 +3818,9 @@ proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_l
shl edx,16 shl edx,16
add ebx,edx add ebx,edx
.in_wnd2: .in_wnd2:
mov edx,ted_color_wnd_work mov edx,ted_color_wnd_work
int 0x40 int 0x40
pop esi ;pop esi
@@: @@:
.no_clear: .no_clear:

View File

@ -132,8 +132,12 @@ key:
call MsgBoxDrawAllBut call MsgBoxDrawAllBut
.no_left: .no_left:
cmp ah,9 ;Tab
je @f
cmp ah,179 ;Right cmp ah,179 ;Right
jne .no_right je @f
jmp .no_right
@@:
mov al,[mb_key_max] mov al,[mb_key_max]
add al,MB_FIRST_BUT_ID add al,MB_FIRST_BUT_ID
cmp [mb_key_foc],al cmp [mb_key_foc],al