From 6eefd8e3f526ba911b6ab3041d1eca092776d773 Mon Sep 17 00:00:00 2001 From: IgorA Date: Tue, 8 Jan 2019 16:22:08 +0000 Subject: [PATCH] add save files Ctrl+S and Ctrl+Shift+S git-svn-id: svn://kolibrios.org@7571 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/trunk/t_edit.asm | 18 ++-- programs/other/t_edit/t_button.inc | 33 +++---- programs/other/t_edit/t_data.inc | 2 +- programs/other/t_edit/t_draw.inc | 49 ++++++----- programs/other/t_edit/t_edit.asm | 82 ++++++++++-------- programs/other/t_edit/t_edit.ini | 1 + programs/other/t_edit/t_menu.inc | 2 + programs/other/t_edit/te_icon.png | Bin 1387 -> 2611 bytes 8 files changed, 108 insertions(+), 79 deletions(-) diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.asm b/programs/develop/libraries/box_lib/trunk/t_edit.asm index 64316e04e9..bfd5e6eb82 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.asm +++ b/programs/develop/libraries/box_lib/trunk/t_edit.asm @@ -243,27 +243,33 @@ proc ted_key, edit:dword, table:dword, control:dword cmp ah,24 ;Ctrl+O jne @f cmp ted_fun_on_key_ctrl_o,0 - je @f + je .end_key_fun call ted_fun_on_key_ctrl_o @@: cmp ah,31 ;Ctrl+S - jne @f + jne .end_ctrl_s cmp ted_fun_on_key_ctrl_s,0 - je @f + je .end_key_fun + xor eax,eax + test esi,KM_SHIFT + jz @f + inc eax + @@: call ted_fun_on_key_ctrl_s - @@: + jmp .end_key_fun + .end_ctrl_s: cmp ah,33 ;Ctrl+F jne @f cmp ted_panel_id,TED_PANEL_FIND je @f cmp ted_fun_on_key_ctrl_f,0 - je @f + je .end_key_fun call ted_fun_on_key_ctrl_f @@: cmp ah,49 ;Ctrl+N jne @f cmp ted_fun_on_key_ctrl_n,0 - je @f + je .end_key_fun call ted_fun_on_key_ctrl_n @@: ; *** вызов внутренних функций diff --git a/programs/other/t_edit/t_button.inc b/programs/other/t_edit/t_button.inc index e7bed92b73..4b3f65efd6 100644 --- a/programs/other/t_edit/t_button.inc +++ b/programs/other/t_edit/t_button.inc @@ -194,21 +194,24 @@ popad ret endp +;input: +; eax если равен: 0 - сохранение без диалога, 1 - сохранение с диалогом ;description: ; функция сохранения файла align 4 proc ted_but_save_file - ;*** вызов диалогового окна для сохранения файла - .init_dlg: - copy_path open_dialog_name,communication_area_default_path,file_name,0 - mov [OpenDialog_data.type],1 - stdcall [OpenDialog_Start],OpenDialog_data - cmp [OpenDialog_data.status],1 ;if status==1 then save - jne .end_save - jmp @f - .no_dlg: ; сохраняем без вызова диалогового окна + or eax,eax + jnz .init_dlg + ; сохраняем без вызова диалогового окна cmp byte[openfile_path],0 - je .init_dlg ; но если путь пустой то все-же вызываем + jne @f + .init_dlg: + ; вызов диалогового окна для сохранения файла + copy_path open_dialog_name,communication_area_default_path,file_name,0 + mov [OpenDialog_data.type],1 + stdcall [OpenDialog_Start],OpenDialog_data + cmp [OpenDialog_data.status],1 ;if status==1 then save + jne .end_save @@: stdcall [ted_save_file],tedit0,run_file_70,openfile_path .end_save: @@ -220,9 +223,9 @@ endp align 4 proc mem_cpy uses ecx esi edi, destination:dword, source:dword, len:dword cld - mov esi, dword[source] - mov edi, dword[destination] - mov ecx, dword[len] + mov esi,[source] + mov edi,[destination] + mov ecx,[len] rep movsb ret endp @@ -233,8 +236,8 @@ align 4 proc mem_spac uses eax ecx edi, mem:dword, len:dword cld mov al,' ' - mov edi, dword[mem] - mov ecx, dword[len] + mov edi,[mem] + mov ecx,[len] repne stosb ret endp diff --git a/programs/other/t_edit/t_data.inc b/programs/other/t_edit/t_data.inc index d73f381e05..e197168b7b 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 20 ;настройки отображения кнопок на панели ;значения задаваемые по умолчанию, без 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_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 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_next dd sz_ted_but_find_next 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 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_next db 'ted_but_find_next',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_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 ted_but_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.no_dlg ;+210 ... Ctrl+S .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 dd 0,0,count_of_dir_list_files dd dir_mem db 0 dd file_name ;sys_path 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 'Достигнут конец документа.',13,\ 'Попробуйте перейти в начало документа',13,\ 'или изменить запрос и повторить поиск.',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 txtFormatCapt db 'Формат',0 txtFormatApply 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 'Reached end of the document.',13,\ 'Try to go to the beginning of the document',13,\ 'or 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 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',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 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_next dd sz_ted_but_find_next 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 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_next db 'ted_but_find_next',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_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 ted_but_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 dd 0,0,count_of_dir_list_files dd dir_mem db 0 dd file_name ;sys_path 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 'Достигнут конец документа.',13,\ 'Попробуйте перейти в начало документа',13,\ 'или изменить запрос и повторить поиск.',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 txtFormatCapt db 'Формат',0 txtFormatApply 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 'Reached end of the document.',13,\ 'Try to go to the beginning of the document',13,\ 'or 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 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',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 0c279f2d04..f93912e8eb 100644 --- a/programs/other/t_edit/t_draw.inc +++ b/programs/other/t_edit/t_draw.inc @@ -30,8 +30,15 @@ draw_but_toolbar: ; @@: or ecx,0x40000000 - inc cx + inc cx bt word[panel_but+3],0 + jnc @f + add edx,25 shl 16 + call draw_but_icon ;Save as + @@: + + inc cx + bt word[panel_but+4],0 jnc @f add edx,30 shl 16 call draw_but_icon ;Select word @@ -43,14 +50,14 @@ draw_but_toolbar: ; and ecx,0xffff @@: inc cx - bt word[panel_but+4],0 + bt word[panel_but+5],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Cut @@: inc cx - bt word[panel_but+5],0 + bt word[panel_but+6],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Copy @@ -62,7 +69,7 @@ draw_but_toolbar: ; and ecx,0xffff @@: inc cx - bt word[panel_but+6],0 + bt word[panel_but+7],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Paste @@ -70,21 +77,21 @@ draw_but_toolbar: ; or ecx,0x40000000 inc cx - bt word[panel_but+7],0 + bt word[panel_but+8],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Found @@: inc cx - bt word[panel_but+8],0 + bt word[panel_but+9],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Replace @@: inc cx - bt word[panel_but+9],0 + bt word[panel_but+10],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Key words @@ -96,21 +103,21 @@ draw_but_toolbar: ; and ecx,0xffff @@: inc cx - bt word[panel_but+10],0 + bt word[panel_but+11],0 jnc @f add edx,30 shl 16 call draw_but_icon ;Upper @@: inc cx - bt word[panel_but+11],0 + bt word[panel_but+12],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Lower @@: inc cx - bt word[panel_but+12],0 + bt word[panel_but+13],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Reverse @@ -123,7 +130,7 @@ draw_but_toolbar: ; and ecx,0xffff @@: inc cx - bt word[panel_but+13],0 + bt word[panel_but+14],0 jnc @f add edx,30 shl 16 call draw_but_icon ;Undo @@ -135,7 +142,7 @@ draw_but_toolbar: ; and ecx,0xffff @@: inc cx - bt word[panel_but+14],0 + bt word[panel_but+15],0 jnc @f add edx,25 shl 16 call draw_but_icon ;Redo @@ -143,19 +150,12 @@ draw_but_toolbar: ; or ecx,0x40000000 inc cx - bt word[panel_but+15],0 + bt word[panel_but+16],0 jnc @f add edx,30 shl 16 call draw_but_icon ;Invisible on|off @@: - inc cx - bt word[panel_but+16],0 - jnc @f - add edx,25 shl 16 - call draw_but_icon - @@: - inc cx bt word[panel_but+17],0 jnc @f @@ -165,13 +165,20 @@ draw_but_toolbar: ; inc cx bt word[panel_but+18],0 + jnc @f + add edx,25 shl 16 + call draw_but_icon ;╧юфётхЄър тъы|т√ъы + @@: + + inc cx + bt word[panel_but+19],0 jnc @f add edx,30 shl 16 call draw_but_icon ;cp 1251 -> 866 @@: inc cx - bt word[panel_but+19],0 + bt word[panel_but+20],0 jnc @f add edx,25 shl 16 call draw_but_icon ;cp 866 -> 1251 diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index 8bda5dd6ad..5e61581e9d 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -215,40 +215,42 @@ mov ebp,lib0 mov byte[panel_but+1],al stdcall [ini_get_int],file_name,ini_sec_window,key_but_save,1 mov byte[panel_but+2],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_select,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_save_as,1 mov byte[panel_but+3],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_cut,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_select,1 mov byte[panel_but+4],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_copy,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_cut,1 mov byte[panel_but+5],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_paste,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_copy,1 mov byte[panel_but+6],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_find,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_paste,1 mov byte[panel_but+7],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_replace,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_find,1 mov byte[panel_but+8],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_key_words,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_replace,1 mov byte[panel_but+9],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_upper,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_key_words,1 mov byte[panel_but+10],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_lower,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_upper,1 mov byte[panel_but+11],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_reverse,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_lower,1 mov byte[panel_but+12],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_undo,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_reverse,1 mov byte[panel_but+13],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_redo,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_undo,1 mov byte[panel_but+14],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_invisible,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_redo,1 mov byte[panel_but+15],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_syntax_list,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_invisible,1 mov byte[panel_but+16],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_syntax_mode,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_syntax_list,1 mov byte[panel_but+17],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_convert_1251_866,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_syntax_mode,1 mov byte[panel_but+18],al - stdcall [ini_get_int],file_name,ini_sec_window,key_but_convert_866_1251,1 + stdcall [ini_get_int],file_name,ini_sec_window,key_but_convert_1251_866,1 mov byte[panel_but+19],al + stdcall [ini_get_int],file_name,ini_sec_window,key_but_convert_866_1251,1 + mov byte[panel_but+20],al ;файловые расширения xor edx,edx mov ebx,synt_auto_open @@ -410,8 +412,8 @@ key: cmp ah,69 ;[Pause Break] je still - stdcall KeyConvertToASCII, dword conv_tabl - stdcall [edit_box_key], dword edit2 + stdcall KeyConvertToASCII, conv_tabl + stdcall [edit_box_key], edit2 jmp still @@: @@ -433,90 +435,98 @@ button: @@: cmp ah,5 jne @f - call ted_but_save_file + xor eax,eax + call ted_but_save_file ;сохранение без диалога jmp still @@: cmp ah,6 jne @f - stdcall [ted_but_select_word], tedit0 + xor eax,eax + inc eax + call ted_but_save_file ;сохранение с диалогом jmp still @@: cmp ah,7 jne @f - stdcall [ted_but_cut], tedit0 + stdcall [ted_but_select_word], tedit0 jmp still @@: cmp ah,8 jne @f - stdcall [ted_but_copy], tedit0 + stdcall [ted_but_cut], tedit0 jmp still @@: cmp ah,9 jne @f - stdcall [ted_but_paste], tedit0 + stdcall [ted_but_copy], tedit0 jmp still @@: cmp ah,10 jne @f - call ted_but_find + stdcall [ted_but_paste], tedit0 jmp still @@: cmp ah,11 jne @f - call but_replace + call ted_but_find jmp still @@: cmp ah,12 jne @f - call but_find_key_w + call but_replace jmp still @@: cmp ah,13 jne @f - stdcall [ted_but_sumb_upper], tedit0 + call but_find_key_w jmp still @@: cmp ah,14 jne @f - stdcall [ted_but_sumb_lover], tedit0 + stdcall [ted_but_sumb_upper], tedit0 jmp still @@: cmp ah,15 jne @f - stdcall [ted_but_reverse], tedit0 + stdcall [ted_but_sumb_lover], tedit0 jmp still @@: cmp ah,16 jne @f - stdcall [ted_but_undo], tedit0 + stdcall [ted_but_reverse], tedit0 jmp still @@: cmp ah,17 jne @f - stdcall [ted_but_redo], tedit0 + stdcall [ted_but_undo], tedit0 jmp still @@: cmp ah,18 jne @f - stdcall but_sumb_invis, tedit0 + stdcall [ted_but_redo], tedit0 jmp still @@: cmp ah,19 jne @f - stdcall but_k_words_show, tedit0 + stdcall but_sumb_invis, tedit0 jmp still @@: cmp ah,20 jne @f - stdcall but_synt_show, tedit0 + stdcall but_k_words_show, tedit0 jmp still @@: cmp ah,21 jne @f - stdcall [ted_but_convert_by_table],tedit0,tbl_1251_866 + stdcall but_synt_show, tedit0 jmp still @@: cmp ah,22 + jne @f + stdcall [ted_but_convert_by_table],tedit0,tbl_1251_866 + jmp still + @@: + cmp ah,23 jne @f stdcall [ted_but_convert_by_table],tedit0,tbl_866_1251 jmp still diff --git a/programs/other/t_edit/t_edit.ini b/programs/other/t_edit/t_edit.ini index 98682ae38a..cf92b4ab3a 100644 --- a/programs/other/t_edit/t_edit.ini +++ b/programs/other/t_edit/t_edit.ini @@ -10,6 +10,7 @@ scroll_type=0 but_new=1 but_open=1 but_save=1 +but_save_as=1 but_select=1 but_cut=1 but_copy=1 diff --git a/programs/other/t_edit/t_menu.inc b/programs/other/t_edit/t_menu.inc index ec63b7e823..d009168a6e 100644 --- a/programs/other/t_edit/t_menu.inc +++ b/programs/other/t_edit/t_menu.inc @@ -5,6 +5,7 @@ sz_main_menu_File db ' sz_main_menu_File_New db 'Новый', 0 sz_main_menu_File_Open db 'Открыть', 0 sz_main_menu_File_Save db 'Сохранить', 0 +sz_main_menu_File_Save_As db 'Сохранить как', 0 sz_main_menu_File_Exit db 'Выход', 0 sz_main_menu_Changes db 'Изменения', 0 @@ -35,6 +36,7 @@ sz_main_menu_File db 'File', 0 sz_main_menu_File_New db 'New', 0 sz_main_menu_File_Open db 'Open', 0 sz_main_menu_File_Save db 'Save', 0 +sz_main_menu_File_Save_As db 'Save as', 0 sz_main_menu_File_Exit db 'Exit', 0 sz_main_menu_Changes db 'Changes', 0 diff --git a/programs/other/t_edit/te_icon.png b/programs/other/t_edit/te_icon.png index 0d99a7d1cc6a6f5c3728dcb95b789f5087bc2727..6ad1464f9aa9293256136f8e64d1192381cb7841 100644 GIT binary patch literal 2611 zcmV-33e5G1P)30ssI2zE+Z(000U4NklQ^mHCR{Vk1P7wq9=m2S(bgbBEH$T82lL`b(rZ6xAk_19+3kGS&c4sS7 zeuRKUTa##7;IBY~^>FMbnfJ32B6mU^dQ3SkT(Mq9T`Cqmqef>r? z{KnBn#%XIs-HEp56~)C2uM6j7rfl4}mEpzk#YSsjjX*C1rAQa`OGtvg!P# zFtiB|aOat`d-pZq?#><0*}=U%7rrv;Yc&7%zfKGRD^@As_s;+CmYW8GGpB%z(lchM zVQBNb7Tnp{c~jC|Jg*Bwo972ENhJ*B!TI2MEg0HDUKi$hEtp(ec(u@`fDM&NVMi7- z?DP4eAkjS6hK9u-Hcb;7mSs7Efg}vJNsr^SF$)2_cIhPa*idy+C;uxjkb4idjF8~OlW=M}e-?&gcnaP=JKI&X;cxWFBVgFqCk3#5g{0LsoSUm*SFK<=uQh1+ zigN`9a`THjq3emq7Ldllzwe@%84o}DbXisFsqUtVHNdlQ!<+ww1DS=Jz!g0ZgFCqF z?CG1z%IQN1fG1@>dUtXfG}f#xqSIExA9S{zY}zHP6Q0x#)~U7_u6lXDEG!*d4D-{& z7|a$7TM8ezH`NBt`A@qYJmMl_FJ1;VlO%?9W|&w6?1)7Bl55!Qx7{(O?pCtfo%_j0 zA9rbK7%T?ZR*x%aD`zK+mEd`B zZE0!w6SiHY5_dw z@zTX5rSCNFnVc~Xc0+&t4Q#zXUk_XC++JF;Z(E4~Ubp=S90n)2DTQd*hJL>Dsl`8G zVGMi2sYAi{d+8vH*X^3KcqK3?_l*8x;&jp<0Uu}zA_i?bJ;G!1aEhGF6v3E*e`)_g zXwW1n2W*!-G6PA&)v)0oGs5%d&u5P9-o4uaeEj%va$xGzsY;%OKk5Dy5BSo5+S>9D z*xK+cjM7oJXD?tK9l4CRW#wx{1{-tRws6=_c0HZ|!;2%MwYK^g7TI|i9>jx4rV^CF~(YSYDJ@&k| z<#&~DtS)U8!{O7_GoL(-F=+$7VdI3}t}Zn!9HAC` zEYnHz34@90!u;@L{VXi2s&E$K3d=4A;l*QI?OQ2V!(xERr@Z*FZZwhc6iQwi*)dE4 z#u^zF$qMgjbTS=l?D-??b{0vqzJR~i-Y`OrBbd8c=* z7=GJtrZ0SCM|Ja}g&F5R@QC5N!*3l4>cX!!H?67dgT|)3q=zyxoxv%E^%ZRcb6J?? z30BOG6>h2C|NVd^fWMnD8}fwo$RGj62Br;-6V3HfxS_$CIn(U#{|I`1^sCok`}#8v zl5^dB^X*zNPdb2wQ*~8gsOZlEZwlahA9%2}wcF<#V{>gEId)tC*RP$ex2TNS8|n>L z!-jv%*9L5Qz4m|=`8^_aABH4RKAZ$v2*VLP2YW6vh=mQlCvmV5ndeAJn}>DNR+)63 zo!a#ZyBc^g;oq9^Q>tSV2y2>V%hu+vc7R^Ve0{P+A+Kk~ei1PrBJPAYzpV;Xa;)sA(ZU04OX z8Ws<@@3YTW{aO6`>ldE1eGU-G9qR<2>MeSzQ2{U87zFa&?n^xU`>n0IaDVTmzKi|z zq33FX&fxa2;nLz<>C)kAY>YTD&C5VR~(8!Q|KjKc28W`#u{zQ7jC5F^V^=uVe}( z88>DW!iGr66iQ;RWQsA{E1BZjwpTLs!mv>?SHp&T%yEWg4^26EK8$$N|J`E;3m@^h z_TiYu%<$2`VI!(wHtX4l_+Wg|R5OrUTezZ5^BaV!1Ix_hO z7;$7KZQ@O5p-3CE;@iUUC+7Y0lqplv(xxR(oY;BlR9oB8j*brgJ&H6k;bo+ud}{=} zj8uRMnP}ses$W!50w6jpk~Y zUcqcM#JH?pv>wnud1QY_CR8#*b`!_=3Drv+nMs>b9Qu$nZG-wL9NiX<|Eg-({{b=b VjnR~?ZkPZ7002ovPDHLkV1g=B6gL0> delta 1381 zcmV-r1)BP^6zd9*7k`il0{{R3nE|jx00004XF*Lt006O%3;baP00001b5ch_0Itp) z=>Px#rBF;%McCNb{{R3zVW|LsfB^sh0093pHbnpb|3E-M0002(?Ct;nfKWRD$dEhy z{QSSt>Cu@`-{tZ5$z`dz*mj-H^wMSj0RJs5EoDs@^7Q%Vfq#L^%+lzyPyObU|Nj7h z003NhnzqB?0RI4pP$&R^0AXQg{`Jnbbs&L(=ZL%Rsi~}|R{-e1XoZK3`0l~xS9gk6 z4Jk%rf||dJm8qG`|2JHMwZhn)14*v{00d-7L_t(&-sPB!cG@@)hHVGik_}C0Xi05o zOoQ3r78aK7`+vXMN;A5QWW^ypO+wH92ifqQ(MXyfU!%M)7UfY-2s5SHfgeDpwhq7u zsfJ%9?4l2l!9Yp7oybdI0kp1b3a16)FAh}HfsvvvRMdgBrViB9g-9JJX9LQ5Rm$j! zg7xe{7EtsukA@)Uyazcn9_Y?B9FNCN1_{TT&1Q_U1AmQ|%jE{-!A~F;ir-cW3bs*N zj#Z>&OB7^4IR2!x7@M3PQ_zlaW|dyuqbzg(A`)iT*YZur-O5{@Nc8+H$}m?UtE(%gA~T4b&LWHcZRZ^g}I_Ex3E)Gu+9#|YDrmM zGdjAYn%OA{+SbgUC#wtQPJY)kO;?D`&cfri*>2l*D|SZ>n{88wrgjP*wDHFOOP8`lrjlY9myENy!0Z4 zbC|)4l)-)^lfiWIUL?wk)G!pObuq^g^dfL_C&Y?^$^AsZyZwI83Q>Kw-!JYA{K)Wp z&OSO&$${!ZzH}f;Pu+!Z8`*b>-E~nc@NARNM=|&kti9tUiaonBj3uSzZ_}!_nh;pAarq~U|3 zi+YAV1CFc=9F4>=1Dg~mLh)TR+&%-L=dX81=yngy^HmCRfgXX>!abOd0&b>ml|pVt zqfq5B=p2tm0gI#my+=K$D&g8ODiN0S?_HKyxDqJBl4vv(8O#|T{q5HN-X7J75`Tep zGDT6COs`QMT-{3b;LOVjF!4t3L)i-;_EwR}tr&N;y8S1i-6b{5=DfW&%q}yrj1(kE zF5e^VkMo9H8MI318}bDG(G}ID6Y4>s+0=ucAw$r0iBx`STq2dXE|HwpC9?LU=ceP* z1s_M`NrpZjaeN!@KOg-v4CYkNV1K+f&o_gA!nqFpi9zJaR4NF+g3f{8K<7Yn)qfW1 zSFO*(&meD^9{f{0iiw8dSE6C~jc6Epch3VbB^rjGiH703dKAktR}oZL7a6K8e#PJc ziHsn!vXRie!f4VxR!!v{K7Y>JT|4LAG6kInPCQ#5njIfNS*Gf zbo3FL7pdc&oY-FVII2V?D^bY`ol!@JcF38$@w4(Hb-a@kTXYc~nYyRwh=k~taw#Q| nk#>ke^ug(#s;2V3z@z^FNu|C*Pb~-p00000NkvXXu0mjfj-se7