forked from KolibriOS/kolibrios
c65339bd59
git-svn-id: svn://kolibrios.org@1338 a494cfbc-eb01-0410-851d-a64ba20cac60
170 lines
6.4 KiB
HTML
170 lines
6.4 KiB
HTML
<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 версия от 29.12.2009</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><th>Комментарий</th></tr>
|
||
<tr><td>Работа с несколькими документами</td>
|
||
<td>есть</td><td>нет</td><td>пока не планирую сделать</td></tr>
|
||
<tr><td>Поддержка кодировок KOI8M, OEM</td>
|
||
<td>есть</td><td>нет</td><td>хотелось-бы сделать</td></tr>
|
||
<tr><td>Подсветка синтаксиса</td>
|
||
<td>подсветка заранее зашита в программу</td><td>подсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).</td><td></td></tr>
|
||
<tr><td>Многократная отмена/повтор действий</td>
|
||
<td>нет</td><td>есть</td><td></td></tr>
|
||
<tr><td>Ограничения на размер файлов</td>
|
||
<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>
|
||
|
||
<p>Теперь немного о функциях:</p>
|
||
<p><b>GetTexPervPos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
||
<p><b>GetTexNextPos</b> - переход на следующий символ в цепи (через указатель 'next')</p>
|
||
<p><b>SymbNotVis</b> - определяет видимый ли указанный символ на экране (в зависимости
|
||
от значений 'tc' и 'td')</p>
|
||
<p><b>IteratNext</b> - переход на следующий видимый символ в цепи. Использует для
|
||
работы функции GetTexNextPos и SymbNotVis.</p>
|
||
<p><b>IteratPerv</b> - переход на предедущий видимый символ в цепи.</p>
|
||
|
||
<p><b>ItPoNextUc</b> - найти следующую позицию указанного символа (edx-поз. начала
|
||
поиска, bl->код искомого символа)</p>
|
||
<p><b>GetPosByParam</b> - берет позицию символа по координатам (esi->коорд. x, знак;
|
||
ecx->коорд. y, строка)</p>
|
||
<p><b>GoToPos</b> - переставляет курсор в указанную позицию, если указанная позиция
|
||
находится вне экрана, то также переставляются скролинги (ecx->коорд. x, знак; edx->коорд. y, строка)</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>
|
||
<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 - элемент скроллинг.</li>
|
||
<li>Diamond - за программу KlbrInWin, и помощь при написании программы.</li>
|
||
<li>Insolor - за тестирование программы на ошибки.</li>
|
||
<li>Leency и другим, кто помогал на форуме советами.</li>
|
||
</ul>
|
||
|
||
</body>
|
||
</html> |