kolibrios-fun/programs/other/t_edit
IgorA c65339bd59 add program 'TextEditor' version 29.12.09
git-svn-id: svn://kolibrios.org@1338 a494cfbc-eb01-0410-851d-a64ba20cac60
2009-12-28 23:19:20 +00:00
..
info add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
build.bat add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
load_lib.mac add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
msgbox.obj add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
readme.htm add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
strlen.inc add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_button.inc add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_data.inc add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_draw.inc add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_edit.asm add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_edit.png add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
t_work.inc add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00
te_icon.bmp add program 'TextEditor' version 29.12.09 2009-12-28 23:19:20 +00:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>