From cb0f3625e7f0eb14442160474bfbfa5321439bcd Mon Sep 17 00:00:00 2001 From: IgorA Date: Wed, 23 Jan 2019 22:08:19 +0000 Subject: [PATCH] t_edit: add function ted_but_replace, fix code git-svn-id: svn://kolibrios.org@7577 a494cfbc-eb01-0410-851d-a64ba20cac60 --- contrib/C_Layer/ASM/loadboxlib.asm | 6 +- contrib/C_Layer/INCLUDE/kolibri_editor.h | 3 +- .../develop/libraries/box_lib/load_lib.mac | 8 +- .../libraries/box_lib/trunk/box_lib.asm | 2 - .../libraries/box_lib/trunk/t_edit.asm | 206 ++++++++++-------- programs/network/ftpc/gui.inc | 3 +- programs/other/t_edit/strlen.inc | 123 ++++++----- programs/other/t_edit/t_button.inc | 48 ++-- programs/other/t_edit/t_data.inc | 2 +- programs/other/t_edit/t_draw.inc | 17 +- programs/other/t_edit/t_edit.asm | 61 +++--- programs/other/t_edit/t_edit.ini | 2 +- programs/other/t_edit_synt/te_data.inc | 29 +-- programs/other/t_edit_synt/te_syntax.asm | 34 +-- 14 files changed, 271 insertions(+), 273 deletions(-) diff --git a/contrib/C_Layer/ASM/loadboxlib.asm b/contrib/C_Layer/ASM/loadboxlib.asm index db91af0857..b560c9f787 100644 --- a/contrib/C_Layer/ASM/loadboxlib.asm +++ b/contrib/C_Layer/ASM/loadboxlib.asm @@ -116,7 +116,8 @@ import lib_boxlib, \ ted_but_undo, 'ted_but_undo' , \ ted_but_redo, 'ted_but_redo' , \ ted_but_reverse, 'ted_but_reverse' , \ - ted_but_find_next, 'ted_but_find_next' , \ + ted_but_find, 'ted_but_find' , \ + ted_but_replace, 'ted_but_replace' , \ ted_text_colored, 'ted_text_colored' , \ frame_draw, 'frame_draw' , \ progressbar_draw,'progressbar_draw' , \ @@ -182,7 +183,8 @@ public ted_but_paste as '_ted_but_paste' public ted_but_undo as '_ted_but_undo' public ted_but_redo as '_ted_but_redo' public ted_but_reverse as '_ted_but_reverse' -public ted_but_find_next as '_ted_but_find_next' +public ted_but_find as '_ted_but_find' +public ted_but_replace as '_ted_but_replace' public ted_text_colored as 'ted_text_colored_asm' public tl_data_init as '_tl_data_init' diff --git a/contrib/C_Layer/INCLUDE/kolibri_editor.h b/contrib/C_Layer/INCLUDE/kolibri_editor.h index 86d1f99b66..61e8a961ab 100644 --- a/contrib/C_Layer/INCLUDE/kolibri_editor.h +++ b/contrib/C_Layer/INCLUDE/kolibri_editor.h @@ -156,7 +156,8 @@ extern void (*ted_but_select_word)(editor *) __attribute__((__stdcall__)); extern void (*ted_but_copy)(editor *) __attribute__((__stdcall__)); extern void (*ted_but_paste)(editor *) __attribute__((__stdcall__)); -extern void (*ted_but_find_next)(editor *) __attribute__((__stdcall__)); +extern void (*ted_but_find)(editor *) __attribute__((__stdcall__)); +extern void (*ted_but_replace)(editor *) __attribute__((__stdcall__)); ///move cursor to , calls ted_fun_find_err() if exist diff --git a/programs/develop/libraries/box_lib/load_lib.mac b/programs/develop/libraries/box_lib/load_lib.mac index 249dd534e3..7b6a63e04c 100644 --- a/programs/develop/libraries/box_lib/load_lib.mac +++ b/programs/develop/libraries/box_lib/load_lib.mac @@ -480,17 +480,17 @@ pushad mcall 68,11 mcall 68,12,4096 push eax - pop dword [arrea_xx] + pop dword[arrea_xx] mov edi,eax - mov esi,dword head + mov esi,head cld align 4 lp0: movsb cmp byte[esi],0 jne lp0 - mov word[edi],'. ' + mov word[edi],0xa0d add edi,2 mov esi,dword err_message align 4 @@ -508,7 +508,7 @@ macro notify_window_run message { push eax ebx mov eax,message ;параметры для командной строки - mov [run_notify_struct.Flags], eax + mov [run_notify_struct.Flags],eax mov eax,70 ;run @notify mov ebx,run_notify_struct int 0x40 diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.asm b/programs/develop/libraries/box_lib/trunk/box_lib.asm index 674e6875c4..b32a6be070 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.asm +++ b/programs/develop/libraries/box_lib/trunk/box_lib.asm @@ -319,7 +319,6 @@ dd sz_ted_but_undo, ted_but_undo dd sz_ted_but_redo, ted_but_redo dd sz_ted_but_reverse, ted_but_reverse dd sz_ted_but_find, ted_but_find -dd sz_ted_but_find_next, ted_but_find_next dd sz_ted_but_replace, ted_but_replace dd sz_ted_text_colored, ted_text_colored dd sz_ted_version, 0x00000005 @@ -433,7 +432,6 @@ sz_ted_but_undo db 'ted_but_undo',0 sz_ted_but_redo db 'ted_but_redo',0 sz_ted_but_reverse db 'ted_but_reverse',0 sz_ted_but_find db 'ted_but_find',0 -sz_ted_but_find_next db 'ted_but_find_next',0 sz_ted_but_replace db 'ted_but_replace',0 sz_ted_text_colored db 'ted_text_colored',0 sz_ted_version db 'version_text_edit',0 diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.asm b/programs/develop/libraries/box_lib/trunk/t_edit.asm index 68f63e7344..56634f7600 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.asm +++ b/programs/develop/libraries/box_lib/trunk/t_edit.asm @@ -234,7 +234,7 @@ proc ted_key, edit:dword, table:dword, control:dword @@: cmp ah,KEY_F3 ;[F3] jne @f - stdcall ted_but_find_next,edi + stdcall ted_but_find,edi,0 jmp .end_key_fun @@: @@ -1851,12 +1851,9 @@ ted_get_pos_by_cursor: ; edx = tex[1] if error ; ted_gp_opt = 0 if text no found align 16 -ted_get_pos_by_coords: - push eax ;Row - push ebx ;Col - - xor eax,eax - xor ebx,ebx +proc ted_get_pos_by_coords uses eax ebx + xor eax,eax ;Row + xor ebx,ebx ;Col mov ted_gp_opt,0 mov edx,ted_tex @@: @@ -1888,9 +1885,8 @@ ted_get_pos_by_coords: mov edx,ted_tex_1 ;call ted_get_text_perv_pos @@: - pop ebx eax ret - +endp ;input: ; eax = Row @@ -2062,7 +2058,7 @@ ted_go_to_pos: push eax ebx mov eax,ted_scr_h sub ecx,[eax+sb_offs_position] - cmp ecx,0 ;ted_cur_y < 0 + cmp ecx,0 ;ted_cur_x < 0 jge @f add [eax+sb_offs_position],ecx ;прокрутка скроллинга влево xor ecx,ecx @@ -2839,33 +2835,51 @@ endp ; функция находит текст на который указывает ted_buffer_find ;input: ; f_opt = параметры поиска: -; (0 - искать выше курсора, 1 - искать ниже курсора, 2 - искать от начала файла) +; (0 - искать ниже курсора, 1 - искать выше курсора, 2 - искать от начала файла) +; если установлен 31-й бит, то не обновляется окно +;output: +; eax = был ли найден искомый текст (0 - нет, 1 - да) align 16 -proc ted_but_find, edit:dword, f_opt:dword +proc ted_but_find uses ebx ecx edx edi esi, edit:dword, f_opt:dword push [edit] - cmp dword[f_opt],2 + cmp word[f_opt],2 jne @f - call ted_but_find_first - jmp .end_f + call _but_find_first + jmp .end0 @@: - cmp dword[f_opt],0 + cmp word[f_opt],0 jne @f - call ted_but_find_next - jmp .end_f + call _but_find_next + jmp .end0 @@: - cmp dword[f_opt],1 - jne .end_f - call ted_but_find_perv - .end_f: + cmp word[f_opt],1 + jne .end0 + call _but_find_perv + .end0: + + bt dword[f_opt],31 + jc .end1 + or eax,eax + jz @f + ;текст найден, обновляем окно + stdcall ted_draw,edi + jmp .end1 + @@: + ;текст не найден, пробуем вызвать сообщение + cmp ted_fun_find_err,0 + je .end1 + call ted_fun_find_err ;пользовательская функция + .end1: ret endp ;description: -; функция находит текст на который указывает ted_buffer_find -; ищет от начала файла, или от конца текущего выделения +; функция находит текст от начала файла, или от конца текущего выделения +;output: +; eax = был ли найден искомый текст (0 - нет, 1 - да) +; ebx, ecx, edx, edi, edi - портятся align 16 -proc ted_but_find_first, edit:dword - pushad +proc _but_find_first, edit:dword mov edi,[edit] call ted_is_select @@ -2892,17 +2906,17 @@ proc ted_but_find_first, edit:dword jle @f jmp @b @@: - call but_find - popad + call _but_find_select ret endp ;description: -; функция находит текст на который указывает ted_buffer_find -; ищет выше курсора +; функция находит текст выше курсора +;output: +; eax = был ли найден искомый текст (0 - нет, 1 - да) +; ebx, ecx, edx, edi, edi - портятся align 16 -proc ted_but_find_perv, edit:dword - pushad +proc _but_find_perv, edit:dword mov edi,[edit] call ted_is_select or al,al @@ -2928,17 +2942,17 @@ proc ted_but_find_perv, edit:dword jle @f jmp @b @@: - call but_find - popad + call _but_find_select ret endp ;description: -; функция находит текст на который указывает ted_buffer_find -; ищет ниже курсора +; функция находит текст ниже курсора +;output: +; eax = был ли найден искомый текст (0 - нет, 1 - да) +; ebx, edx, edi, esi - портятся align 16 -proc ted_but_find_next, edit:dword - pushad +proc _but_find_next, edit:dword mov edi,[edit] call ted_get_pos_by_cursor @@ -2953,16 +2967,17 @@ proc ted_but_find_next, edit:dword jle @f jmp @b @@: - call but_find - popad + call _but_find_select ret endp +;description: +; вспомогательная функция, выделяет найденный текст ;input: ; bh = был ли найден искомый текст (0 - нет, 1 - да) ; esi = first symbol pointer align 16 -but_find: +_but_find_select: or bh,bh jz @f call ted_get_text_coords @@ -2976,47 +2991,90 @@ but_find: call ted_get_text_coords mov ted_sel_x0,ebx mov ted_sel_y0,eax - stdcall ted_draw,edi - jmp .end_find + xor eax,eax + inc eax + jmp .end0 @@: - ;попадаем сюда если текст не найден - cmp ted_fun_find_err,0 - je .end_find - call ted_fun_find_err ;пользовательская функция - .end_find: + xor eax,eax ;текст не найден + .end0: ret ;input: ; rpl_text = текст для замены ; r_opt = параметры поиска: -; (0 - искать выше курсора, 1 - искать ниже курсора, 2 - искать от начала файла) +; (0 - искать ниже курсора, 1 - искать выше курсора, 2 - искать от начала файла) ; n_tim = фиксировать замену в изменениях (0 - нет, 1 - да) ;output: ; eax = 0 - не удачно, 1 - удачно align 16 proc ted_but_replace uses edx edi esi, edit:dword, rpl_text:dword, r_opt:dword, n_tim:dword mov edi,[edit] - stdcall ted_but_find, edi,[r_opt] + mov eax,[r_opt] + bts eax,31 + stdcall ted_but_find, edi,eax + or eax,eax + jz .end0 xor edx,edx cmp dword[n_tim],0 je @f + call ted_set_undo mov edx,ted_opt_ed_change_time @@: stdcall ted_sel_text_del, edx or eax,0xff - jz @f + jz .end0 mov esi,[rpl_text] stdcall tl_strlen or eax,eax - jz @f + jz .end0 stdcall ted_text_add, edi,esi,eax,ted_opt_ed_move_cursor xor eax,eax inc eax - @@: + .end0: ret endp +;input: +; eax - text need find +; bl - first symbol to find +; edx - first symbol pointer +; edi - pointer to tedit struct +;output: +; bh - rezult +; edx - last text position (if find sucess) +; esi - first symbol pointer +;description: +; Функция проверяет совпадает ли текст в буфере eax +; с текстом редактора по указателю edx. +; Стандартные функции (напр. strcmp) тут не подойдут, потому что +; в памяти редактора текст содержится не в виде ascii строк. +align 16 +ted_get_find_rezult: +push eax + mov bh,1 + mov esi,edx ;copy edx + @@: + cmp byte[edx],bl + jne .no_text + + inc eax ;*** get next symbol (in find text) *** + mov bl,byte[eax] + or bl,bl + jz @f ;end of find text + + call ted_iterat_next ;*** get next symbol (in editor text) *** + cmp edx,ted_tex_1 + jg @b +align 4 + .no_text: + xor bh,bh + mov edx,esi ;restore edx + @@: +pop eax + mov bl,byte[eax] ;restore bl + ret + ;input: ; edi = pointer to tedit struct align 16 @@ -3834,48 +3892,6 @@ popad ret endp -;input: -; eax - text need find -; bl - first symbol to find -; edx - first symbol pointer -; edi - pointer to tedit struct -;output: -; bh - rezult -; edx - last text position (if find sucess) -; esi - first symbol pointer -;description: -; Функция проверяет совпадает ли текст в буфере eax -; с текстом редактора по указателю edx. -; Стандартные функции (напр. strcmp) тут не подойдут, потому что -; в памяти редактора текст содержится не в виде ascii строк. -align 16 -ted_get_find_rezult: -push eax - mov bh,1 - mov esi,edx ;copy edx - @@: - cmp byte[edx],bl - jne .no_text - - inc eax ;*** get next symbol (in find text) *** - mov bl,byte[eax] - or bl,bl - jz @f ;end of find text - - call ted_iterat_next ;*** get next symbol (in editor text) *** - cmp edx,ted_tex_1 - jle @f ;end of editor text - - jmp @b -align 4 - .no_text: - xor bh,bh - mov edx,esi ;restore edx - @@: -pop eax - mov bl,byte[eax] ;restore bl - ret - ;input: ; clear_o - если =1 очистить одну строку, =0 очистить все строки окна до низу align 16 diff --git a/programs/network/ftpc/gui.inc b/programs/network/ftpc/gui.inc index a7a4f169d6..aca98fc085 100755 --- a/programs/network/ftpc/gui.inc +++ b/programs/network/ftpc/gui.inc @@ -1158,7 +1158,8 @@ import box_lib, \ ted_but_undo, 'ted_but_undo', \ ted_but_redo, 'ted_but_redo', \ ted_but_reverse, 'ted_but_reverse', \ - ted_but_find_next, 'ted_but_find_next', \ + ted_but_find, 'ted_but_find', \ + ted_but_replace, 'ted_but_replace', \ ted_text_colored, 'ted_text_colored', \ progressbar_draw, 'progressbar_draw' diff --git a/programs/other/t_edit/strlen.inc b/programs/other/t_edit/strlen.inc index 23cfdbec1b..ccac9e1747 100644 --- a/programs/other/t_edit/strlen.inc +++ b/programs/other/t_edit/strlen.inc @@ -1,68 +1,35 @@ -; strlen function ; -; Copyright (c) 2003 Thomas Mathys -; killer@vantage.ch +; ╨б╤В╤А╨╛╨║╨╛╨▓╤Л╨╡ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -; -;%ifndef _STRLEN_INC -;%define _STRLEN_INC - -;******************************************************************** -; returns the length of an asciiz string -; input : esi = pointer to string -; output : eax = string length -; destroys : nothing -;******************************************************************** -strlen: - push ecx edi - pushfd - cld ; ! - mov ecx,-1 - mov edi,esi ; find terminating zero - xor al,al - repne scasb - mov eax,edi ; calculate string length - sub eax,esi - dec eax - popfd - pop edi ecx +;output: +; eax = strlen +align 4 +proc str_len, str1:dword + mov eax,[str1] + @@: + cmp byte[eax],0 + je @f + inc eax + jmp @b + @@: + sub eax,[str1] ret +endp - - -; linlen function -; -; Copyright (c) 2009 Igor Afanasiev - -linlen: - push ecx edi - pushfd - cld - mov ecx,eax +align 4 +proc str_cat uses eax ecx edi esi, str1:dword, str2:dword + mov esi,[str2] + stdcall str_len,esi + mov ecx,eax inc ecx - mov edi,esi ; find terminating zero - mov al,13 - repne scasb - mov eax,edi ; calculate string length - sub eax,esi - dec eax - popfd - pop edi ecx + mov edi,[str1] + stdcall str_len,edi + add edi,eax + cld + repne movsb ret +endp ;description: ; ╨┐╤А╨╛╨▓╨╡╤А╤П╨╡╤В ╤Б╨╛╨┤╨╡╤А╨╢╨╕╤В╤Б╤П ╨╗╨╕ ╤Б╤В╤А╨╛╨║╨░ str1 ╨▓ ╤Б╤В╤А╨╛╨║╨╡ str0 @@ -79,10 +46,9 @@ proc str_instr uses edi esi, str0:dword, str1:dword mov esi,[str1] cld @@: - mov al,[esi] - cmp al,0 - je .e1 - inc esi + lodsb + or al,al + jz .e1 scasb ;╤Б╤А╨░╨▓╨╜╨╕╨▓╨░╨╡╨╝ ╤Б╨╕╨╝╨▓╨╛╨╗╤Л jz @b ;╨╡╤Б╨╗╨╕ ╤Б╨╛╨▓╨┐╨░╨╗╨╕, ╤В╨╛ ╨┐╨╡╤А╨╡╤Е╨╛╨┤╨╕╨╝ ╨║ ╤Б╤А╨░╨▓╨╜╨╡╨╜╨╕╤О ╤Б╨╗╨╡╨┤╤Г╤О╤Й╨╕╤Е ;╤Б╤О╨┤╨░ ╨┐╨╛╨┐╨░╨┤╨░╨╡╨╝ ╨╡╤Б╨╗╨╕ ╤Б╤В╤А╨╛╨║╨╕ ╨╜╨╡ ╤Б╨╛╨▓╨┐╨░╨╗╨╕ @@ -91,3 +57,36 @@ proc str_instr uses edi esi, str0:dword, str1:dword ret endp +;input: +; eax - ╤З╨╕╤Б╨╗╨╛ +; edi - ╨▒╤Г╤Д╨╡╤А ╨┤╨╗╤П ╤Б╤В╤А╨╛╨║╨╕ +; len - ╨┤╨╗╨╕╨╜╨╜╨░ ╨▒╤Г╤Д╨╡╤А╨░ +;output: +align 4 +proc convert_int_to_str uses eax ecx edx edi esi, len:dword + mov esi,[len] + add esi,edi + dec esi + call .str + ret +endp + +align 4 +.str: + mov ecx,10 + cmp eax,ecx + jb @f + xor edx,edx + div ecx + push edx + ;dec edi ;╤Б╨╝╨╡╤Й╨╡╨╜╨╕╨╡ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛╨╡ ╨┤╨╗╤П ╨╖╨░╨┐╨╕╤Б╨╕ ╤Б ╨║╨╛╨╜╤Ж╨░ ╤Б╤В╤А╨╛╨║╨╕ + call .str + pop eax + @@: + cmp edi,esi + jge @f + or al,0x30 + stosb + mov byte[edi],0 ;╨▓ ╨║╨╛╨╜╨╡╤Ж ╤Б╤В╤А╨╛╨║╨╕ ╤Б╤В╨░╨▓╨╕╨╝ 0, ╤З╤В╨╛-╨▒╤Л ╨╜╨╡ ╨▓╤Л╨╗╨░╨╖╨╕╨╗ ╨╝╤Г╤Б╨╛╤А + @@: + ret \ No newline at end of file diff --git a/programs/other/t_edit/t_button.inc b/programs/other/t_edit/t_button.inc index 708db2258c..9a8e37d707 100644 --- a/programs/other/t_edit/t_button.inc +++ b/programs/other/t_edit/t_button.inc @@ -156,13 +156,13 @@ button: stdcall ted_but_open_syntax, tedit0 jmp still @@: - cmp ah,201 ;заменить + cmp ah,201 ;найти далее jne .no_find call get_find_options stdcall [ted_but_find], tedit0, eax jmp still .no_find: - cmp ah,202 ;заменить все + cmp ah,202 ;заменить jne .no_change call get_find_options stdcall [ted_but_replace], tedit0, buf_replace, eax, 1 @@ -171,7 +171,7 @@ button: stdcall [ted_draw], tedit0 jmp still .no_change: - cmp ah,203 + cmp ah,203 ;заменить все jne .no_change_a call but_replace_all jmp still @@ -246,8 +246,15 @@ proc but_replace_all uses ebx ecx edx inc edx loop .cycle0 @@: - stdcall [ted_draw], tedit0 + or edx,edx + jz @f + stdcall [ted_draw], tedit0 + @@: mov eax,edx + mov edi,msgbox_1.z + stdcall convert_int_to_str, 8 + stdcall str_cat, edi,txt_Info + notify_window_run msgbox_1 ret endp @@ -337,7 +344,7 @@ proc but_no_msg_OpenFile uses eax ebx esi call ted_messages_after_open_file mov esi,openfile_path - call strlen + stdcall str_len,esi add esi,eax @@: ;цикл для поиска начала имени файла dec esi @@ -349,7 +356,7 @@ proc but_no_msg_OpenFile uses eax ebx esi jg @b @@: inc esi - call strlen + stdcall str_len,esi cmp eax,255 jle @f mov eax,255 @@ -381,8 +388,7 @@ ted_but_open_file: cmp [OpenDialog_data.status],2 jne @f stdcall mem_spac, msgbox_9.fdp,100 - mov esi,file_name - call strlen + stdcall str_len,file_name cmp eax,100 jle .no_crop mov eax,100 @@ -403,8 +409,7 @@ ted_but_open_file: proc auto_open_syntax, of_path:dword pushad ;ищем есть ли файл подсветки для открываемого текстового файла - mov esi,[of_path] - call strlen + stdcall str_len,[of_path] mov edx,[of_path] add edx,eax .f_beg: @@ -488,8 +493,8 @@ endp align 4 ted_messages_after_open_file: push ecx edi - cmp eax,0 - je @f + or eax,eax + jz @f cmp ax,10 jl .zifra_0_9 mov al,'?' @@ -499,18 +504,7 @@ ted_messages_after_open_file: mov byte[msgbox_4.err],al stdcall [mb_create],msgbox_4,thread ;message: Can-t open text file! - jmp .ret_f @@: - cmp ebx,-1 - je .ret_f - ;if open file - mov edi,tedit0 - mov ecx,ted_max_chars - sub ecx,2 ;ecx = максимальное число байт, для которых была выделена память - cmp ebx,ecx - jl .ret_f - stdcall [mb_create],msgbox_1,thread - .ret_f: pop edi ecx ret @@ -524,10 +518,10 @@ ted_save_err_msg: ; функция нажатия на кнопку [Применить] в панели синтаксиса align 4 proc ted_but_open_syntax uses eax ebx ecx edi, edit:dword - mov edi,dword[edit] + mov edi,[edit] cmp ted_panel_id,TED_PANEL_SYNTAX jne @f - stdcall dword[tl_node_get_data], tree1 + stdcall [tl_node_get_data], tree1 mov [fn_col_option],eax stdcall open_unpac_synt_file,eax cmp ebx,-1 @@ -548,6 +542,8 @@ endp align 4 proc open_unpac_synt_file uses eax edi esi, f_name:dword mov ebx,[f_name] + cmp byte[ebx],0 + je @f mov edi,last_open_synt_file stdcall strcmp,ebx,edi ;сравниваем имя подключенного файла с подключенным ранее файлом test eax,eax @@ -685,7 +681,7 @@ db 168,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;240 align 4 ted_on_find_err: - stdcall [mb_create],msgbox_7,thread ;message: Can not find text + notify_window_run msgbox_7 ;message: Can not find text ret ;description: diff --git a/programs/other/t_edit/t_data.inc b/programs/other/t_edit/t_data.inc index 0765c00a58..02f5b1def7 100644 --- a/programs/other/t_edit/t_data.inc +++ b/programs/other/t_edit/t_data.inc @@ -1 +1 @@ -fn_col_option dd def_col_file fn_syntax_dir db 'info/',0 def_col_file db 'default.syn',0 exit_code dd 0 ;переменная используемая для выхода из программы panel_but rb 21 ;настройки отображения кнопок на панели ;значения задаваемые по умолчанию, без ini файла ini_def_window_t equ 20 ini_def_window_l equ 200 ini_def_window_w equ 570 ini_def_window_h equ 470 ini_def_symbol_w equ 7 ini_def_symbol_h equ 10 ini_def_font_s equ 0 ini_def_scroll_type equ 0 ;описание параматров для ini файла ini_name db 't_edit.ini',0 ini_sec_window db 'Window',0 key_window_t db 't',0 key_window_l db 'l',0 key_window_w db 'w',0 key_window_h db 'h',0 key_symbol_w db 'symbol_w',0 key_symbol_h db 'symbol_h',0 key_font_s db 'font_s',0 key_scroll_type db 'scroll_type',0 key_but_new db 'but_new',0 key_but_open db 'but_open',0 key_but_save db 'but_save',0 key_but_save_as db 'but_save_as',0 key_but_select db 'but_select',0 key_but_cut db 'but_cut',0 key_but_copy db 'but_copy',0 key_but_paste db 'but_paste',0 key_but_find db 'but_find',0 key_but_replace db 'but_replace',0 key_but_key_words db 'but_key_words',0 key_but_upper db 'but_upper',0 key_but_lower db 'but_lower',0 key_but_reverse db 'but_reverse',0 key_but_undo db 'but_undo',0 key_but_redo db 'but_redo',0 key_but_invisible db 'but_invisible',0 key_but_syntax_list db 'but_syntax_list',0 key_but_syntax_mode db 'but_syntax_mode',0 key_but_convert_1251_866 db 'but_convert_1251_866',0 key_but_convert_866_1251 db 'but_convert_866_1251',0 ini_sec_options db 'Options',0 key_synt_file: db 'syntax_' .numb: db '0',0 key_synt_ext: db 'ext_' .numb: db '0',0 ini_def_synt_f db 0 align 4 max_synt_auto_open equ 10 synt_auto_open: rb 64*max_synt_auto_open db 0 system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 system_dir_1 db '/sys/lib/' lib_name_1 db 'msgbox.obj',0 system_dir_2 db '/sys/lib/' lib_name_2 db 'proc_lib.obj',0 system_dir_3 db '/sys/lib/' lib_name_3 db 'libimg.obj',0 system_dir_4 db '/sys/lib/' lib_name_4 db 'libini.obj',0 system_dir_5 db '/sys/lib/' lib_name_5 db 'kmenu.obj',0 ;--------------------------------------------------------------------- align 4 import_box_lib: dd alib_init0 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse ;edit_box_set_text dd aEdit_box_set_text ;version_ed dd aVersion_ed option_box_draw dd aOption_box_draw option_box_mouse dd aOption_box_mouse ;version_op dd aVersion_op scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_ver_mouse dd aScrollbar_ver_mouse scrollbar_hor_draw dd aScrollbar_hor_draw scrollbar_hor_mouse dd aScrollbar_hor_mouse ;version_scrollbar dd aVersion_scrollbar tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv ;tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec ted_but_sumb_upper dd sz_ted_but_sumb_upper ted_but_sumb_lover dd sz_ted_but_sumb_lover ted_but_convert_by_table dd sz_ted_but_convert_by_table ted_can_save dd sz_ted_can_save ted_clear dd sz_ted_clear ted_delete dd sz_ted_delete ted_draw dd sz_ted_draw ted_init dd sz_ted_init ted_init_scroll_bars dd sz_ted_init_scroll_bars ted_init_syntax_file dd sz_ted_init_syntax_file ted_is_select dd sz_ted_is_select ted_key dd sz_ted_key ted_mouse dd sz_ted_mouse ted_open_file dd sz_ted_open_file ted_save_file dd sz_ted_save_file ted_text_add dd sz_ted_text_add ted_but_select_word dd sz_ted_but_select_word ted_but_cut dd sz_ted_but_cut ted_but_copy dd sz_ted_but_copy ted_but_paste dd sz_ted_but_paste ted_but_undo dd sz_ted_but_undo ted_but_redo dd sz_ted_but_redo ted_but_reverse dd sz_ted_but_reverse ted_but_find dd sz_ted_but_find ted_but_find_next dd sz_ted_but_find_next ted_but_replace dd sz_ted_but_replace ted_text_colored dd sz_ted_text_colored version_text_edit dd sz_ted_version dd 0,0 alib_init0 db 'lib_init',0 aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 ;aEdit_box_set_text db 'edit_box_set_text',0 ;aVersion_ed db 'version_ed',0 aOption_box_draw db 'option_box_draw',0 aOption_box_mouse db 'option_box_mouse',0 ;aVersion_op db 'version_op',0 aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 ;aVersion_scrollbar db 'version_scrollbar',0 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 ;sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 sz_ted_but_convert_by_table db 'ted_but_convert_by_table',0 sz_ted_can_save db 'ted_can_save',0 sz_ted_clear db 'ted_clear',0 sz_ted_delete db 'ted_delete',0 sz_ted_draw db 'ted_draw',0 sz_ted_init db 'ted_init',0 sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0 sz_ted_init_syntax_file db 'ted_init_syntax_file',0 sz_ted_is_select db 'ted_is_select',0 sz_ted_key db 'ted_key',0 sz_ted_mouse db 'ted_mouse',0 sz_ted_open_file db 'ted_open_file',0 sz_ted_save_file db 'ted_save_file',0 sz_ted_text_add db 'ted_text_add',0 sz_ted_but_select_word db 'ted_but_select_word',0 sz_ted_but_cut db 'ted_but_cut',0 sz_ted_but_copy db 'ted_but_copy',0 sz_ted_but_paste db 'ted_but_paste',0 sz_ted_but_undo db 'ted_but_undo',0 sz_ted_but_redo db 'ted_but_redo',0 sz_ted_but_reverse db 'ted_but_reverse',0 sz_ted_but_find db 'ted_but_find',0 sz_ted_but_find_next db 'ted_but_find_next',0 sz_ted_but_replace db 'ted_but_replace',0 sz_ted_text_colored db 'ted_text_colored',0 sz_ted_version db 'version_text_edit',0 align 4 import_proclib: OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_msgbox_lib: mb_create dd amb_create mb_reinit dd amb_reinit mb_setfunctions dd amb_setfunctions dd 0,0 amb_create db 'mb_create',0 amb_reinit db 'mb_reinit',0 amb_setfunctions db 'mb_setfunctions',0 align 4 import_libimg: dd alib_init1 img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_destroy dd aimg_destroy dd 0,0 alib_init1 db 'lib_init',0 aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_destroy db 'img_destroy',0 align 4 import_libini: dd alib_init2 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init2 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 align 4 import_libkmenu: kmenu_init dd akmenu_init kmainmenu_draw dd akmainmenu_draw kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent ksubmenu_new dd aksubmenu_new ksubmenu_delete dd aksubmenu_delete ksubmenu_draw dd aksubmenu_draw ksubmenu_add dd aksubmenu_add kmenuitem_new dd akmenuitem_new kmenuitem_delete dd akmenuitem_delete kmenuitem_draw dd akmenuitem_draw dd 0,0 akmenu_init db 'kmenu_init',0 akmainmenu_draw db 'kmainmenu_draw',0 akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 aksubmenu_new db 'ksubmenu_new',0 aksubmenu_delete db 'ksubmenu_delete',0 aksubmenu_draw db 'ksubmenu_draw',0 aksubmenu_add db 'ksubmenu_add',0 akmenuitem_new db 'kmenuitem_new',0 akmenuitem_delete db 'kmenuitem_delete',0 akmenuitem_draw db 'kmenuitem_draw',0 ;--------------------------------------------------------------------- align 4 wScr scrollbar 16,50, 300,50, 15, 100,30,0, 0,0,0, 1 align 4 hScr scrollbar 150,0, 16,50, 15, 100,30,0, 0,0,0, 1 ;дочерний скроллинг для элемента ListBox align 4 ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1 ;--------------------------------------------------------------------- align 4 OpenDialog_data: .type dd 0 .procinfo dd procinfo ;+4 .com_area_name dd communication_area_name ;+8 .com_area dd 0 ;+12 .opendir_path dd plugin_path ;+16 .dir_default_path dd default_dir ;+20 .start_path dd file_name ;+24 путь к диалогу открытия файлов .draw_window dd draw_window ;+28 .status dd 0 ;+32 .openfile_path dd openfile_path ;+36 путь к открываемому файлу .filename_area dd filename_area ;+40 имя открываемого файла .filter_area dd Filter .x: .x_size dw 420 ;+48 ; Window X size .x_start dw 10 ;+50 ; Window X position .y: .y_size dw 320 ;+52 ; Window y size .y_start dw 10 ;+54 ; Window Y position default_dir db '/rd/1',0 ;директория по умолчанию communication_area_name: db 'FFFFFFFF_open_dialog',0 open_dialog_name: db 'opendial',0 communication_area_default_path: db '/rd/1/File managers/',0 Filter: dd Filter.end - Filter.1 .1: db 'ASM',0 db 'CPP',0 db 'INC',0 db 'MAC',0 db 'INI',0 db 'TXT',0 db 'H',0 db 'C',0 db 'HTM',0 db 'HTML',0 db 'PY',0 db 'SH',0 db 'BAT',0 db 'LUA',0 db 'INF',0 db 'LOG',0 db 'DBG',0 db 'DAT',0 .end: db 0 TED_PANEL_NULL equ 0 ;нет открытой панели TED_PANEL_FIND equ 1 ;панель поиска TED_PANEL_SYNTAX equ 2 ;панель выбора файлов подсветки TED_PANEL_REPLACE equ 3 ;панель замены TED_PANEL_WIDTH equ 150 ;ширина панели count_of_dir_list_files equ 15 ;максимальное число файлов синтаксиса показываемых в окне элемента tree1 ;------------------------------------------------------------------------------ struct TexSelect x0 dd ? y0 dd ? x1 dd ? y1 dd ? ends ;------------------------------------------------------------------------------ align 4 tedit0: ;структура текстового редактора .wnd BOX 0,50,440,150 ;+ 0 .rec BOX 30,25,ini_def_symbol_w,ini_def_symbol_h ;+16 .drag_m db 0 ;+32 выделение от мыши .drag_k db 0 ;+33 выделение от клавиатуры .sel TexSelect 0,0,0,0 ;+34 структура выделения .seln TexSelect ;+50 дополнительная структура выделения .tex dd 0 ;+66 text memory pointer .tex_1 dd 0 ;+70 text first symbol pointer .tex_end dd 0 ;+74 text end memory pointer .cur_x dd 0 ;+78 координата x курсора .cur_y dd 0 ;+82 координата y курсора .max_chars dd maxChars ;+86 максимальное число символов в одном документе .count_colors_text dd 1 ;+90 колличество цветов текста .count_key_words dd 0 ;+94 колличество ключевых слов .color_cursor dd 0x808080 ;+98 цвет курсора .color_wnd_capt dd 0x80 ;+102 цвет полей вокруг окна .color_wnd_work dd 0x0 ;+106 цвет фона окна .color_wnd_bord dd 0xd0d0d0 ;+110 цвет текста на полях .color_select dd 0x208080 ;+114 цвет выделения .color_cur_text dd 0xff0000 ;+118 цвет символа под курсором .color_wnd_text dd 0xffff00 ;+122 цвет текста в окне .syntax_file dd 0 ;+126 указатель на начало файла синтаксиса .syntax_file_size dd maxSyntaxFileSize ;+130 максимальный размер файла синтаксиса .text_colors dd 0 ;+134 указатель на массив цветов текста .help_text_f1 dd 0 ;+138 указатель на текст справки (по нажатии F1) .help_id dd -1 ;+142 идентификатор для справки .key_words_data dd 0 ;+146 указатель на структуры ключевых слов TexColViv .tim_ch dd ? ;+150 количество изменений в файле .tim_undo dd ? ;+154 количество отмененных действий .tim_ls dd ? ;+158 время последнего сохранения .tim_co dd ? ;+162 время последней цветовой разметки .el_focus dd el_focus ;+166 указатель на переменную элемента в фокусе .err_save db 0 ;+170 ошибка сохранения файла .panel_id db 0 ;+171 номер открытой панели .key_new db 0 ;+172 символ, который будет добавлятся с клавиатуры .symbol_new_line db 20 ;+173 символ завершения строки .scr_w dd wScr ;+174 вертикальный скроллинг .scr_h dd hScr ;+178 горизонтальный скроллинг .arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов .buffer dd buf ;+186 указатель на буфер копирования/вставки .buffer_find dd buf_find ;+190 указатель на буфер для поиска .cur_ins db 1 ;+194 режим работы курсора (обычный или замена) .mode_color db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.) .mode_invis db 0 ;+196 режим показа непечатаемых символов .gp_opt db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor .fun_on_key_ctrl_o dd ted_but_open_file ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла) .fun_on_key_ctrl_f dd but_panel_find ;+202 ... Ctrl+F (вызова/скрытия панели поиска) .fun_on_key_ctrl_n dd ted_but_new_file ;+206 ... Ctrl+N (создание нового документа) .fun_on_key_ctrl_s dd ted_but_save_file ;+210 ... Ctrl+S или Ctrl+Shiht+S (на входе eax =0 или =1) .buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки .fun_find_err dd ted_on_find_err ;+218 указатель на функцию вызываемую если поиск закончился неудачно .fun_init_synt_err dd 0 ;+222 .fun_draw_panel_buttons dd draw_but_toolbar ;+226 указатель на функцию рисования панели с кнопками .fun_draw_panel_find dd draw_panel_find ;+230 указатель на функцию рисования панели поиска .fun_draw_panel_syntax dd draw_panel_syntax ;+234 указатель на функцию рисования панели синтаксиса .fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно .increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке .ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста .font_size dd 0 ;+250 множитель для размера шрифта ;------------------------------------------------------------------------------ conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код el_focus dd tedit0 mouse_dd dd 0 tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ 16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ ws_dir_lbox,0 ;dir_list memory tree_file_struct: dd 1,0,0,count_of_dir_list_files dd dir_mem db 0 dd file_name ;sys_path align 4 opt_gr1 dd opt1 opt_grlist1 dd opt1,opt2,opt3,0 ;end option group opt1 option_box opt_gr1, 5, 90,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_next,txt_f_opt_next.end-txt_f_opt_next opt2 option_box opt_gr1, 5,108,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_perv,txt_f_opt_perv.end-txt_f_opt_perv opt3 option_box opt_gr1, 5,126,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_beg,txt_f_opt_beg.end-txt_f_opt_beg if lang eq ru msgbox_1: dw 0 db 'Внимание',0 ;+2 = +MB_TEXT_OFFSET db 'Файл большой, потому открыт не весь.',13 db ' 1. При его сохранении будут потеряны "не открывшиеся" символы.',13 db ' 2. В документ нельзя добавлять текст, т. к. память занята.',0 db 'Я понял(а)',0 ;button1 db 0 msgbox_2: db 3,0 db 'Внимание',0 db 'Сохранить изменения в файле?',0 db 'Сохранить',0 db 'Не сохранять',0 db 'Отмена',0 db 0 msgbox_3: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла с цветовыми настройками!',13,\ 'Потому выделение слов цветом не возможно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_4: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_6: db 1,0 db 'Внимание',0 db 'Ошибка при сохранении файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_7: db 1,0 db 'Текст не найден',0 db 'Попробуйте или изменить запрос и повторить поиск.',0 db 'Закрыть',0 db 0 msgbox_9: db 3,0 db 'Внимание',0 db 'Не открылся ',39,'диалог открытия файла',39,'.',13 .fdp: rb 100 db 0 db 'Закрыть',0 db 0 txtFindCapt db 'Поиск:',0 txtFindNext db 'Найти далее',0 txtRerlaceCapt db 'Чем заменить:',0 txtRerlace db 'Заменить',0 txtRerlaceAll db 'Заменить все',0 txtFormatCapt db 'Формат',0 txtFormatApply db 'Применить',0 txtReplace db 'Заменить',0 txtReplaceAll db 'Заменить все',0 txt_f_opt_next: db 'Вниз' .end: db 0 txt_f_opt_perv: db 'Вверх' .end: db 0 txt_f_opt_beg: db 'С начала' .end: db 0 else msgbox_1: dw 0 db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'File is large, because not all open.',13 db ' 1. If you save it will lose "not opened" characters.',13 db ' 2. The document can not add text, because the memory is busy.',0 db 'Ok',0 ;button1 db 0 msgbox_2: db 3,0 db 'Warning',0 db 'Save changes to the file?',0 db 'Save',0 db 'Discard',0 db 'Cancel',0 db 0 msgbox_3: db 1,0 db 'Warning',0 db 'Error opening the file with the color settings!',13,\ 'Because color selection of words is not possible.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_4: db 1,0 db 'Warning',0 db 'Error opening file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_6: db 1,0 db 'Warning',0 db 'Error saving file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_7: db 1,0 db 'Text not found.',0 db 'Try change the query and search again.',0 db 'Close',0 db 0 msgbox_9: db 3,0 db 'Warning',0 db 'Error run ',39,'open file dialog',39,'.',13 .fdp: rb 100 db 0 db 'Close',0 db 0 txtFindCapt db 'Search:',0 txtFindNext db 'Find next',0 txtRerlaceCapt db 'Replace with:',0 txtRerlace db 'Replace',0 txtRerlaceAll db 'Replace all',0 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',0 txtReplace db 'Replace',0 txtReplaceAll db 'Replace all',0 txt_f_opt_next: db 'Down' .end: db 0 txt_f_opt_perv: db 'Up' .end: db 0 txt_f_opt_beg: db 'At first' .end: db 0 end if ;функции для кнопок в сообщениях msgbox_2N_funct: dd On_SaveAndNewFile dd On_NewFile dd 0 msgbox_2O_funct: dd On_SaveAndOpenFile dd ted_but_open_file.no_msg dd 0 msgbox_2E_funct: dd On_SaveAndExit dd On_Exit dd 0 KM_SHIFT equ 0x00010000 KM_CTRL equ 0x00020000 KM_ALT equ 0x00040000 KM_NUMLOCK equ 0x00080000 ; KEY CODES KEY_F1 equ 0x0000003B KEY_F2 equ 0x0000003C KEY_F3 equ 0x0000003D \ No newline at end of file +fn_col_option dd def_col_file fn_syntax_dir db 'info/',0 def_col_file db 'default.syn',0 exit_code dd 0 ;переменная используемая для выхода из программы panel_but rb 21 ;настройки отображения кнопок на панели ;значения задаваемые по умолчанию, без ini файла ini_def_window_t equ 20 ini_def_window_l equ 200 ini_def_window_w equ 570 ini_def_window_h equ 470 ini_def_symbol_w equ 7 ini_def_symbol_h equ 10 ini_def_font_s equ 0 ini_def_scroll_type equ 0 ;описание параматров для ini файла ini_name db 't_edit.ini',0 ini_sec_window db 'Window',0 key_window_t db 't',0 key_window_l db 'l',0 key_window_w db 'w',0 key_window_h db 'h',0 key_symbol_w db 'symbol_w',0 key_symbol_h db 'symbol_h',0 key_font_s db 'font_s',0 key_scroll_type db 'scroll_type',0 key_but_new db 'but_new',0 key_but_open db 'but_open',0 key_but_save db 'but_save',0 key_but_save_as db 'but_save_as',0 key_but_select db 'but_select',0 key_but_cut db 'but_cut',0 key_but_copy db 'but_copy',0 key_but_paste db 'but_paste',0 key_but_find db 'but_find',0 key_but_replace db 'but_replace',0 key_but_key_words db 'but_key_words',0 key_but_upper db 'but_upper',0 key_but_lower db 'but_lower',0 key_but_reverse db 'but_reverse',0 key_but_undo db 'but_undo',0 key_but_redo db 'but_redo',0 key_but_invisible db 'but_invisible',0 key_but_syntax_list db 'but_syntax_list',0 key_but_syntax_mode db 'but_syntax_mode',0 key_but_convert_1251_866 db 'but_convert_1251_866',0 key_but_convert_866_1251 db 'but_convert_866_1251',0 ini_sec_options db 'Options',0 key_synt_file: db 'syntax_' .numb: db '0',0 key_synt_ext: db 'ext_' .numb: db '0',0 ini_def_synt_f db 0 align 4 max_synt_auto_open equ 10 synt_auto_open: rb 64*max_synt_auto_open db 0 system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 system_dir_1 db '/sys/lib/' lib_name_1 db 'msgbox.obj',0 system_dir_2 db '/sys/lib/' lib_name_2 db 'proc_lib.obj',0 system_dir_3 db '/sys/lib/' lib_name_3 db 'libimg.obj',0 system_dir_4 db '/sys/lib/' lib_name_4 db 'libini.obj',0 system_dir_5 db '/sys/lib/' lib_name_5 db 'kmenu.obj',0 ;--------------------------------------------------------------------- align 4 import_box_lib: dd alib_init0 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse ;edit_box_set_text dd aEdit_box_set_text ;version_ed dd aVersion_ed option_box_draw dd aOption_box_draw option_box_mouse dd aOption_box_mouse ;version_op dd aVersion_op scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_ver_mouse dd aScrollbar_ver_mouse scrollbar_hor_draw dd aScrollbar_hor_draw scrollbar_hor_mouse dd aScrollbar_hor_mouse ;version_scrollbar dd aVersion_scrollbar tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv ;tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec ted_but_sumb_upper dd sz_ted_but_sumb_upper ted_but_sumb_lover dd sz_ted_but_sumb_lover ted_but_convert_by_table dd sz_ted_but_convert_by_table ted_can_save dd sz_ted_can_save ted_clear dd sz_ted_clear ted_delete dd sz_ted_delete ted_draw dd sz_ted_draw ted_init dd sz_ted_init ted_init_scroll_bars dd sz_ted_init_scroll_bars ted_init_syntax_file dd sz_ted_init_syntax_file ted_is_select dd sz_ted_is_select ted_key dd sz_ted_key ted_mouse dd sz_ted_mouse ted_open_file dd sz_ted_open_file ted_save_file dd sz_ted_save_file ted_text_add dd sz_ted_text_add ted_but_select_word dd sz_ted_but_select_word ted_but_cut dd sz_ted_but_cut ted_but_copy dd sz_ted_but_copy ted_but_paste dd sz_ted_but_paste ted_but_undo dd sz_ted_but_undo ted_but_redo dd sz_ted_but_redo ted_but_reverse dd sz_ted_but_reverse ted_but_find dd sz_ted_but_find ted_but_replace dd sz_ted_but_replace ted_text_colored dd sz_ted_text_colored version_text_edit dd sz_ted_version dd 0,0 alib_init0 db 'lib_init',0 aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 ;aEdit_box_set_text db 'edit_box_set_text',0 ;aVersion_ed db 'version_ed',0 aOption_box_draw db 'option_box_draw',0 aOption_box_mouse db 'option_box_mouse',0 ;aVersion_op db 'version_op',0 aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 ;aVersion_scrollbar db 'version_scrollbar',0 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 ;sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 sz_ted_but_convert_by_table db 'ted_but_convert_by_table',0 sz_ted_can_save db 'ted_can_save',0 sz_ted_clear db 'ted_clear',0 sz_ted_delete db 'ted_delete',0 sz_ted_draw db 'ted_draw',0 sz_ted_init db 'ted_init',0 sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0 sz_ted_init_syntax_file db 'ted_init_syntax_file',0 sz_ted_is_select db 'ted_is_select',0 sz_ted_key db 'ted_key',0 sz_ted_mouse db 'ted_mouse',0 sz_ted_open_file db 'ted_open_file',0 sz_ted_save_file db 'ted_save_file',0 sz_ted_text_add db 'ted_text_add',0 sz_ted_but_select_word db 'ted_but_select_word',0 sz_ted_but_cut db 'ted_but_cut',0 sz_ted_but_copy db 'ted_but_copy',0 sz_ted_but_paste db 'ted_but_paste',0 sz_ted_but_undo db 'ted_but_undo',0 sz_ted_but_redo db 'ted_but_redo',0 sz_ted_but_reverse db 'ted_but_reverse',0 sz_ted_but_find db 'ted_but_find',0 sz_ted_but_replace db 'ted_but_replace',0 sz_ted_text_colored db 'ted_text_colored',0 sz_ted_version db 'version_text_edit',0 align 4 import_proclib: OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_msgbox_lib: mb_create dd amb_create mb_reinit dd amb_reinit mb_setfunctions dd amb_setfunctions dd 0,0 amb_create db 'mb_create',0 amb_reinit db 'mb_reinit',0 amb_setfunctions db 'mb_setfunctions',0 align 4 import_libimg: dd alib_init1 img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_destroy dd aimg_destroy dd 0,0 alib_init1 db 'lib_init',0 aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_destroy db 'img_destroy',0 align 4 import_libini: dd alib_init2 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init2 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 align 4 import_libkmenu: kmenu_init dd akmenu_init kmainmenu_draw dd akmainmenu_draw kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent ksubmenu_new dd aksubmenu_new ksubmenu_delete dd aksubmenu_delete ksubmenu_draw dd aksubmenu_draw ksubmenu_add dd aksubmenu_add kmenuitem_new dd akmenuitem_new kmenuitem_delete dd akmenuitem_delete kmenuitem_draw dd akmenuitem_draw dd 0,0 akmenu_init db 'kmenu_init',0 akmainmenu_draw db 'kmainmenu_draw',0 akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 aksubmenu_new db 'ksubmenu_new',0 aksubmenu_delete db 'ksubmenu_delete',0 aksubmenu_draw db 'ksubmenu_draw',0 aksubmenu_add db 'ksubmenu_add',0 akmenuitem_new db 'kmenuitem_new',0 akmenuitem_delete db 'kmenuitem_delete',0 akmenuitem_draw db 'kmenuitem_draw',0 ;--------------------------------------------------------------------- align 4 wScr scrollbar 16,50, 300,50, 15, 100,30,0, 0,0,0, 1 align 4 hScr scrollbar 150,0, 16,50, 15, 100,30,0, 0,0,0, 1 ;дочерний скроллинг для элемента ListBox align 4 ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1 ;--------------------------------------------------------------------- align 4 OpenDialog_data: .type dd 0 .procinfo dd procinfo ;+4 .com_area_name dd communication_area_name ;+8 .com_area dd 0 ;+12 .opendir_path dd plugin_path ;+16 .dir_default_path dd default_dir ;+20 .start_path dd file_name ;+24 путь к диалогу открытия файлов .draw_window dd draw_window ;+28 .status dd 0 ;+32 .openfile_path dd openfile_path ;+36 путь к открываемому файлу .filename_area dd filename_area ;+40 имя открываемого файла .filter_area dd Filter .x: .x_size dw 420 ;+48 ; Window X size .x_start dw 10 ;+50 ; Window X position .y: .y_size dw 320 ;+52 ; Window y size .y_start dw 10 ;+54 ; Window Y position default_dir db '/rd/1',0 ;директория по умолчанию communication_area_name: db 'FFFFFFFF_open_dialog',0 open_dialog_name: db 'opendial',0 communication_area_default_path: db '/rd/1/File managers/',0 Filter: dd Filter.end - Filter.1 .1: db 'ASM',0 db 'CPP',0 db 'INC',0 db 'MAC',0 db 'INI',0 db 'TXT',0 db 'H',0 db 'C',0 db 'HTM',0 db 'HTML',0 db 'PY',0 db 'SH',0 db 'BAT',0 db 'LUA',0 db 'INF',0 db 'LOG',0 db 'DBG',0 db 'DAT',0 .end: db 0 txt_Info db '" -tI',0 TED_PANEL_NULL equ 0 ;нет открытой панели TED_PANEL_FIND equ 1 ;панель поиска TED_PANEL_SYNTAX equ 2 ;панель выбора файлов подсветки TED_PANEL_REPLACE equ 3 ;панель замены TED_PANEL_WIDTH equ 150 ;ширина панели count_of_dir_list_files equ 15 ;максимальное число файлов синтаксиса показываемых в окне элемента tree1 ;------------------------------------------------------------------------------ struct TexSelect x0 dd ? y0 dd ? x1 dd ? y1 dd ? ends ;------------------------------------------------------------------------------ align 4 tedit0: ;структура текстового редактора .wnd BOX 0,50,440,150 ;+ 0 .rec BOX 30,25,ini_def_symbol_w,ini_def_symbol_h ;+16 .drag_m db 0 ;+32 выделение от мыши .drag_k db 0 ;+33 выделение от клавиатуры .sel TexSelect 0,0,0,0 ;+34 структура выделения .seln TexSelect ;+50 дополнительная структура выделения .tex dd 0 ;+66 text memory pointer .tex_1 dd 0 ;+70 text first symbol pointer .tex_end dd 0 ;+74 text end memory pointer .cur_x dd 0 ;+78 координата x курсора .cur_y dd 0 ;+82 координата y курсора .max_chars dd maxChars ;+86 максимальное число символов в одном документе .count_colors_text dd 1 ;+90 колличество цветов текста .count_key_words dd 0 ;+94 колличество ключевых слов .color_cursor dd 0x808080 ;+98 цвет курсора .color_wnd_capt dd 0x80 ;+102 цвет полей вокруг окна .color_wnd_work dd 0x0 ;+106 цвет фона окна .color_wnd_bord dd 0xd0d0d0 ;+110 цвет текста на полях .color_select dd 0x208080 ;+114 цвет выделения .color_cur_text dd 0xff0000 ;+118 цвет символа под курсором .color_wnd_text dd 0xffff00 ;+122 цвет текста в окне .syntax_file dd 0 ;+126 указатель на начало файла синтаксиса .syntax_file_size dd maxSyntaxFileSize ;+130 максимальный размер файла синтаксиса .text_colors dd 0 ;+134 указатель на массив цветов текста .help_text_f1 dd 0 ;+138 указатель на текст справки (по нажатии F1) .help_id dd -1 ;+142 идентификатор для справки .key_words_data dd 0 ;+146 указатель на структуры ключевых слов TexColViv .tim_ch dd ? ;+150 количество изменений в файле .tim_undo dd ? ;+154 количество отмененных действий .tim_ls dd ? ;+158 время последнего сохранения .tim_co dd ? ;+162 время последней цветовой разметки .el_focus dd el_focus ;+166 указатель на переменную элемента в фокусе .err_save db 0 ;+170 ошибка сохранения файла .panel_id db 0 ;+171 номер открытой панели .key_new db 0 ;+172 символ, который будет добавлятся с клавиатуры .symbol_new_line db 20 ;+173 символ завершения строки .scr_w dd wScr ;+174 вертикальный скроллинг .scr_h dd hScr ;+178 горизонтальный скроллинг .arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов .buffer dd buf ;+186 указатель на буфер копирования/вставки .buffer_find dd buf_find ;+190 указатель на буфер для поиска .cur_ins db 1 ;+194 режим работы курсора (обычный или замена) .mode_color db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.) .mode_invis db 0 ;+196 режим показа непечатаемых символов .gp_opt db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor .fun_on_key_ctrl_o dd ted_but_open_file ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла) .fun_on_key_ctrl_f dd but_panel_find ;+202 ... Ctrl+F (вызова/скрытия панели поиска) .fun_on_key_ctrl_n dd ted_but_new_file ;+206 ... Ctrl+N (создание нового документа) .fun_on_key_ctrl_s dd ted_but_save_file ;+210 ... Ctrl+S или Ctrl+Shiht+S (на входе eax =0 или =1) .buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки .fun_find_err dd ted_on_find_err ;+218 указатель на функцию вызываемую если поиск закончился неудачно .fun_init_synt_err dd 0 ;+222 .fun_draw_panel_buttons dd draw_but_toolbar ;+226 указатель на функцию рисования панели с кнопками .fun_draw_panel_find dd draw_panel_find ;+230 указатель на функцию рисования панели поиска/замены .fun_draw_panel_syntax dd draw_panel_syntax ;+234 указатель на функцию рисования панели синтаксиса .fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно .increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке .ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста .font_size dd 0 ;+250 множитель для размера шрифта ;------------------------------------------------------------------------------ conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код el_focus dd tedit0 mouse_dd dd 0 tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ 16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ ws_dir_lbox,0 ;dir_list memory tree_file_struct: dd 1,0,0,count_of_dir_list_files dd dir_mem db 0 .f: dd file_name align 4 opt_gr1 dd opt1 opt_grlist1 dd opt1,opt2,opt3,0 ;end option group opt1 option_box opt_gr1, 5, 90,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_next,txt_f_opt_next.end-txt_f_opt_next opt2 option_box opt_gr1, 5,108,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_perv,txt_f_opt_perv.end-txt_f_opt_perv opt3 option_box opt_gr1, 5,126,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_beg,txt_f_opt_beg.end-txt_f_opt_beg if lang eq ru msgbox_1: db '"Замена',13,10,'Сделано замен: ' .z: rb 10 msgbox_2: db 3,0 db 'Внимание',0 db 'Сохранить изменения в файле?',0 db 'Сохранить',0 db 'Не сохранять',0 db 'Отмена',0 db 0 msgbox_3: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла с цветовыми настройками!',13,\ 'Потому выделение слов цветом не возможно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_4: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_6: db 1,0 db 'Внимание',0 db 'Ошибка при сохранении файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_7: db '"Текст не найден',13,10 db 'Попробуйте или изменить запрос и повторить поиск." -tI',0 msgbox_9: db 3,0 db 'Внимание',0 db 'Не открылся ',39,'диалог открытия файла',39,'.',13 .fdp: rb 100 db 0 db 'Закрыть',0 db 0 txtFindCapt db 'Поиск:',0 txtFindNext db 'Найти далее',0 txtRerlaceCapt db 'Чем заменить:',0 txtRerlace db 'Заменить',0 txtRerlaceAll db 'Заменить все',0 txtFormatCapt db 'Формат',0 txtFormatApply db 'Применить',0 txtReplace db 'Заменить',0 txtReplaceAll db 'Заменить все',0 txt_f_opt_next: db 'Вниз' .end: db 0 txt_f_opt_perv: db 'Вверх' .end: db 0 txt_f_opt_beg: db 'С начала' .end: db 0 else msgbox_1: db '"Replace',13,10,'Made replacements: ' .z: rb 10 msgbox_2: db 3,0 db 'Warning',0 db 'Save changes to the file?',0 db 'Save',0 db 'Discard',0 db 'Cancel',0 db 0 msgbox_3: db 1,0 db 'Warning',0 db 'Error opening the file with the color settings!',13,\ 'Because color selection of words is not possible.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_4: db 1,0 db 'Warning',0 db 'Error opening file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_6: db 1,0 db 'Warning',0 db 'Error saving file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_7: db '"Text not found.',13,10 db 'Try change the query and search again." -tI',0 msgbox_9: db 3,0 db 'Warning',0 db 'Error run ',39,'open file dialog',39,'.',13 .fdp: rb 100 db 0 db 'Close',0 db 0 txtFindCapt db 'Search:',0 txtFindNext db 'Find next',0 txtRerlaceCapt db 'Replace with:',0 txtRerlace db 'Replace',0 txtRerlaceAll db 'Replace all',0 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',0 txtReplace db 'Replace',0 txtReplaceAll db 'Replace all',0 txt_f_opt_next: db 'Down' .end: db 0 txt_f_opt_perv: db 'Up' .end: db 0 txt_f_opt_beg: db 'At first' .end: db 0 end if ;функции для кнопок в сообщениях msgbox_2N_funct: dd On_SaveAndNewFile dd On_NewFile dd 0 msgbox_2O_funct: dd On_SaveAndOpenFile dd ted_but_open_file.no_msg dd 0 msgbox_2E_funct: dd On_SaveAndExit dd On_Exit dd 0 KM_SHIFT equ 0x00010000 KM_CTRL equ 0x00020000 KM_ALT equ 0x00040000 KM_NUMLOCK equ 0x00080000 ; KEY CODES KEY_F1 equ 0x0000003B KEY_F2 equ 0x0000003C KEY_F3 equ 0x0000003D \ No newline at end of file diff --git a/programs/other/t_edit/t_draw.inc b/programs/other/t_edit/t_draw.inc index 5c4022813e..5ebdd1d778 100644 --- a/programs/other/t_edit/t_draw.inc +++ b/programs/other/t_edit/t_draw.inc @@ -340,12 +340,12 @@ proc draw_panel_syntax mov cx,20 mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work] ;Ёшёютрэшх тхЁїэхую Їюэютюую яЁ ьюєуюы№эшър - stdcall dword[tl_draw], tree1 + stdcall [tl_draw], tree1 mov [ws_dir_lbox.all_redraw],1 ;фы  яюыэющ яхЁхЁшёютъш фюўхЁэхую ёъЁюыышэур - stdcall dword[scrollbar_ver_draw], dword ws_dir_lbox + stdcall [scrollbar_ver_draw], ws_dir_lbox ror ecx,16 - add ecx,dword[tree1.box_height] + add ecx,[tree1.box_height] add ecx,20 and ecx,0xffff ror ecx,16 @@ -353,13 +353,13 @@ proc draw_panel_syntax mov esi,ted_scr_h add cx,word[esi+sb_offs_size_y] sub cx,20 - sub ecx,dword[tree1.box_height] + sub ecx,[tree1.box_height] inc cx int 0x40 ;Ёшёютрэшх эшцэхую Їюэютюую яЁ ьюєуюы№эшър mov ecx,ted_wnd_t add ecx,25 - add ecx,dword[tree1.box_height] + add ecx,[tree1.box_height] shl ecx,16 mov cx,20 mcall SF_DEFINE_BUTTON,(5 shl 16)+65,,200,[sc.work_button] ;200 - button id @@ -371,16 +371,17 @@ proc draw_panel_syntax mcall SF_DRAW_TEXT,,,txtFormatCapt mov ebx,(10 shl 16)+31 - add ebx,dword[tree1.box_height] + add ebx,[tree1.box_height] add ebx,ted_wnd_t + mov ecx,[sc.work_button_text] + or ecx,0x80000000 mcall ,,,txtFormatApply popad jmp .end_f @@: push eax edx - mov edx,200 - or edx,0x80000000 + mov edx,0x80000000+200 mcall SF_DEFINE_BUTTON ;хёыш эхЄ ярэхыш Єю єфры хь ъэюяъє pop edx eax .end_f: diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index d878281980..d6f875ff28 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -47,7 +47,7 @@ start: mcall SF_SET_EVENTS_MASK,0xC0000027 mov esi,file_name - call strlen + stdcall str_len,esi mov ecx,eax mov edi,openfile_path cld @@ -95,10 +95,9 @@ mov ebp,lib0 copy_path fn_syntax_dir,sys_path,file_name,0 ;берем путь к папке с файлами синтаксиса mcall SF_FILE,tree_file_struct - cmp ebx,-1 - je .end_dir_init - mov eax,dir_mem - add eax,32+4+1+3+4*6+8 + cmp ebx,0 + jle .end_dir_init + mov eax,dir_mem+32+40 mov ecx,ebx @@: cmp byte[eax],'.' ;фильтруем файлы с именами '.' и '..' @@ -348,34 +347,34 @@ unpac_mem dd 0 if lang eq ru head_f_i: - head_f_l db 'Системная ошибка',0 - err_message_found_lib0 db 'Не найдена библиотека ',39,'box_lib.obj',39,0 - err_message_import0 db 'Ошибка при импорте библиотеки ',39,'box_lib.obj',39,0 - err_message_found_lib1 db 'Не найдена библиотека ',39,'msgbox.obj',39,0 - err_message_import1 db 'Ошибка при импорте библиотеки ',39,'msgbox.obj',39,0 - err_message_found_lib2 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0 - err_message_import2 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0 - err_message_found_lib_3 db 'Не найдена библиотека ',39,'libimg.obj',39,0 - err_message_import_3 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,0 - err_message_found_lib_4 db 'Не найдена библиотека ',39,'libini.obj',39,0 - err_message_import_4 db 'Ошибка при импорте библиотеки ',39,'libini.obj',39,0 - err_message_found_lib_5 db 'Не найдена библиотека ',39,'libkmenu.obj',39,0 - err_message_import_5 db 'Ошибка при импорте библиотеки ',39,'libkmenu.obj',39,0 + head_f_l db '"Системная ошибка',0 + err_message_found_lib0 db 'Не найдена библиотека ',39,'box_lib.obj',39,'" -tE',0 + err_message_import0 db 'Ошибка при импорте библиотеки ',39,'box_lib.obj',39,'" -tW',0 + err_message_found_lib1 db 'Не найдена библиотека ',39,'msgbox.obj',39,'" -tE',0 + err_message_import1 db 'Ошибка при импорте библиотеки ',39,'msgbox.obj',39,'" -tW',0 + err_message_found_lib2 db 'Не найдена библиотека ',39,'proc_lib.obj',39,'" -tE',0 + err_message_import2 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,'" -tW',0 + err_message_found_lib_3 db 'Не найдена библиотека ',39,'libimg.obj',39,'" -tE',0 + err_message_import_3 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,'" -tW',0 + err_message_found_lib_4 db 'Не найдена библиотека ',39,'libini.obj',39,'" -tE',0 + err_message_import_4 db 'Ошибка при импорте библиотеки ',39,'libini.obj',39,'" -tW',0 + err_message_found_lib_5 db 'Не найдена библиотека ',39,'libkmenu.obj',39,'" -tE',0 + err_message_import_5 db 'Ошибка при импорте библиотеки ',39,'libkmenu.obj',39,'" -tW',0 else head_f_i: - head_f_l db 'System error',0 - err_message_found_lib0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,0 - err_message_import0 db 'Error on load import library ',39,'box_lib.obj',39,0 - err_message_found_lib1 db 'Sorry I cannot found library ',39,'msgbox.obj',39,0 - err_message_import1 db 'Error on load import library ',39,'msgbox.obj',39,0 - err_message_found_lib2 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,0 - err_message_import2 db 'Error on load import library ',39,'proc_lib.obj',39,0 - err_message_found_lib_3 db 'Sorry I cannot found library ',39,'libimg.obj',39,0 - err_message_import_3 db 'Error on load import library ',39,'libimg.obj',39,0 - err_message_found_lib_4 db 'Sorry I cannot found library ',39,'libini.obj',39,0 - err_message_import_4 db 'Error on load import library ',39,'libini.obj',39,0 - err_message_found_lib_5 db 'Sorry I cannot found library ',39,'libkmenu.obj',39,0 - err_message_import_5 db 'Error on load import library ',39,'libkmenu.obj',39,0 + head_f_l db '"System error',0 + err_message_found_lib0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,'" -tE',0 + err_message_import0 db 'Error on load import library ',39,'box_lib.obj',39,'" -tW',0 + err_message_found_lib1 db 'Sorry I cannot found library ',39,'msgbox.obj',39,'" -tE',0 + err_message_import1 db 'Error on load import library ',39,'msgbox.obj',39,'" -tW',0 + err_message_found_lib2 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0 + err_message_import2 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tW',0 + err_message_found_lib_3 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0 + err_message_import_3 db 'Error on load import library ',39,'libimg.obj',39,'" -tW',0 + err_message_found_lib_4 db 'Sorry I cannot found library ',39,'libini.obj',39,'" -tE',0 + err_message_import_4 db 'Error on load import library ',39,'libini.obj',39,'" -tW',0 + err_message_found_lib_5 db 'Sorry I cannot found library ',39,'libkmenu.obj',39,'" -tE',0 + err_message_import_5 db 'Error on load import library ',39,'libkmenu.obj',39,'" -tW',0 end if ;library structures diff --git a/programs/other/t_edit/t_edit.ini b/programs/other/t_edit/t_edit.ini index cf92b4ab3a..07ec24b135 100644 --- a/programs/other/t_edit/t_edit.ini +++ b/programs/other/t_edit/t_edit.ini @@ -16,7 +16,7 @@ but_cut=1 but_copy=1 but_paste=1 but_find=1 -but_replace=0 +but_replace=1 but_key_words=1 but_upper=1 but_lower=1 diff --git a/programs/other/t_edit_synt/te_data.inc b/programs/other/t_edit_synt/te_data.inc index c3354c6fdf..7d13ab0949 100644 --- a/programs/other/t_edit_synt/te_data.inc +++ b/programs/other/t_edit_synt/te_data.inc @@ -66,7 +66,7 @@ ted_but_paste dd sz_ted_but_paste ted_but_undo dd sz_ted_but_undo ted_but_redo dd sz_ted_but_redo ted_but_reverse dd sz_ted_but_reverse -ted_but_find_next dd sz_ted_but_find_next +ted_but_find dd sz_ted_but_find ted_text_colored dd sz_ted_text_colored PathShow_prepare dd sz_PathShow_prepare @@ -128,7 +128,7 @@ sz_ted_but_paste db 'ted_but_paste',0 sz_ted_but_undo db 'ted_but_undo',0 sz_ted_but_redo db 'ted_but_redo',0 sz_ted_but_reverse db 'ted_but_reverse',0 -sz_ted_but_find_next db 'ted_but_find_next',0 +sz_ted_but_find db 'ted_but_find',0 sz_ted_text_colored db 'ted_text_colored',0 sz_PathShow_prepare db 'PathShow_prepare',0 @@ -145,29 +145,10 @@ dd 0,0 aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_destroy db 'img_destroy',0 - ;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +;дочерний скроллинг для элемента ListBox align 4 -ws_dir_lbox: ;дочерний скроллинг для элемента ListBox -.x: -.size_x dw 16 ;+0 -.start_x dw 0 ;+2 -.y: -.size_y dw 30 ;+4 -.start_y dw 70 ;+6 -.btn_high dd 15 ;+8 -.type dd 1 ;+12 -.max_area dd 100 ;+16 -rb 4+4 -.bckg_col dd 0xeeeeee ;+28 -.frnt_col dd 0xbbddff ;+32 -.line_col dd 0 ;+36 -.redraw dd 0 ;+40 -.delta dw 0 ;+44 -.delta2 dw 0 ;+46 -.run_x: -rb 2*4+4*6 -.all_redraw dd 0 ;+80 -.ar_offset dd 1 ;+84 +ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1 ;--------------------------------------------------------------------- count_of_dir_list_files equ 15 diff --git a/programs/other/t_edit_synt/te_syntax.asm b/programs/other/t_edit_synt/te_syntax.asm index 5dafa5f51b..c2b7eb5766 100644 --- a/programs/other/t_edit_synt/te_syntax.asm +++ b/programs/other/t_edit_synt/te_syntax.asm @@ -56,10 +56,9 @@ start: copy_path fn_syntax_dir,sys_path,file_name,0 ;берем путь к папке с файлами синтаксиса mcall SF_FILE,tree_file_struct - cmp ebx,-1 - je .end_dir_init - mov eax,dir_mem - add eax,32+4+1+3+4*6+8 + cmp ebx,0 + jle .end_dir_init + mov eax,dir_mem+32+40 mov ecx,ebx @@: cmp byte[eax],'.' ;фильтруем файлы с именами '.' и '..' @@ -73,6 +72,12 @@ start: or dword[tree1.style], tl_cursor_pos_limited ;ограничиваем движение курсора в пределах списка .end_dir_init: + xor eax,eax + inc eax + mov [scrol_w1.type],eax + mov [scrol_h1.type],eax + mov [ws_dir_lbox.type],eax + ;--- load color option file --- stdcall [ted_init], tedit0 mov byte[file_name],0 @@ -136,15 +141,14 @@ draw_window: mov edx,txt_out_file int 0x40 - push dword PathShow_data_1 - call [PathShow_draw] + stdcall [PathShow_draw], PathShow_data_1 - stdcall [edit_box_draw],dword edit1 - stdcall [tl_draw],dword tree1 + stdcall [edit_box_draw], edit1 + stdcall [tl_draw], tree1 ;scroll 1 mov [ws_dir_lbox.all_redraw],1 - stdcall [scrollbar_ver_draw],dword ws_dir_lbox + stdcall [scrollbar_ver_draw],ws_dir_lbox stdcall [ted_draw], tedit0 mcall SF_REDRAW,SSF_END_DRAW @@ -328,7 +332,7 @@ get_wnd_in_focus: ;@@: ret -hed db 'TextEditor syntax file converter 15.01.19',0 ;подпись окна +hed db 'TextEditor syntax file converter 23.01.19',0 ;подпись окна conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код txt_load_f db 'Загр. файл',0 @@ -337,11 +341,11 @@ txt_inp_file db ' txt_out_file db 'Вых. файл:',0 head_f_i: -head_f_l db 'System error',0 -err_message_found_lib_0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,0 -err_message_import_0 db 'Error on load import library ',39,'box_lib.obj',39,0 -err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,0 -err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,0 +head_f_l db '"System error',0 +err_message_found_lib_0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,'" -tE',0 +err_message_import_0 db 'Error on load import library ',39,'box_lib.obj',39,'" -tW',0 +err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0 +err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tW',0 ;library structures l_libs_start: