TextEditor версия от 29.12.2009

О программе

Программа для работы с текстовыми файлами. Лицензия свободная.

Внешний вид программы, с открытым текстовым файлом.

Обсуждение программы здесь: http://board.kolibrios.org/viewtopic.php?f=9&t=1222

Возможности

После создания программы TextEditor в Kolibri стало 2 программы для работы с текстом, у каждой из них есть свои сильные и слабые стороны. Проведу (не полное) сравнение программ TinyPad и TextEditor:

ДействияTinyPadTextEditorКомментарий
Работа с несколькими документами естьнетпока не планирую сделать
Поддержка кодировок KOI8M, OEM естьнетхотелось-бы сделать
Подсветка синтаксиса подсветка заранее зашита в программуподсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).
Многократная отмена/повтор действий нетесть
Ограничения на размер файлов нетесть

Некоторые недоработки

О работе программы

Раздел для программистов (и интересующихся людей), в котором расказаны некоторые идеи, на которых построена данная программа.

Для работы с текстом программа использует структуры:

struct symbol
  c db ?	;  +0 символ
  col db ?	;  +1 цвет
  perv dd ? ;  +2
  next dd ? ;  +6 указатели
  tc dd ?	; +10 врем. создания
  td dd ?	; +14 врем. удаления
ends

Каждая из таких структур сохраняет один символ в переменной 'c'. Переменные 'perv' и 'next' хранят индексы первого и следующего символов. Благодаря чему текст создается в виде цепочки символов (двунаправленный список).

'tc' - время создания символа, при отмене действия текстовый редактор "знает" какие символы отображать, а какие нет (хотя все символы "висят" в памяти).

'td' - время удаления символа, заполняется при удалении, при отмене действия удаления символов, текст может быть восстановлен.

'col' - используется для цветовой разметки.

Теперь немного о функциях:

GetTexPervPos - переход на предыдущий символ в цепи (через указатель 'perv')

GetTexNextPos - переход на следующий символ в цепи (через указатель 'next')

SymbNotVis - определяет видимый ли указанный символ на экране (в зависимости от значений 'tc' и 'td')

IteratNext - переход на следующий видимый символ в цепи. Использует для работы функции GetTexNextPos и SymbNotVis.

IteratPerv - переход на предедущий видимый символ в цепи.

ItPoNextUc - найти следующую позицию указанного символа (edx-поз. начала поиска, bl->код искомого символа)

GetPosByParam - берет позицию символа по координатам (esi->коорд. x, знак; ecx->коорд. y, строка)

GoToPos - переставляет курсор в указанную позицию, если указанная позиция находится вне экрана, то также переставляются скролинги (ecx->коорд. x, знак; edx->коорд. y, строка)

Формат файла подсветки *.syn

ЭлементРазмер (байт)
Количество цветов текста
4
Количество подсвечиваемых слов
4
Цвета интерфейса
4*6
Цвета для текста
4*(кол. цв. текста)
Структуры со свойствами и описаниями слов
sizeof(TexColViv)*(кол. слов)
Разделительный символ, означающий начало описаний слов (всегда равен 0)
1 байт
Описания слов (строки текста с 0-ми в конце)
(длинна справочного текста + 1)

Замечания.


Автор

Игорь А. (IgorA) - разработка программы.

Спасибо