mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-26 16:37:30 +03:00
1) revised 't_edit' new function 'ted_init_scroll_bars'
2) updated documentation git-svn-id: svn://kolibrios.org@1458 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
fd898963db
commit
16c8c37422
@ -180,6 +180,7 @@ dd sz_ted_clear, ted_clear
|
|||||||
dd sz_ted_delete, ted_delete
|
dd sz_ted_delete, ted_delete
|
||||||
dd sz_ted_draw, ted_draw
|
dd sz_ted_draw, ted_draw
|
||||||
dd sz_ted_init, ted_init
|
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_init_syntax_file, ted_init_syntax_file
|
||||||
dd sz_ted_is_select, ted_is_select
|
dd sz_ted_is_select, ted_is_select
|
||||||
dd sz_ted_key, ted_key
|
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_delete db 'ted_delete',0
|
||||||
sz_ted_draw db 'ted_draw',0
|
sz_ted_draw db 'ted_draw',0
|
||||||
sz_ted_init db 'ted_init',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_init_syntax_file db 'ted_init_syntax_file',0
|
||||||
sz_ted_is_select db 'ted_is_select',0
|
sz_ted_is_select db 'ted_is_select',0
|
||||||
sz_ted_key db 'ted_key',0
|
sz_ted_key db 'ted_key',0
|
||||||
|
@ -340,6 +340,9 @@ sb_offs_start_y equ 6
|
|||||||
sb_offs_max_area equ 16
|
sb_offs_max_area equ 16
|
||||||
sb_offs_cur_area equ 20
|
sb_offs_cur_area equ 20
|
||||||
sb_offs_position equ 24
|
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_redraw equ 40
|
||||||
sb_offs_delta2 equ 46
|
sb_offs_delta2 equ 46
|
||||||
sb_offs_all_redraw equ 80
|
sb_offs_all_redraw equ 80
|
||||||
|
@ -13,7 +13,31 @@
|
|||||||
<p><a href="#funct">Функции</a></p>
|
<p><a href="#funct">Функции</a></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#fun_but_copy">ted_but_copy</a></li>
|
<li><a href="#fun_but_copy">ted_but_copy</a></li>
|
||||||
|
<li><a href="#fun_but_cut">ted_but_cut</a></li>
|
||||||
|
<li><a href="#fun_but_find_next">ted_but_find_next</a></li>
|
||||||
|
<li><a href="#fun_but_paste">ted_but_paste</a></li>
|
||||||
|
<li><a href="#fun_but_redo">ted_but_redo</a></li>
|
||||||
|
<li><a href="#fun_but_reverse">ted_but_reverse</a></li>
|
||||||
|
<li><a href="#fun_but_save_file">ted_but_save_file</a></li>
|
||||||
|
<li><a href="#fun_but_select_word">ted_but_select_word</a></li>
|
||||||
|
<li><a href="#fun_but_sumb_lover">ted_but_sumb_lover</a></li>
|
||||||
|
<li><a href="#fun_but_sumb_upper">ted_but_sumb_upper</a></li>
|
||||||
|
<li><a href="#fun_but_undo">ted_but_undo</a></li>
|
||||||
|
<li><a href="#fun_can_save">ted_can_save</a></li>
|
||||||
|
<li><a href="#fun_clear">ted_clear</a></li>
|
||||||
|
<li><a href="#fun_delete">ted_delete</a></li>
|
||||||
|
<li><a href="#fun_draw">ted_draw</a></li>
|
||||||
|
<li><a href="#fun_init">ted_init</a></li>
|
||||||
|
<li><a href="#fun_init_scroll_bars">ted_init_scroll_bars</a></li>
|
||||||
|
<li><a href="#fun_init_syntax_file">ted_init_syntax_file</a></li>
|
||||||
|
<li><a href="#fun_is_select">ted_is_select</a></li>
|
||||||
|
<li><a href="#fun_key">ted_key</a></li>
|
||||||
|
<li><a href="#fun_mouse">ted_mouse</a></li>
|
||||||
|
<li><a href="#fun_open_file">ted_open_file</a></li>
|
||||||
|
<li><a href="#fun_text_add">ted_text_add</a></li>
|
||||||
|
<li><a href="#fun_text_colored">ted_text_colored</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<p><a href="#syn_file">Формат файла подсветки *.syn</a></p>
|
||||||
|
|
||||||
<h1><a name="vveden">Введение</a></h1>
|
<h1><a name="vveden">Введение</a></h1>
|
||||||
<p>Элемент text_editor позволяет работать с текстовыми файлами, содержит много функция для редактирования текста.</p>
|
<p>Элемент text_editor позволяет работать с текстовыми файлами, содержит много функция для редактирования текста.</p>
|
||||||
@ -62,33 +86,184 @@ ends</pre>
|
|||||||
<p>Функции на экспорт:</p>
|
<p>Функции на экспорт:</p>
|
||||||
|
|
||||||
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
||||||
|
<p>Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на <b>Ctrl+C</b>. Текст копируется в буфер <b>ted_buffer</b>, максимальный размер буфера указывается в <b>ted_buffer_size</b>.</p>
|
||||||
<p>Ôóíêöèÿ êîòîðàÿ áóäåò âûçûâàòüñÿ ïðè íàæàòèè íà êíîïêó êîïèðîâàíèÿ â áóôåð èëè íà <b>Ctrl+C</b>.</p>
|
|
||||||
<p>Пример использования:</p>
|
<p>Пример использования:</p>
|
||||||
<pre>stdcall [ted_but_copy], tedit0</pre>
|
<pre>stdcall [ted_but_copy], tedit0</pre>
|
||||||
|
|
||||||
<h4>ted_but_cut</h4><p></p>
|
<h4><a name="fun_but_cut">ted_but_cut</a></h4>
|
||||||
<h4>ted_but_find_next</h4><p></p>
|
<p>Функция вырезает выделенный текст и копирует его в буфер.</p>
|
||||||
<h4>ted_but_paste</h4><p></p>
|
<p>Пример использования:</p>
|
||||||
<h4>ted_but_redo</h4><p></p>
|
<pre>stdcall [ted_but_cut], tedit0</pre>
|
||||||
<h4>ted_but_reverse</h4><p></p>
|
|
||||||
<h4>ted_but_save_file</h4><p></p>
|
<h4><a name="fun_but_find_next">ted_but_find_next</a></h4>
|
||||||
<h4>ted_but_select_word</h4><p></p>
|
<p>Функция для поиска текста. Ищет текст из буфера <b>ted_buffer_find</b>, при нахождении перемещает курсор к найденому тексту и выделяет его.</p>
|
||||||
<h4>ted_but_sumb_lover</h4><p></p>
|
<p>Пример использования:</p>
|
||||||
<h4>ted_but_sumb_upper</h4><p></p>
|
<pre>stdcall [ted_but_find_next], tedit0</pre>
|
||||||
<h4>ted_but_undo</h4><p></p>
|
|
||||||
<h4>ted_can_save</h4><p></p>
|
<h4><a name="fun_but_paste">ted_but_paste</a></h4><p></p>
|
||||||
<h4>ted_clear</h4><p></p>
|
<p>Функция вставляет текст из буфера <b>ted_buffer</b>.</p>
|
||||||
<h4>ted_delete</h4><p></p>
|
<p>Пример использования:</p>
|
||||||
<h4>ted_draw</h4><p></p>
|
<pre>stdcall [ted_but_paste], tedit0</pre>
|
||||||
<h4>ted_init</h4><p></p>
|
|
||||||
<h4>ted_init_syntax_file</h4><p></p>
|
<h4><a name="fun_but_redo">ted_but_redo</a></h4>
|
||||||
<h4>ted_is_select</h4><p></p>
|
<p>Повторяет отмененные действия по редактированию текста.</p>
|
||||||
<h4>ted_key</h4><p></p>
|
<p>Пример использования:</p>
|
||||||
<h4>ted_mouse</h4><p></p>
|
<pre>stdcall [ted_but_redo], tedit0</pre>
|
||||||
<h4>ted_open_file</h4><p></p>
|
|
||||||
<h4>ted_text_add</h4><p></p>
|
<h4><a name="fun_but_reverse">ted_but_reverse</a></h4>
|
||||||
<h4>ted_text_colored</h4><p></p>
|
<p>Меняет порядок следования символов в выделенном тексте.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_reverse], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_but_save_file">ted_but_save_file</a></h4>
|
||||||
|
<p>Функция для сохранения файла. Принимает 3 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) структура для работы 70-й функции (до вызова функции заполнения не требует),</p>
|
||||||
|
<p>3) строка с путем и именем файла.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text]</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_but_select_word">ted_but_select_word</a></h4>
|
||||||
|
<p>Функция для выделения ключевого слова под курсором. Если ключевые слова не используются, тогда будет выделен весь текст.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_select_word], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_but_sumb_lover">ted_but_sumb_lover</a></h4>
|
||||||
|
<p>Переводит выделенные символы к нижнему регистру.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_sumb_lover], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_but_sumb_upper">ted_but_sumb_upper</a></h4>
|
||||||
|
<p>Переводит выделенные символы к верхнему регистру.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_sumb_upper], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_but_undo">ted_but_undo</a></h4>
|
||||||
|
<p>Отменяет действия по редактированию текста. Действия функции <b>ted_but_reverse</b> не отменяются.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_but_undo], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_can_save">ted_can_save</a></h4>
|
||||||
|
<p>Функция которая проверяет были ли не сохраненные изменения в тексте. Результат возвращается в регистр <b>al</b>, если изменения были то возвращает 1 иначе 0.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>push eax
|
||||||
|
stdcall [ted_can_save], tedit0
|
||||||
|
cmp al,1
|
||||||
|
.........
|
||||||
|
pop eax</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_clear">ted_clear</a></h4>
|
||||||
|
<p>Очистка текста в окне редактора. Принимает 2 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) параметр определяет будет ли очистка памяти полной.</p>
|
||||||
|
<p>Если 2-й параметр равен 1, то очистка будет полной, при 0 нет. Пользователю нужно вызывать функцию с параметром 1, параметр 0 для внутреннего использования.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_clear], tedit0,1</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_delete">ted_delete</a></h4>
|
||||||
|
<p>Деструктор элемента, освобождает память занятую элементом.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_delete], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_draw">ted_draw</a></h4>
|
||||||
|
<p>Перерисовка всего окна редактора, включая дочерние скроллинги.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_draw], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_init">ted_init</a></h4>
|
||||||
|
<p>Конструктор элемента, выделяет память необходимую для работы текстового редактора.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_init], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_init_scroll_bars">ted_init_scroll_bars</a></h4>
|
||||||
|
<p>Устанавливает цвет скроллингов и настраивает их размеры в зависимости от размеров окна. Можно вызывать эту функцию при изменении размеров окна в пользовательской программе. Принимает 2 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) опции, если 1 то изменять цвета скроллингов если 2 то изменять размер, можно давать комбинацию опций с помощью или.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_init_scroll_bars], tedit0,2</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_init_syntax_file">ted_init_syntax_file</a></h4>
|
||||||
|
<p>Функция для загрузки цветов интерфейса и ключевых слов из файла синтаксиса. Принимает 3 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) структура для работы 70-й функции (до вызова функции заполнения не требует),</p>
|
||||||
|
<p>3) строка с путем и именем файла синтаксиса.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_is_select">ted_is_select</a></h4>
|
||||||
|
<p>Определяет есть в окне редактора выделенный текст. Если есть в регистр <b>al</b> записывается 1 иначе 0. Функция необходима для создания панелей инстрементов, в которых в зависимости от выделения будут доступны или заблокированы определенные кнопки (действия). Например кнопку для копирования в буфер можно заблокировать если нет выбранного текста.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>push eax edi
|
||||||
|
mov edi,tedit0
|
||||||
|
call [ted_is_select]
|
||||||
|
cmp al,0
|
||||||
|
.........
|
||||||
|
pop edi eax</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_key">ted_key</a></h4>
|
||||||
|
<p>Функция вызываемая для реакции на клавиатуру. В регистре <b>eax</b> должен быть код нажатой клавиши. Принимает 3 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) таблица для конвертации scan кодов в ascii,</p>
|
||||||
|
<p>3) управляющие символы.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>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</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_mouse">ted_mouse</a></h4>
|
||||||
|
<p>Функция на перемещение или нажатие мыши.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_mouse], tedit0</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_open_file">ted_open_file</a></h4>
|
||||||
|
<p>Функция для открытия файла. Принимает 3 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) структура для работы 70-й функции (до вызова функции заполнения не требует),</p>
|
||||||
|
<p>3) строка с путем и именем файла.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]</pre>
|
||||||
|
|
||||||
|
<h4><a name="fun_text_add">ted_text_add</a></h4>
|
||||||
|
<p>Функция для добавления текста. Принимает 4 параметра:</p>
|
||||||
|
<p>1) структура tedit,</p>
|
||||||
|
<p>2) указатель на буфер с текстом,</p>
|
||||||
|
<p>3) длина текста,</p>
|
||||||
|
<p>4) опции вставки.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor
|
||||||
|
stdcall [ted_text_add], tedit0,ted_buffer,30,ebx</pre>
|
||||||
|
<p><b>ted_opt_ed_change_time</b> - фиксировать изменения документа, что-бы их можно было отменить. Например если нужно сделать несколько изменений текста, которые будут отменяться за один раз, то 1-е изменение идет с этой константой а остальные нет.</p>
|
||||||
|
<p><b>ted_opt_ed_move_cursor</b> - константа которая определяет сдвиг курсора после добавления текста.</p>
|
||||||
|
|
||||||
|
<h4><a name="fun_text_colored">ted_text_colored</a></h4>
|
||||||
|
<p>Функция для разметки текста цветом. Обычно вызывается внутри самой библиотеки, при изменениях текста. В некоторых случаях может понадобиться вызвать принудительно из внешней программы.</p>
|
||||||
|
<p>Пример использования:</p>
|
||||||
|
<pre>push edi
|
||||||
|
mov edi,tedit0
|
||||||
|
call [ted_text_colored]
|
||||||
|
pop edi</pre>
|
||||||
|
|
||||||
<p>Внутренние функции:</p>
|
<p>Внутренние функции:</p>
|
||||||
<p><b>ted_get_text_perv_pos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
<p><b>ted_get_text_perv_pos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
||||||
@ -106,8 +281,7 @@ ends</pre>
|
|||||||
<p><b>ted_go_to_pos</b> - переставляет курсор в указанную позицию, если указанная позиция
|
<p><b>ted_go_to_pos</b> - переставляет курсор в указанную позицию, если указанная позиция
|
||||||
находится вне экрана, то также переставляются скролинги (ecx->коорд. x, знак; edx->коорд. y, строка)</p>
|
находится вне экрана, то также переставляются скролинги (ecx->коорд. x, знак; edx->коорд. y, строка)</p>
|
||||||
|
|
||||||
|
<h1><a name="syn_file">Формат файла подсветки *.syn</a></h1>
|
||||||
<h1>Ôîðìàò ôàéëà ïîäñâåòêè *.syn</h1>
|
|
||||||
<table>
|
<table>
|
||||||
<tr><th>Элемент</th><th>Размер (байт)</th></tr>
|
<tr><th>Элемент</th><th>Размер (байт)</th></tr>
|
||||||
<tr><td>Количество цветов текста</td>
|
<tr><td>Количество цветов текста</td>
|
||||||
@ -132,7 +306,7 @@ ends</pre>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 29.04.10.</p>
|
<p>Документация обновлялась последний раз 03.05.10.</p>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,6 +1,6 @@
|
|||||||
; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj
|
; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj
|
||||||
; í«¥¬¥â TextEditor ¤«ï Kolibri OS
|
; í«¥¬¥â TextEditor ¤«ï Kolibri OS
|
||||||
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 29.04.2010 IgorA
|
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 03.05.2010 IgorA
|
||||||
; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï
|
; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
@ -54,6 +54,8 @@ struct symbol
|
|||||||
ends
|
ends
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ted_symbol_tab db 26
|
||||||
|
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
|
|
||||||
txtFindCapt db '<27>®¨áª',0
|
txtFindCapt db '<27>®¨áª',0
|
||||||
@ -80,7 +82,7 @@ end if
|
|||||||
|
|
||||||
;------
|
;------
|
||||||
align 4
|
align 4
|
||||||
EvChar db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0
|
EvChar db 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
@ -168,10 +170,75 @@ proc ted_init, edit:dword
|
|||||||
add eax,1024
|
add eax,1024
|
||||||
mov ted_syntax_file,eax
|
mov ted_syntax_file,eax
|
||||||
|
|
||||||
|
stdcall ted_init_scroll_bars,edi,3
|
||||||
pop edi ecx eax
|
pop edi ecx eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
MIN_W_SCRL_ARE equ 3 ;¬¨¨¬ «ì ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï ¢¥àâ. áªà®««¨£
|
||||||
|
MIN_H_SCRL_ARE equ 3 ;¬¨¨¬ «ì ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï £®à¨§. áªà®««¨£
|
||||||
|
;input:
|
||||||
|
; opt = 1 - ¬¥ïâì 梥â áªà®««¨£®¢, 2 - ¬¥ïâì ¢¥è¨¥ à §¬¥àë
|
||||||
|
align 4
|
||||||
|
proc ted_init_scroll_bars, edit:dword, opt:dword
|
||||||
|
pushad
|
||||||
|
mov esi,ted_scr_w
|
||||||
|
mov ebx,ted_scr_h
|
||||||
|
bt dword[opt],0
|
||||||
|
jae @f
|
||||||
|
mov ecx,ted_color_wnd_work
|
||||||
|
mov dword[esi+sb_offs_bckg_col],ecx
|
||||||
|
mov dword[ebx+sb_offs_bckg_col],ecx
|
||||||
|
mov ecx,ted_color_wnd_capt
|
||||||
|
mov dword[esi+sb_offs_frnt_col],ecx
|
||||||
|
mov dword[ebx+sb_offs_frnt_col],ecx
|
||||||
|
mov ecx,ted_color_wnd_bord
|
||||||
|
mov dword[esi+sb_offs_line_col],ecx
|
||||||
|
mov dword[ebx+sb_offs_line_col],ecx
|
||||||
|
@@:
|
||||||
|
bt dword[opt],1
|
||||||
|
jae .no_size
|
||||||
|
mov edx,ted_wnd_l
|
||||||
|
add edx,ted_rec_l
|
||||||
|
mov word[ebx+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠£®à¨§. áªà®««¨£
|
||||||
|
mov eax,ted_wnd_h ;calculate lines in page
|
||||||
|
mov edx,ted_wnd_t
|
||||||
|
add edx,eax
|
||||||
|
mov word[ebx+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥à娩 ®âáâ㯠£®à¨§. áªà®««¨£
|
||||||
|
sub eax,ted_rec_t
|
||||||
|
xor edx,edx
|
||||||
|
mov ecx,ted_rec_h
|
||||||
|
div ecx
|
||||||
|
cmp eax,MIN_W_SCRL_ARE
|
||||||
|
jg @f
|
||||||
|
mov eax,MIN_W_SCRL_ARE
|
||||||
|
@@:
|
||||||
|
mov dword[esi+sb_offs_cur_area],eax
|
||||||
|
|
||||||
|
mov eax,ted_wnd_w ;calculate cols in page
|
||||||
|
mov edx,ted_wnd_l ;«¥¢ë© ®âáâ㯠®ª
|
||||||
|
add edx,eax ;¤®¡ ¢«ï¥¬ è¨à¨ã ®ª
|
||||||
|
mov word[esi+sb_offs_start_x],dx ;¢ëáâ ¢«ï¥¬ «¥¢ë© ®âáâ㯠¢¥àâ. áªà®««¨£
|
||||||
|
mov edx,ted_wnd_t
|
||||||
|
mov word[esi+sb_offs_start_y],dx ;¢ëáâ ¢«ï¥¬ ¢¥à娩 ®âáâ㯠¢¥àâ. áªà®««¨£
|
||||||
|
mov edx,ted_wnd_h
|
||||||
|
mov word[esi+sb_offs_size_y],dx ;¢ëáâ ¢«ï¥¬ ¢ëá®âã ¢¥àâ. áªà®««¨£
|
||||||
|
sub eax,ted_rec_l
|
||||||
|
mov word[ebx+sb_offs_size_x],ax ;¢ëáâ ¢«ï¥¬ è¨à¨ã £®à¨§. áªà®««¨£
|
||||||
|
xor edx,edx
|
||||||
|
mov ecx,ted_rec_w
|
||||||
|
div ecx
|
||||||
|
cmp eax,MIN_H_SCRL_ARE
|
||||||
|
jg @f
|
||||||
|
mov eax,MIN_H_SCRL_ARE
|
||||||
|
@@:
|
||||||
|
dec eax
|
||||||
|
mov dword[ebx+sb_offs_cur_area],eax ;ãáâ ¢«¨¢ ¥¬ ç¨á«® ᨬ¢®«®¢, ª®â®àë¥ ¢« §ïâ ¢ íªà ¤«ï £®à¨§. áªà®««¨£
|
||||||
|
.no_size:
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
proc ted_delete, edit:dword
|
proc ted_delete, edit:dword
|
||||||
push ecx edi
|
push ecx edi
|
||||||
@ -193,6 +260,9 @@ align 4
|
|||||||
proc ted_key, edit:dword, table:dword, control:dword
|
proc ted_key, edit:dword, table:dword, control:dword
|
||||||
pushad
|
pushad
|
||||||
mov edi,dword[edit]
|
mov edi,dword[edit]
|
||||||
|
mov esi,ted_el_focus
|
||||||
|
cmp dword[esi],edi
|
||||||
|
jne .end_key_fun ;í«¥¬¥â ¥ ¢ 䮪ãᥠ¢ë室¨¬ ¨§ äãªæ¨¨
|
||||||
mov esi,dword[control]
|
mov esi,dword[control]
|
||||||
|
|
||||||
cmp ah,KEY_F1 ;[F1]
|
cmp ah,KEY_F1 ;[F1]
|
||||||
@ -214,6 +284,12 @@ proc ted_key, edit:dword, table:dword, control:dword
|
|||||||
je @f
|
je @f
|
||||||
call ted_fun_on_key_ctrl_o
|
call ted_fun_on_key_ctrl_o
|
||||||
@@:
|
@@:
|
||||||
|
cmp ah,31 ;Ctrl+S
|
||||||
|
jne @f
|
||||||
|
cmp ted_fun_on_key_ctrl_s,0
|
||||||
|
je @f
|
||||||
|
call ted_fun_on_key_ctrl_s
|
||||||
|
@@:
|
||||||
cmp ah,33 ;Ctrl+F
|
cmp ah,33 ;Ctrl+F
|
||||||
jne @f
|
jne @f
|
||||||
cmp ted_panel_id,TED_PANEL_FIND
|
cmp ted_panel_id,TED_PANEL_FIND
|
||||||
@ -607,11 +683,11 @@ proc ted_clear, edit:dword, cl_al_mem:dword
|
|||||||
|
|
||||||
mov ecx,ted_scr_w
|
mov ecx,ted_scr_w
|
||||||
mov dword[ecx+sb_offs_position],0
|
mov dword[ecx+sb_offs_position],0
|
||||||
mov dword[ecx+sb_offs_max_area],100
|
mov dword[ecx+sb_offs_max_area],100 ;ç¨á«® áâப ¢¨¤¨¬ëå ¢ ®¢®¬ ¤®ªã¬¥â¥
|
||||||
mov dword[ecx+sb_offs_redraw],1
|
mov dword[ecx+sb_offs_redraw],1
|
||||||
mov ecx,ted_scr_h
|
mov ecx,ted_scr_h
|
||||||
mov dword[ecx+sb_offs_position],0
|
mov dword[ecx+sb_offs_position],0
|
||||||
mov dword[ecx+sb_offs_max_area],100
|
mov dword[ecx+sb_offs_max_area],100 ;ç¨á«® ᨬ¢®«®¢ ¢¨¤¨¬ëå ¢ ®¢®¬ ¤®ªã¬¥â¥
|
||||||
|
|
||||||
mov ted_sel_x0,0
|
mov ted_sel_x0,0
|
||||||
mov ted_sel_y0,0
|
mov ted_sel_y0,0
|
||||||
@ -724,6 +800,7 @@ proc ted_init_syntax_file, edit:dword, file:dword, f_name:dword
|
|||||||
add ecx,ted_key_words_data
|
add ecx,ted_key_words_data
|
||||||
mov ted_help_text_f1,ecx
|
mov ted_help_text_f1,ecx
|
||||||
|
|
||||||
|
stdcall ted_init_scroll_bars,edi,1 ;¬¥ï¥¬ 梥â áªà®««¨£®¢
|
||||||
.no_colors:
|
.no_colors:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
@ -2806,12 +2883,17 @@ ted_get_symb_color:
|
|||||||
align 4
|
align 4
|
||||||
ted_convert_invis_symb:
|
ted_convert_invis_symb:
|
||||||
cmp ted_mode_invis,1
|
cmp ted_mode_invis,1
|
||||||
|
jne .end_f
|
||||||
|
cmp byte[edx],9
|
||||||
jne @f
|
jne @f
|
||||||
|
lea edx,[ted_symbol_tab]
|
||||||
|
@@:
|
||||||
cmp byte[edx],13
|
cmp byte[edx],13
|
||||||
jne @f
|
jne @f
|
||||||
mov edx,edi
|
mov edx,edi
|
||||||
add edx,ted_offs_symbol_new_line
|
add edx,ted_offs_symbol_new_line
|
||||||
@@:
|
@@:
|
||||||
|
.end_f:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
@ -3086,7 +3168,8 @@ pop edi
|
|||||||
je @f
|
je @f
|
||||||
mov ecx,ted_tim_undo
|
mov ecx,ted_tim_undo
|
||||||
add edx,0x500000
|
add edx,0x500000
|
||||||
int 0x40
|
mov edi,ted_color_wnd_work ;¯®à⨬ ॣ¨áâà edi, ® ¢ ª®æ¥ äãªæ¨¨ í⮠㦥 ¥ ¢ ¦®
|
||||||
|
int 0x40 ;¢ë¢®¤ ç¨á« ®â¬¥¥ëå ¤¥©á⢨©
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
popad
|
popad
|
||||||
@ -3101,9 +3184,12 @@ proc ted_draw_buffer
|
|||||||
mov eax,ted_buffer
|
mov eax,ted_buffer
|
||||||
cmp byte[eax],0 ;ᬮâਬ 1-© ᨬ¢®« ¨§ ¡ãä¥à
|
cmp byte[eax],0 ;ᬮâਬ 1-© ᨬ¢®« ¨§ ¡ãä¥à
|
||||||
je @f
|
je @f
|
||||||
mov ebx,ted_wnd_l
|
mov ebx,ted_rec_l
|
||||||
add ebx,ted_rec_l
|
|
||||||
add bx,300
|
add bx,300
|
||||||
|
cmp ebx,ted_wnd_w ;áà ¢¨¢ ¥¬ ª®®à¤¨ âã ¤«ï ¢ë¢®¤ ⥪áâ
|
||||||
|
jge @f ;¯®¤¯¨áì ¥ ¢« §¨â ¢ ®ª®
|
||||||
|
|
||||||
|
add ebx,ted_wnd_l
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
add ebx,ted_wnd_t
|
add ebx,ted_wnd_t
|
||||||
add ebx,3
|
add ebx,3
|
||||||
@ -3142,7 +3228,8 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc ted_draw_help_f1
|
proc ted_draw_help_f1
|
||||||
pushad
|
pushad
|
||||||
|
cmp ted_rec_t,13 ;¬¨¨¬ «ì ï ¢ëá®â ¤«ï à¨á®¢ ¨ï á¯à ¢ª¨
|
||||||
|
jle @f
|
||||||
mov eax,13 ;clear place before draw help
|
mov eax,13 ;clear place before draw help
|
||||||
mov ebx,ted_wnd_l
|
mov ebx,ted_wnd_l
|
||||||
add ebx,ted_rec_l
|
add ebx,ted_rec_l
|
||||||
@ -3698,7 +3785,11 @@ proc ted_mouse, edit:dword
|
|||||||
call ted_wnd_main_click
|
call ted_wnd_main_click
|
||||||
jmp .no_in_wnd
|
jmp .no_in_wnd
|
||||||
@@:
|
@@:
|
||||||
call ted_wnd_main_mouse_scroll
|
mov edx,ted_el_focus
|
||||||
|
cmp dword[edx],edi
|
||||||
|
jne @f
|
||||||
|
call ted_wnd_main_mouse_scroll ;ᬮâਬ ¯à®ªàãâªã ª®«¥á ¬ëè¨
|
||||||
|
@@:
|
||||||
cmp ted_drag_m,0
|
cmp ted_drag_m,0
|
||||||
je .no_in_wnd
|
je .no_in_wnd
|
||||||
mov ted_drag_m,0
|
mov ted_drag_m,0
|
||||||
@ -3719,6 +3810,8 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
ted_wnd_main_click:
|
ted_wnd_main_click:
|
||||||
push ebx ecx edx
|
push ebx ecx edx
|
||||||
|
mov ebx,ted_el_focus
|
||||||
|
mov dword[ebx],edi ;áâ ¢¨¬ 䮪ãá
|
||||||
|
|
||||||
push eax
|
push eax
|
||||||
shr eax,16
|
shr eax,16
|
||||||
@ -3773,7 +3866,7 @@ ted_wnd_main_click:
|
|||||||
align 4
|
align 4
|
||||||
ted_wnd_main_mouse_scroll:
|
ted_wnd_main_mouse_scroll:
|
||||||
push eax ebx ecx
|
push eax ebx ecx
|
||||||
mcall 37,7
|
mcall 37,7 ;¯à®ªàã⪠ª®«¥á ¬ëè¨
|
||||||
cmp ax,0
|
cmp ax,0
|
||||||
je .no_scroll
|
je .no_scroll
|
||||||
mov ecx,ted_scr_w
|
mov ecx,ted_scr_w
|
||||||
|
@ -26,7 +26,7 @@ struct symbol
|
|||||||
ends
|
ends
|
||||||
|
|
||||||
|
|
||||||
hed db 'TextEditor 29.04.10',0 ;¯®¤¯¨áì ®ª
|
hed db 'TextEditor 03.05.10',0 ;¯®¤¯¨áì ®ª
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
|
||||||
fn_icon db 'te_icon.bmp',0
|
fn_icon db 'te_icon.bmp',0
|
||||||
|
@ -81,6 +81,7 @@ ted_clear dd sz_ted_clear
|
|||||||
ted_delete dd sz_ted_delete
|
ted_delete dd sz_ted_delete
|
||||||
ted_draw dd sz_ted_draw
|
ted_draw dd sz_ted_draw
|
||||||
ted_init dd sz_ted_init
|
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_init_syntax_file dd sz_ted_init_syntax_file
|
||||||
ted_is_select dd sz_ted_is_select
|
ted_is_select dd sz_ted_is_select
|
||||||
ted_key dd sz_ted_key
|
ted_key dd sz_ted_key
|
||||||
@ -154,6 +155,7 @@ sz_ted_clear db 'ted_clear',0
|
|||||||
sz_ted_delete db 'ted_delete',0
|
sz_ted_delete db 'ted_delete',0
|
||||||
sz_ted_draw db 'ted_draw',0
|
sz_ted_draw db 'ted_draw',0
|
||||||
sz_ted_init db 'ted_init',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_init_syntax_file db 'ted_init_syntax_file',0
|
||||||
sz_ted_is_select db 'ted_is_select',0
|
sz_ted_is_select db 'ted_is_select',0
|
||||||
sz_ted_key db 'ted_key',0
|
sz_ted_key db 'ted_key',0
|
||||||
|
@ -261,8 +261,6 @@ proc draw_panel_syntax
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
MIN_M_WND_H equ 100
|
MIN_M_WND_H equ 100
|
||||||
MIN_W_SCRL_ARE equ 3
|
|
||||||
MIN_H_SCRL_ARE equ 3
|
|
||||||
align 4
|
align 4
|
||||||
proc EvSize, edit:dword
|
proc EvSize, edit:dword
|
||||||
pushad
|
pushad
|
||||||
@ -286,46 +284,10 @@ proc EvSize, edit:dword
|
|||||||
mov ax,word[ebx+sb_offs_size_y]
|
mov ax,word[ebx+sb_offs_size_y]
|
||||||
and eax,0xffff
|
and eax,0xffff
|
||||||
sub ted_wnd_h,eax ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
|
sub ted_wnd_h,eax ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
|
||||||
mov eax,ted_wnd_h ;eax = âûñîòà îêíà - âûñîòà ãîðèç. ñêðîëëèíãà
|
|
||||||
mov word[ebx+sb_offs_start_y],ax ;ïåðåäâèãàåì ãîðèç. ñêðîëëèíã
|
|
||||||
mov eax,ted_wnd_t
|
mov eax,ted_wnd_t
|
||||||
sub ted_wnd_h,eax ;îòíèìàåì îòñòóï ñâåðõó
|
sub ted_wnd_h,eax ;îòíèìàåì îòñòóï ñâåðõó
|
||||||
|
|
||||||
mov eax,ted_wnd_w
|
stdcall [ted_init_scroll_bars], tedit0,2
|
||||||
mov ecx,ted_wnd_l
|
|
||||||
add eax,ecx
|
|
||||||
mov word[esi+sb_offs_start_x],ax ;ïåðåäâèãàåì âåðò. ñêðîëëèíã
|
|
||||||
mov eax,ted_wnd_h
|
|
||||||
mov word[esi+sb_offs_size_y],ax ;çàäàåì âûñîòó âåðò. ñêðîëëèíãà
|
|
||||||
|
|
||||||
add ecx,ted_rec_l ;ecx=ted_wnd_l+ted_rec_l
|
|
||||||
mov word[ebx+sb_offs_start_x],cx ;ñäâèãàåì ãîðèç. ñêðîëëèíã ïî ðàçìåðó ëåâîãî îòñòóïà äëÿ öèôð
|
|
||||||
mov eax,ted_wnd_w
|
|
||||||
sub eax,ted_rec_l
|
|
||||||
mov word[ebx+sb_offs_size_x],ax ;çàäàåì øèðèíó ãîðèç. ñêðîëëèíãà
|
|
||||||
|
|
||||||
mov eax,ted_wnd_h ;calculate lines in page
|
|
||||||
sub eax,ted_rec_t
|
|
||||||
xor edx,edx
|
|
||||||
mov ecx,ted_rec_h
|
|
||||||
div ecx
|
|
||||||
cmp eax,MIN_W_SCRL_ARE
|
|
||||||
jg @f
|
|
||||||
mov eax,MIN_W_SCRL_ARE
|
|
||||||
@@:
|
|
||||||
mov dword[esi+sb_offs_cur_area],eax
|
|
||||||
|
|
||||||
mov eax,ted_wnd_w ;calculate cols in page
|
|
||||||
sub eax,ted_rec_l
|
|
||||||
xor edx,edx
|
|
||||||
mov ecx,ted_rec_w
|
|
||||||
div ecx
|
|
||||||
cmp eax,MIN_H_SCRL_ARE
|
|
||||||
jg @f
|
|
||||||
mov eax,MIN_H_SCRL_ARE
|
|
||||||
@@:
|
|
||||||
dec eax ; ???
|
|
||||||
mov dword[ebx+sb_offs_cur_area],eax
|
|
||||||
|
|
||||||
mov eax,ted_wnd_t
|
mov eax,ted_wnd_t
|
||||||
mov edi,dword tree1
|
mov edi,dword tree1
|
||||||
|
@ -36,16 +36,6 @@ align 4
|
|||||||
start:
|
start:
|
||||||
mcall 48,3,sc,sizeof.system_colors
|
mcall 48,3,sc,sizeof.system_colors
|
||||||
|
|
||||||
mov eax,[sc.work]
|
|
||||||
mov [wScr.bckg_col],eax
|
|
||||||
mov [hScr.bckg_col],eax
|
|
||||||
mov eax,[sc.work_button]
|
|
||||||
mov [wScr.frnt_col],eax
|
|
||||||
mov [hScr.frnt_col],eax
|
|
||||||
mov eax,[sc.work_button_text]
|
|
||||||
mov [wScr.line_col],eax
|
|
||||||
mov [hScr.line_col],eax
|
|
||||||
|
|
||||||
mcall 68,11
|
mcall 68,11
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jz button.exit
|
jz button.exit
|
||||||
@ -343,7 +333,7 @@ key:
|
|||||||
|
|
||||||
mcall 26,2,,conv_tabl ;26.2 ¯®«ãç¨âì à ᪫ ¤ªã ª« ¢¨ âãàë
|
mcall 26,2,,conv_tabl ;26.2 ¯®«ãç¨âì à ᪫ ¤ªã ª« ¢¨ âãàë
|
||||||
mcall 2 ;¯®«ãç ¥¬ ª®¤ ¦ ⮩ ª« ¢¨è¨
|
mcall 2 ;¯®«ãç ¥¬ ª®¤ ¦ ⮩ ª« ¢¨è¨
|
||||||
;stdcall [tl_key], tree1
|
stdcall [tl_key], tree1
|
||||||
|
|
||||||
test word [edit1.flags],10b;ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
test word [edit1.flags],10b;ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||||
je @f
|
je @f
|
||||||
|
Loading…
Reference in New Issue
Block a user