From a6277573f7e0fe7d6c496ed6aa6f66fa720802eb Mon Sep 17 00:00:00 2001 From: IgorA Date: Tue, 5 Feb 2019 21:02:30 +0000 Subject: [PATCH] tedit: add case sensitive git-svn-id: svn://kolibrios.org@7583 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/trunk/t_edit.asm | 253 ++++++++++-------- programs/other/t_edit/t_button.inc | 4 + programs/other/t_edit/t_data.inc | 2 +- programs/other/t_edit/t_draw.inc | 29 +- programs/other/t_edit/t_edit.asm | 3 + 5 files changed, 163 insertions(+), 128 deletions(-) diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.asm b/programs/develop/libraries/box_lib/trunk/t_edit.asm index e5a651a427..70145647f5 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.asm +++ b/programs/develop/libraries/box_lib/trunk/t_edit.asm @@ -722,7 +722,7 @@ proc ted_clear uses ecx edi, edit:dword, cl_al_mem:dword inc edx loop @b mov edx,ted_tex - mov dword [edx+6],1 + mov dword [edx+symbol.next],1 pop edx .exit: @@ -833,14 +833,14 @@ proc ted_on_open_file push ebx @@: mov ebx,[edx] - mov byte [eax],bl - mov dword [eax+2],ecx - inc dword [eax+2] - mov dword [eax+6],ecx - add dword [eax+6],3 + mov byte[eax],bl + mov dword[eax+symbol.perv],ecx + inc dword[eax+symbol.perv] + mov dword[eax+symbol.next],ecx + add dword[eax+symbol.next],3 ;mov byte[eax+1],0 ;col=0 - mov dword [eax+10],-1 ;tc=-1 - mov dword [eax+14],0 ;td=0 + mov dword[eax+symbol.tc],-1 + mov dword[eax+symbol.td],0 cmp ecx,0 je @f @@ -850,32 +850,31 @@ proc ted_on_open_file jmp @b @@: pop ebx - add eax,2 - mov dword [eax],0 ; first sumbol 'perv=0' + mov dword[eax+symbol.perv],0 ; first sumbol 'perv=0' mov edx,ted_tex ; настройки начального служебного символа ; begining sumbol 'perv=0' 'next=2' - mov dword [edx+2],0 - mov dword [edx+6],2 + mov dword[edx+symbol.perv],0 + mov dword[edx+symbol.next],2 add edx,sizeof.symbol ; настройки конечного служебного символа - mov dword [edx+6],0 ; last sumbol 'next=0' - mov dword [edx+2],ebx ; last sumbol 'perv=last' - inc dword [edx+2] - mov dword [edx+10],0 ; ставим время создания равное 0, что бы символ правильно обрабатывался при открытии файлов больших 28 байт + mov dword[edx+symbol.next],0 ; last sumbol 'next=0' + mov dword[edx+symbol.perv],ebx ; last sumbol 'perv=last' + inc dword[edx+symbol.perv] + mov dword[edx+symbol.tc],0 ; ставим время создания равное 0, что бы символ правильно обрабатывался при открытии файлов больших 28 байт mov edx,ebx inc edx ;2 = rezerv sumbols imul edx,sizeof.symbol add edx,ted_tex - mov dword [edx+6],1 ; last sumbol 'next=1' + mov dword[edx+symbol.next],1 ; last sumbol 'next=1' @@: ;clear memory, need if before was open big file add edx,sizeof.symbol cmp edx,ted_tex_end jge @f - mov dword[edx+10],0 - mov dword[edx+14],0 + mov dword[edx+symbol.tc],0 + mov dword[edx+symbol.td],0 jmp @b @@: @@ -908,7 +907,7 @@ ted_iterat_perv: je .else push ebx @@: - mov edx,[edx+2] + mov edx,[edx+symbol.perv] or edx,edx jz @f imul edx,sizeof.symbol @@ -925,12 +924,12 @@ ted_iterat_perv: pop ebx ret .else: - mov edx,[edx+2] + mov edx,[edx+symbol.perv] or edx,edx jz @f imul edx,sizeof.symbol add edx,ted_tex - cmp dword [edx+14],0 + cmp dword[edx+symbol.td],0 jne .else cmp byte[edx],10 ;пропуск символа с кодом 10 je .else @@ -951,7 +950,7 @@ ted_iterat_next: je .else push ebx @@: - mov edx,[edx+6] + mov edx,[edx+symbol.next] cmp edx,1 jle @f imul edx,sizeof.symbol @@ -969,13 +968,13 @@ ted_iterat_next: pop ebx ret .else: - mov edx,[edx+6] + mov edx,[edx+symbol.next] cmp edx,1 jle @f imul edx,sizeof.symbol add edx,ted_tex - cmp dword [edx+14],0 + cmp dword[edx+symbol.td],0 jne .else cmp byte[edx],10 ;пропуск символа с кодом 10 je .else @@ -1055,10 +1054,9 @@ ted_symbol_not_vis: push eax xor bl,bl - - cmp dword [edx+14],0 + cmp dword[edx+symbol.td],0 je @f - mov eax,[edx+14] ;eax=tex[i].td + mov eax,[edx+symbol.td] ;eax=tex[i].td add eax,ted_tim_undo cmp eax,ted_tim_ch jg @f @@ -1069,7 +1067,7 @@ ted_symbol_not_vis: mov eax,ted_tim_ch sub eax,ted_tim_undo - cmp [edx+10],eax + cmp [edx+symbol.tc],eax jle @f or bl,1 @@: @@ -1141,9 +1139,9 @@ proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword mov edx,ted_ptr_free_symb .beg_cycle: ;for(i=...;ited_tim_ch){ // если создание символа было отменено cmp [edx+symbol.tc],eax jle .no_u1 - mov dword [edx+symbol.tc],0 - mov dword [edx+symbol.td],0 + mov dword[edx+symbol.tc],0 + mov dword[edx+symbol.td],0 mov ebx,[edx+symbol.perv] imul ebx,sizeof.symbol @@ -2029,7 +2027,7 @@ proc ted_set_undo ;else if(tex[i].td>ted_tim_ch) tex[i].td=0; // если удаление символа было отменено cmp [edx+symbol.td],eax jle .no_u2 - mov dword [edx+symbol.td],0 + mov dword[edx+symbol.td],0 .no_u2: call ted_get_text_next_pos @@ -2869,24 +2867,30 @@ endp ; f_opt = параметры поиска: ; (0 - искать ниже курсора, 1 - искать выше курсора, 2 - искать от начала файла) ; если установлен 31-й бит, то не обновляется окно +; если установлен 30-й бит, то поиск идет без учета регистра символов ;output: ; eax = был ли найден искомый текст (0 - нет, 1 - да) align 16 proc ted_but_find uses ebx ecx edx edi esi, edit:dword, f_opt:dword + mov eax,[f_opt] + push eax push [edit] - cmp word[f_opt],2 + cmp al,2 jne @f call _but_find_first jmp .end0 @@: - cmp word[f_opt],0 + cmp al,0 jne @f call _but_find_next jmp .end0 @@: - cmp word[f_opt],1 - jne .end0 + cmp al,1 + jne @f call _but_find_perv + jmp .end0 + @@: + add esp,8 .end0: bt dword[f_opt],31 @@ -2907,11 +2911,13 @@ endp ;description: ; функция находит текст от начала файла, или от конца текущего выделения +;input: +; f_opt = опции для поиска ;output: ; eax = был ли найден искомый текст (0 - нет, 1 - да) ; ebx, ecx, edx, edi, edi - портятся align 16 -proc _but_find_first, edit:dword +proc _but_find_first, edit:dword, f_opt:dword mov edi,[edit] call ted_is_select @@ -2927,11 +2933,11 @@ proc _but_find_first, edit:dword mov edx,ted_tex call ted_iterat_next .end0: - mov eax,ted_buffer_find - mov bl,byte[eax] + mov ebx,ted_buffer_find @@: + mov eax,[f_opt] call ted_get_find_rezult - cmp bh,1 + cmp ah,1 je @f ; find call ted_iterat_next cmp edx,ted_tex_1 @@ -2944,12 +2950,15 @@ endp ;description: ; функция находит текст выше курсора +;input: +; f_opt = опции для поиска ;output: ; eax = был ли найден искомый текст (0 - нет, 1 - да) ; ebx, ecx, edx, edi, edi - портятся align 16 -proc _but_find_perv, edit:dword +proc _but_find_perv, edit:dword, f_opt:dword mov edi,[edit] + call ted_is_select or al,al jz @f @@ -2963,11 +2972,11 @@ proc _but_find_perv, edit:dword @@: call ted_get_pos_by_cursor .end0: - mov eax,ted_buffer_find - mov bl,byte[eax] + mov ebx,ted_buffer_find @@: + mov eax,[f_opt] call ted_get_find_rezult - cmp bh,1 + cmp ah,1 je @f ; find call ted_iterat_perv cmp edx,ted_tex_1 @@ -2980,19 +2989,21 @@ endp ;description: ; функция находит текст ниже курсора +;input: +; f_opt = опции для поиска ;output: ; eax = был ли найден искомый текст (0 - нет, 1 - да) -; ebx, edx, edi, esi - портятся +; ebx, ecx, edx, edi, esi - портятся align 16 -proc _but_find_next, edit:dword +proc _but_find_next, edit:dword, f_opt:dword mov edi,[edit] call ted_get_pos_by_cursor - mov eax,ted_buffer_find - mov bl,byte[eax] + mov ebx,ted_buffer_find @@: + mov eax,[f_opt] call ted_get_find_rezult - cmp bh,1 + cmp ah,1 je @f ; find call ted_iterat_next cmp edx,ted_tex_1 @@ -3006,11 +3017,11 @@ endp ;description: ; вспомогательная функция, выделяет найденный текст ;input: -; bh = был ли найден искомый текст (0 - нет, 1 - да) +; ah = был ли найден искомый текст (0 - нет, 1 - да) ; esi = first symbol pointer align 16 _but_find_select: - or bh,bh + or ah,ah jz @f call ted_get_text_coords inc ebx ;move cursor right @@ -3067,45 +3078,58 @@ proc ted_but_replace uses edx edi esi, edit:dword, rpl_text:dword, r_opt:dword, 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 +; Функция проверяет совпадает ли текст в буфере ebx ; с текстом редактора по указателю edx. ; Стандартные функции (напр. strcmp) тут не подойдут, потому что ; в памяти редактора текст содержится не в виде ascii строк. +;input: +; eax - options to find +; ebx - text need find +; edx - first symbol pointer +; edi - pointer to tedit struct +;output: +; ah - rezult +; edx - last text position (if find sucess) +; esi - first symbol pointer align 16 -ted_get_find_rezult: -push eax - mov bh,1 - mov esi,edx ;copy edx +proc ted_get_find_rezult uses ebx + mov al,byte[ebx] + bt eax,30 + jnc @f + call fb_char_toupper @@: - cmp byte[edx],bl + mov ah,1 + mov esi,edx ;copy edx + .cycle0: + mov cl,al + mov al,byte[edx] + bt eax,30 + jnc @f + call fb_char_toupper + @@: + cmp al,cl jne .no_text - inc eax ;*** get next symbol (in find text) *** - mov bl,byte[eax] - or bl,bl - jz @f ;end of find text + inc ebx ;*** get next symbol (in find text) *** + mov al,byte[ebx] + or al,al + jz .end_f ;end of find text + bt eax,30 + jnc @f + call fb_char_toupper + @@: call ted_iterat_next ;*** get next symbol (in editor text) *** cmp edx,ted_tex_1 - jg @b + jg .cycle0 align 4 .no_text: - xor bh,bh + xor ah,ah mov edx,esi ;restore edx - @@: -pop eax - mov bl,byte[eax] ;restore bl + .end_f: ret +endp ;input: ; edi = pointer to tedit struct @@ -4134,8 +4158,7 @@ endp ;description: ; функция нужна для оптимизации вывода текста align 16 -proc ted_opt_draw_line_right - push eax +proc ted_opt_draw_line_right uses eax mov eax,edx @@: cmp edx,ted_tex_1 @@ -4148,8 +4171,6 @@ proc ted_opt_draw_line_right @@: mov edx,eax ;perv sumbol call ted_get_symb_color - - pop eax ret endp @@ -4375,8 +4396,6 @@ align 4 or eax,eax jz .no_msg - ;cmp eax,6 - ;je @f cmp ax,10 jl .zifra_0_9 mov al,'?' diff --git a/programs/other/t_edit/t_button.inc b/programs/other/t_edit/t_button.inc index eac0799e8c..2d2fdfcb03 100644 --- a/programs/other/t_edit/t_button.inc +++ b/programs/other/t_edit/t_button.inc @@ -232,6 +232,10 @@ get_find_options: je @f inc eax @@: + bt dword[ch1.flags],1 + jc @f + bts eax,30 + @@: ret align 4 diff --git a/programs/other/t_edit/t_data.inc b/programs/other/t_edit/t_data.inc index ebd6bf214a..5c317416fb 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_replace dd sz_ted_but_replace ted_text_colored dd sz_ted_text_colored ted_go_to_position dd sz_ted_go_to_position 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_go_to_position db 'ted_go_to_position',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_REPLACE equ 2 ;панель замены TED_PANEL_SYNTAX equ 3 ;панель выбора файлов подсветки TED_PANEL_GOTO equ 4 ;панель перехода 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_all dd ted_but_ctrl_all ;+198 указатель на функцию вызываемую при нажатии Ctrl+N,O,S,F,H,G dd 0,0,0 ;зарезервировано .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_panels dd draw_panels ;+230 указатель на функцию рисования панели поиска/замены dd 0 ;+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 txtGotoCapt db 'Переход на строку:',0 txtGoto 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 txtGotoCapt db 'Go to line:',0 txtGoto db 'Go to',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 init_checkbox dd ainit_checkbox check_box_draw dd acheck_box_draw check_box_mouse dd acheck_box_mouse 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 ted_go_to_position dd sz_ted_go_to_position 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 ainit_checkbox db 'init_checkbox2',0 acheck_box_draw db 'check_box_draw2',0 acheck_box_mouse db 'check_box_mouse2',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_go_to_position db 'ted_go_to_position',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_REPLACE equ 2 ;панель замены TED_PANEL_SYNTAX equ 3 ;панель выбора файлов подсветки TED_PANEL_GOTO equ 4 ;панель перехода 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_all dd ted_but_ctrl_all ;+198 указатель на функцию вызываемую при нажатии Ctrl+N,O,S,F,H,G dd 0,0,0 ;зарезервировано .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_panels dd draw_panels ;+230 указатель на функцию рисования панели поиска/замены dd 0 ;+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 check_boxes: ch1 check_box2 (5 shl 16+12),(144 shl 16 +12),5,0xffffff,0,0x80ff,ch_text.1,ch_flag_en+ch_flag_middle check_boxes_end: 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 txtGotoCapt db 'Переход на строку:',0 txtGoto 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 ch_text: .1 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 txtGotoCapt db 'Go to line:',0 txtGoto db 'Go to',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 ch_text: .1 db 'Case sensitive',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 ebf17a5729..eb75ca7684 100644 --- a/programs/other/t_edit/t_draw.inc +++ b/programs/other/t_edit/t_draw.inc @@ -217,35 +217,43 @@ draw_but_toolbar: ; ;txtBLe db 27 align 4 -proc draw_panels uses edi, edit:dword +proc draw_panels uses eax edx edi, edit:dword mov edi,[edit] cmp ted_panel_id,TED_PANEL_FIND jne @f + mcall SF_DEFINE_BUTTON,,,0x80000000+200 + mcall ,,,0x80000000+202 + mcall ,,,0x80000000+203 + mcall ,,,0x80000000+204 call p_find jmp .end_f @@: cmp ted_panel_id,TED_PANEL_REPLACE jne @f + mcall SF_DEFINE_BUTTON,,,0x80000000+200 + mcall ,,,0x80000000+201 + mcall ,,,0x80000000+204 call p_replace jmp .end_f @@: cmp ted_panel_id,TED_PANEL_GOTO jne @f + mcall SF_DEFINE_BUTTON,,,0x80000000+200 + mcall ,,,0x80000000+201 + mcall ,,,0x80000000+202 + mcall ,,,0x80000000+203 call p_goto jmp .end_f @@: cmp ted_panel_id,TED_PANEL_SYNTAX jne @f - call p_syntax - jmp .end_f - @@: - push eax edx - mcall SF_DEFINE_BUTTON,,,0x80000000+200 - mcall ,,,0x80000000+201 + mcall SF_DEFINE_BUTTON,,,0x80000000+201 mcall ,,,0x80000000+202 mcall ,,,0x80000000+203 mcall ,,,0x80000000+204 - pop edx eax + call p_syntax + ;jmp .end_f + @@: .end_f: ret endp @@ -271,7 +279,7 @@ p_find: mov ecx,ted_wnd_t shl ecx,16 - add ecx,(93 shl 16)+20 + add ecx,(111 shl 16)+20 mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,201,[sc.work_button] ;201 - button id mov ebx,(23 shl 16)+7 @@ -282,11 +290,12 @@ p_find: mov ecx,[sc.work_button_text] or ecx,0x80000000 - mov ebx,(15 shl 16)+100 + mov ebx,(15 shl 16)+118 add ebx,ted_wnd_t mcall ,,,txtFindNext stdcall [option_box_draw], opt_grlist1 + stdcall [check_box_draw], ch1 pop edx ecx ebx eax ret diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index ee4e7da07f..b49fb2b41f 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -70,6 +70,8 @@ mov ebp,lib0 stdcall [ted_init], tedit0 stdcall [tl_data_init], tree1 option_boxes_set_sys_color sc,opt_grlist1 + init_checkboxes2 check_boxes,check_boxes_end + check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc ; OpenDialog initialisation stdcall [OpenDialog_Init],OpenDialog_data @@ -243,6 +245,7 @@ mouse: jne @f stdcall [edit_box_mouse], edit_find stdcall [option_box_mouse], opt_grlist1 + stdcall [check_box_mouse], ch1 @@: cmp byte[tedit0.panel_id],TED_PANEL_REPLACE jne @f