Программа для работы с текстовыми файлами. Лицензия свободная.
Внешний вид программы, с открытым текстовым файлом.
Обсуждение программы здесь: http://board.kolibrios.org/viewtopic.php?f=9&t=1222
После создания программы TextEditor в Kolibri стало 2 программы для работы с текстом, у каждой из них есть свои сильные и слабые стороны. Проведу (не полное) сравнение программ TinyPad и TextEditor:
Действия | TinyPad | TextEditor | Комментарий |
---|---|---|---|
Работа с несколькими документами | есть | нет | пока не планирую сделать |
Поддержка кодировок 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, строка)
Элемент | Размер (байт) |
---|---|
Количество цветов текста | 4 |
Количество подсвечиваемых слов | 4 |
Цвета интерфейса | 4*6 |
Цвета для текста | 4*(кол. цв. текста) |
Структуры со свойствами и описаниями слов | sizeof(TexColViv)*(кол. слов) |
Разделительный символ, означающий начало описаний слов (всегда равен 0) | 1 байт |
Описания слов (строки текста с 0-ми в конце) | (длинна справочного текста + 1) |
Игорь А. (IgorA) - разработка программы.