fn_col_option dd def_col_file fn_syntax_dir db 'info/',0 def_col_file db 'default.syn',0 system_dir0 db '/sys/lib/' boxlib_name db 'box_lib.obj',0 fn_icon_tl_sys db 'tl_sys_16.bmp',0 fn_icon_tl_nod db 'tl_nod_16.bmp',0 ;--------------------------------------------------------------------- align 4 boxlib_import: dd alib_init2 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse version_ed dd aVersion_ed ;check_box_draw dd aCheck_box_draw ;check_box_mouse dd aCheck_box_mouse ;version_ch dd aVersion_ch ;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 ;dinamic_button_draw dd aDbutton_draw ;dinamic_button_mouse dd aDbutton_mouse ;version_dbutton dd aVersion_dbutton 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 tl_node_move_down dd sz_tl_node_move_down tl_save_mem dd sz_tl_save_mem tl_load_mem dd sz_tl_load_mem ted_but_save_file dd sz_ted_but_save_file ted_but_sumb_upper dd sz_ted_but_sumb_upper ted_but_sumb_lover dd sz_ted_but_sumb_lover 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_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 PathShow_prepare dd sz_PathShow_prepare PathShow_draw dd sz_PathShow_draw ;Version_path_show dd szVersion_path_show dd 0,0 alib_init2 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 aVersion_ed db 'version_ed',0 ;aCheck_box_draw db 'check_box_draw',0 ;aCheck_box_mouse db 'check_box_mouse',0 ;aVersion_ch db 'version_ch',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 ;aDbutton_draw db 'dbutton_draw',0 ;aDbutton_mouse db 'dbutton_mouse',0 ;aVersion_dbutton db 'version_dbutton',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_tl_node_move_down db 'tl_node_move_down',0 sz_tl_save_mem db 'tl_save_mem',0 sz_tl_load_mem db 'tl_load_mem',0 sz_ted_but_save_file db 'ted_but_save_file',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_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_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 sz_PathShow_prepare db 'PathShow_prepare',0 sz_PathShow_draw db 'PathShow_draw',0 ;szVersion_path_show db 'version_PathShow',0 ;--------------------------------------------------------------------- align 4 ws_dir_lbox: ;дочерний скроллинг для элемента ListBox .x: .size_x dw 16 ;+0 .start_x dw 0 ;+2 .y: .size_y dw 30 ;+4 .start_y dw 70 ;+6 .btn_high dd 15 ;+8 .type dd 1 ;+12 .max_area dd 100 ;+16 rb 4+4 .bckg_col dd 0xeeeeee ;+28 .frnt_col dd 0xbbddff ;+32 .line_col dd 0 ;+36 .redraw dd 0 ;+40 .delta dw 0 ;+44 .delta2 dw 0 ;+46 .run_x: rb 2*4+4*6 .all_redraw dd 0 ;+80 .ar_offset dd 1 ;+84 ;--------------------------------------------------------------------- count_of_dir_list_files equ 15 el_focus dd 0 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, 5,5,180-17,185, 12,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 dir_mem rb 32+304*count_of_dir_list_files edit1 edit_box 310+16-CAPT_PATH_WIDTH, 210+CAPT_PATH_WIDTH, 25, 0xffffff, 0xff, 0xff0000, 0, 0x80, MAX_COLOR_WORD_LEN, ed_buffer.127, mouse_dd, 0 ed_buffer: ;текст для edit .127: rb MAX_COLOR_WORD_LEN+2 ;------------------------------------------------------------------------------ struct TexSelect x0 dd ? y0 dd ? x1 dd ? y1 dd ? ends ;------------------------------------------------------------------------------ align 4 tedit0: ;структура текстового редактора .wnd BOX 195,5+40,325,240 ;+ 0 .rec BOX 30,13,7,10 ;+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 25002 ;+86 максимальное число символов в одном документе .count_colors_text dd 1 ;+90 колличество цветов текста .count_key_words dd 0 ;+94 колличество ключевых слов .color_cursor dd 0xff0000 ;+98 цвет курсора .color_wnd_capt dd 0x0080c0 ;+102 цвет полей вокруг окна .color_wnd_work dd 0x0 ;+106 цвет фона окна .color_wnd_bord dd 0xffffff ;+110 цвет текста на полях .color_select dd 0x0000ff ;+114 цвет выделения .color_cur_text dd 0xffff00 ;+118 цвет символа под курсором .color_wnd_text dd 0x80ffff ;+122 цвет текста в окне .syntax_file dd 0 ;+126 указатель на начало файла синтаксиса .syntax_file_size dd 500 ;+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 scrol_w1 ;+174 вертикальный скроллинг .scr_h dd scrol_h1 ;+178 горизонтальный скроллинг .arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов .buffer dd buf ;+186 указатель на буфер копирования/вставки .buffer_find dd 0 ;+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 but_ctrl_o ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла) .fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (вызова/скрытия панели поиска) .fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (создание нового документа) .fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S .buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки .fun_find_err dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно .fun_init_synt_err dd 0 ;+222 указатель на функцию вызываемую при ошибочном открытии файла синтаксиса .fun_draw_panel_buttons dd 0 ;+226 указатель на функцию рисования панели с кнопками .fun_draw_panel_find dd 0 ;+230 указатель на функцию рисования панели поиска .fun_draw_panel_syntax dd 0 ;+234 указатель на функцию рисования панели синтаксиса .fun_save_err dd 0 ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно .increase_size dd 1000 ;+242 число символов на которые будет увечиваться память при нехватке .ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста) ;------------------------------------------------------------------------------ align 4 scrol_w1: .x: .size_x dw 16 ;+0 .start_x dw 85 ;+2 .y: .size_y dw 100 ; +4 .start_y dw 15 ; +6 .btn_high dd 15 ; +8 .type dd 1 ;+12 .max_area dd 100 ;+16 rb 4+4 .bckg_col dd 0xeeeeee ;+28 .frnt_col dd 0xbbddff ;+32 .line_col dd 0x808080 ;+36 .redraw dd 0 ;+40 .delta dw 0 ;+44 .delta2 dw 0 ;+46 .run_x: rb 2*4+4*6 .all_redraw dd 0 ;+80 .ar_offset dd 1 ;+84 ;--------------------------------------------------------------------- align 4 scrol_h1: .x: .size_x dw 85 ;+0 .start_x dw 30 ;+2 .y: .size_y dw 16 ;+4 .start_y dw 100 ;+6 .btn_high dd 15 ;+8 .type dd 1 ;+12 .max_area dd 100 ;+16 rb 4+4 .bckg_col dd 0xeeeeee ;+28 .frnt_col dd 0xbbddff ;+32 .line_col dd 0x808080 ;+36 .redraw dd 0 ;+40 .delta dw 0 ;+44 .delta2 dw 0 ;+46 .run_x: rb 2*4+4*6 .all_redraw dd 0 ;+80 .ar_offset dd 1 ;+84 ;--------------------------------------------------------------------- PathShow_data_1: .type dd 0 ;+0 .start_y dw 10 ;+4 .start_x dw 210+CAPT_PATH_WIDTH ;+6 .font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 .area_size_x dw 310+16-CAPT_PATH_WIDTH ;+10 .font_number dd 0 ;+12 ; 0 - monospace, 1 - variable .background_flag dd 1 ;+16 .font_color dd 0x0 ;+20 .background_color dd 0xffffff ;+24 .text_pointer dd file_name ;+28 .work_area_pointer dd file_name_rez ;+32 .temp_text_length dd 0 ;+36 align 4 str_file_70: rb (5*4+1+4) ;место под структуру для работы с файлом (ф. 70) text_buffer db 500 dup(0) align 4 ;conv_tabl rb 128 ;таблица для конвертирования scan-кода в ascii-код buf db BUF_SIZE dup(0) ;буфер для копирования | вставки capt_header db 'macro wo txt,lf1,p1,p2,p3{',13 db '@@: db txt',13,'rb @b+40-$',13,'dd lf1',13,'db p1',13,'dw p2+0',13,'db p3',13,'}',13 db 'count_colors_text dd (text-color_wnd_text)/4',13 db 'count_key_words dd (f1-text)/48',13,0 col_1 db 'color_cursor dd ',0 ;+ 98 цвет курсора col_2 db 'color_wnd_capt dd ',0 ;+102 цвет полей вокруг окна col_3 db 'color_wnd_work dd ',0 ;+106 цвет фона окна col_4 db 'color_wnd_bord dd ',0 ;+110 цвет текста на полях col_5 db 'color_select dd ',0 ;+114 цвет выделения col_6 db 'color_cur_text dd ',0 ;+118 цвет символа под курсором col_7 db 'color_wnd_text:',13,0 ;+122 цвет текста в окне capt_lbl_wo db 'text:',13,0 capt_beg_word db 'wo<',39,0 capt_beg_db db ':db ',39,0 capt_end_word db 39,'>,',0 capt_type_dd db 9,'dd ',0 capt_lbl_f1 db 'f1: db 0',13,0 capt_end_word_f1 db 39,',0',13,0 capt_calc_f1 db 'f1' capt_point db '.',0 capt_lbl_f1_use db '-f1',0 capt_null db '0',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