forked from KolibriOS/kolibrios
896eb433ec
git-svn-id: svn://kolibrios.org@2708 a494cfbc-eb01-0410-851d-a64ba20cac60 |
||
---|---|---|
.. | ||
info | ||
build_en.bat | ||
build_ru.bat | ||
dll.inc | ||
mem.inc | ||
msgbox.obj | ||
readme.htm | ||
strlen.inc | ||
t_button.inc | ||
t_data.inc | ||
t_draw.inc | ||
t_edit.asm | ||
t_edit.png | ||
te_icon.png | ||
tl_nod_16.png |
<html> <head> <title>Оглавление</title> <meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251"> <style> body { font-size: 15px; font-family: "Bookman Old Style"; color: black; text-align: justify; } h1 { color: green; font-size: 23px; } h2 { color: green; font-size: 21px; } h3 { color: green; font-size: 19px; } h4 { color: #803f00; font-size: 17px; } i { color: #0099cc; } b { color: #0099cc; } p { text-indent: 1em; margin-top: 3px; margin-bottom: 2px; margin-left: 0px; margin-right: 0px; } ol, ul, dl{ margin-top: 3px; margin-bottom: 2px; } pre { padding: 2px; padding-left: 20px; margin-top: 5px; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; font-family: "Courier New"; font-size: 15px; color: #004000; background-color: #ffd0ff; } table { font-size: 15px; } </style> </head> <body> <h1>TextEditor версия от 19.04.2012</h1> <h2>О программе</h2> <p>Программа для работы с текстовыми файлами. Лицензия свободная.</p> <p><img src="t_edit.png"></p> <p>Внешний вид программы, с открытым текстовым файлом.</p> <p>Обсуждение программы здесь: <a href="http://board.kolibrios.org/viewtopic.php?f=9&t=1222">http://board.kolibrios.org/viewtopic.php?f=9&t=1222</a></p> <h2>Возможности</h2> <ul> <li>Открытие (Ctrl+O)/Сохранение файла.</li> <li>Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).</li> <li>Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).</li> </ul> <p>После создания программы TextEditor в Kolibri стало 2 программы для работы с текстом, у каждой из них есть свои сильные и слабые стороны. Проведу (не полное) сравнение программ TinyPad и TextEditor:</p> <table border=1> <tr><th>Действия</th><th>TinyPad</th><th>TextEditor</th></tr> <tr><td>Работа с несколькими документами</td> <td>есть</td><td>нет (возможно скоро будет)</td></tr> <tr><td>Поддержка кодировок KOI8M, OEM</td> <td>есть</td><td>нет</td></tr> <tr><td>Подсветка синтаксиса</td> <td>подсветка заранее зашита в программу</td><td>подсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).</td></tr> <tr><td>Многократная отмена/повтор действий</td> <td>нет</td><td>есть</td></tr> <tr><td>Ограничения на размер файлов</td> <td>нет</td><td>есть при открытии файлов, при редактировании нет</td></tr> </table> <h2>Некоторые недоработки</h2> <ul> <li>Если открыть большой файл, размер которого больше чем: maxChars equ 100002 ;(...+2) он откроется не весь, а первые maxChars-2 символов из файла (о чем выдается сообщение).</li> <li>При сохранении программа не спрашивает о замене существ. файла.</li> <li>Срабатывали кнопки под меню, потому я их сдвинул влево.</li> </ul> <h2>О работе программы</h2> <p>Раздел для программистов (и интересующихся людей), в котором расказаны некоторые идеи, на которых построена данная программа.</p> <p>Для работы с текстом программа использует структуры:</p> <pre>struct symbol c db ? ; +0 символ col db ? ; +1 цвет perv dd ? ; +2 next dd ? ; +6 указатели tc dd ? ; +10 врем. создания td dd ? ; +14 врем. удаления ends</pre> <p>Каждая из таких структур сохраняет один символ в переменной 'c'. Переменные 'perv' и 'next' хранят индексы первого и следующего символов. Благодаря чему текст создается в виде цепочки символов (двунаправленный список).</p> <p><b>'tc'</b> - время создания символа, при отмене действия текстовый редактор "знает" какие символы отображать, а какие нет (хотя все символы "висят" в памяти).</p> <p><b>'td'</b> - время удаления символа, заполняется при удалении, при отмене действия удаления символов, текст может быть восстановлен.</p> <p><b>'col'</b> - используется для цветовой разметки.</p> <h3>Функции</h3> <p>Информацию по функциям смотрите в документации по элементу t_edit в библиотеке box_lib.obj.</p> <h3>Формат файла подсветки *.syn</h3> <table> <tr><th>Элемент</th><th>Размер (байт)</th></tr> <tr><td>Количество цветов текста</td> <td><pre>4</pre></td></tr> <tr><td>Количество подсвечиваемых слов</td> <td><pre>4</pre></td></tr> <tr><td>Цвета интерфейса</td> <td><pre>4*6</pre></td></tr> <tr><td>Цвета для текста</td> <td><pre>4*(кол. цв. текста)</pre></td></tr> <tr><td>Структуры со свойствами и описаниями слов</td> <td><pre>sizeof(TexColViv)*(кол. слов)</pre></td></tr> <tr><td>Разделительный символ, означающий начало описаний слов (всегда равен 0)</td> <td><pre>1 байт</pre></td></tr> <tr><td>Описания слов (строки текста с 0-ми в конце)</td> <td><pre>(длинна справочного текста + 1)</pre></td></tr> </table> <h4>Макрос для задания ключевого слова</h4> <p>Файлы синтаксиса можно компилировать через fasm.</p> <pre>macro wo txt,f1,p1,p2,p3{ @@: db txt rb @b+40-$ dd f1+0 db p1 dw p2+0 db p3 }</pre> <h4>Замечания.</h4> <ul> <li>Все слова должны быть расположены в порядке следования их ASCII кодов. Возможно в будущих версиях формат файлов подсветки будет изменен.</li> </ul> <hr> <h2>Автор</h2> <p>Игорь А. (IgorA) - разработка программы.</p> <h2>Спасибо</h2> <ul> <li>Евтихов Максим (Maxxxx32) - элемент EditBox.</li> <li>Алексей Теплов (Lrz) - элемент EditBox, макрос load_library.</li> <li>Mario79 - элементы: скроллинги, меню, OpenDial.</li> <li>Diamond - за программу KlbrInWin, и помощь при написании программы.</li> <li>Insolor - за тестирование программы на ошибки.</li> <li>Leency и другим, кто помогал на форуме советами.</li> </ul> </body> </html>