diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.asm b/programs/develop/libraries/box_lib/trunk/box_lib.asm index 666efe9fb4..aba274aebc 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.asm +++ b/programs/develop/libraries/box_lib/trunk/box_lib.asm @@ -180,6 +180,7 @@ dd sz_ted_clear, ted_clear dd sz_ted_delete, ted_delete dd sz_ted_draw, ted_draw dd sz_ted_init, ted_init +dd sz_ted_init_scroll_bars, ted_init_scroll_bars dd sz_ted_init_syntax_file, ted_init_syntax_file dd sz_ted_is_select, ted_is_select dd sz_ted_key, ted_key @@ -276,6 +277,7 @@ 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 diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.mac b/programs/develop/libraries/box_lib/trunk/box_lib.mac index c4425d1356..344321b7b0 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.mac +++ b/programs/develop/libraries/box_lib/trunk/box_lib.mac @@ -340,6 +340,9 @@ sb_offs_start_y equ 6 sb_offs_max_area equ 16 sb_offs_cur_area equ 20 sb_offs_position equ 24 +sb_offs_bckg_col equ 28 +sb_offs_frnt_col equ 32 +sb_offs_line_col equ 36 sb_offs_redraw equ 40 sb_offs_delta2 equ 46 sb_offs_all_redraw equ 80 diff --git a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm index c71adc0b62..210941a762 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm @@ -13,7 +13,31 @@
Элемент text_editor позволяет работать с текстовыми файлами, содержит много функция для редактирования текста.
@@ -62,33 +86,184 @@ endsФункции на экспорт:
Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на Ctrl+C.
+Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на Ctrl+C. Текст копируется в буфер ted_buffer, максимальный размер буфера указывается в ted_buffer_size.
Пример использования:
stdcall [ted_but_copy], tedit0-
Функция вырезает выделенный текст и копирует его в буфер.
+Пример использования:
+stdcall [ted_but_cut], tedit0+ +
Функция для поиска текста. Ищет текст из буфера ted_buffer_find, при нахождении перемещает курсор к найденому тексту и выделяет его.
+Пример использования:
+stdcall [ted_but_find_next], tedit0+ +
Функция вставляет текст из буфера ted_buffer.
+Пример использования:
+stdcall [ted_but_paste], tedit0+ +
Повторяет отмененные действия по редактированию текста.
+Пример использования:
+stdcall [ted_but_redo], tedit0+ +
Меняет порядок следования символов в выделенном тексте.
+Пример использования:
+stdcall [ted_but_reverse], tedit0+ +
Функция для сохранения файла. Принимает 3 параметра:
+1) структура tedit,
+2) структура для работы 70-й функции (до вызова функции заполнения не требует),
+3) строка с путем и именем файла.
+Пример использования:
+stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text]+ +
Функция для выделения ключевого слова под курсором. Если ключевые слова не используются, тогда будет выделен весь текст.
+Пример использования:
+stdcall [ted_but_select_word], tedit0+ +
Переводит выделенные символы к нижнему регистру.
+Пример использования:
+stdcall [ted_but_sumb_lover], tedit0+ +
Переводит выделенные символы к верхнему регистру.
+Пример использования:
+stdcall [ted_but_sumb_upper], tedit0+ +
Отменяет действия по редактированию текста. Действия функции ted_but_reverse не отменяются.
+Пример использования:
+stdcall [ted_but_undo], tedit0+ +
Функция которая проверяет были ли не сохраненные изменения в тексте. Результат возвращается в регистр al, если изменения были то возвращает 1 иначе 0.
+Пример использования:
+push eax + stdcall [ted_can_save], tedit0 + cmp al,1 +......... +pop eax+ +
Очистка текста в окне редактора. Принимает 2 параметра:
+1) структура tedit,
+2) параметр определяет будет ли очистка памяти полной.
+Если 2-й параметр равен 1, то очистка будет полной, при 0 нет. Пользователю нужно вызывать функцию с параметром 1, параметр 0 для внутреннего использования.
+Пример использования:
+stdcall [ted_clear], tedit0,1+ +
Деструктор элемента, освобождает память занятую элементом.
+Пример использования:
+stdcall [ted_delete], tedit0+ +
Перерисовка всего окна редактора, включая дочерние скроллинги.
+Пример использования:
+stdcall [ted_draw], tedit0+ +
Конструктор элемента, выделяет память необходимую для работы текстового редактора.
+Пример использования:
+stdcall [ted_init], tedit0+ +
Устанавливает цвет скроллингов и настраивает их размеры в зависимости от размеров окна. Можно вызывать эту функцию при изменении размеров окна в пользовательской программе. Принимает 2 параметра:
+1) структура tedit,
+2) опции, если 1 то изменять цвета скроллингов если 2 то изменять размер, можно давать комбинацию опций с помощью или.
+Пример использования:
+stdcall [ted_init_scroll_bars], tedit0,2+ +
Функция для загрузки цветов интерфейса и ключевых слов из файла синтаксиса. Принимает 3 параметра:
+1) структура tedit,
+2) структура для работы 70-й функции (до вызова функции заполнения не требует),
+3) строка с путем и именем файла синтаксиса.
+Пример использования:
+stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name+ +
Определяет есть в окне редактора выделенный текст. Если есть в регистр al записывается 1 иначе 0. Функция необходима для создания панелей инстрементов, в которых в зависимости от выделения будут доступны или заблокированы определенные кнопки (действия). Например кнопку для копирования в буфер можно заблокировать если нет выбранного текста.
+Пример использования:
+push eax edi + mov edi,tedit0 + call [ted_is_select] + cmp al,0 +......... +pop edi eax+ +
Функция вызываемая для реакции на клавиатуру. В регистре eax должен быть код нажатой клавиши. Принимает 3 параметра:
+1) структура tedit,
+2) таблица для конвертации scan кодов в ascii,
+3) управляющие символы.
+Пример использования:
+mcall 66,3 ;66.3 получить состояние управляющих клавиш +xor esi,esi +mov ecx,1 +test al,0x03 ;[Shift] +jz @f + mov cl,2 + or esi,KM_SHIFT +@@: +test al,0x0c ;[Ctrl] +jz @f + or esi,KM_CTRL +@@: +test al,0x30 ;[Alt] +jz @f +mov cl,3 + or esi,KM_ALT +@@: +test al,0x80 ;[NumLock] +jz @f + or esi,KM_NUMLOCK +@@: + +mcall 26,2,,conv_tabl ;26.2 получить раскладку клавиатуры +mcall 2 ;получаем код нажатой клавиши +stdcall [ted_key], tedit0, conv_tabl,esi+ +
Функция на перемещение или нажатие мыши.
+Пример использования:
+stdcall [ted_mouse], tedit0+ +
Функция для открытия файла. Принимает 3 параметра:
+1) структура tedit,
+2) структура для работы 70-й функции (до вызова функции заполнения не требует),
+3) строка с путем и именем файла.
+Пример использования:
+stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]+ +
Функция для добавления текста. Принимает 4 параметра:
+1) структура tedit,
+2) указатель на буфер с текстом,
+3) длина текста,
+4) опции вставки.
+Пример использования:
+mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor +stdcall [ted_text_add], tedit0,ted_buffer,30,ebx+
ted_opt_ed_change_time - фиксировать изменения документа, что-бы их можно было отменить. Например если нужно сделать несколько изменений текста, которые будут отменяться за один раз, то 1-е изменение идет с этой константой а остальные нет.
+ted_opt_ed_move_cursor - константа которая определяет сдвиг курсора после добавления текста.
+ +Функция для разметки текста цветом. Обычно вызывается внутри самой библиотеки, при изменениях текста. В некоторых случаях может понадобиться вызвать принудительно из внешней программы.
+Пример использования:
+push edi + mov edi,tedit0 + call [ted_text_colored] +pop edi
Внутренние функции:
ted_get_text_perv_pos - переход на предыдущий символ в цепи (через указатель 'perv')
@@ -106,8 +281,7 @@ endsted_go_to_pos - переставляет курсор в указанную позицию, если указанная позиция находится вне экрана, то также переставляются скролинги (ecx->коорд. x, знак; edx->коорд. y, строка)
- -Элемент | Размер (байт) |
---|---|
Количество цветов текста | @@ -132,7 +306,7 @@ ends