Программа для работы с текстовыми файлами. Лицензия свободная.
Внешний вид программы, с открытым текстовым файлом.
Обсуждение программы здесь: 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' - используется для цветовой разметки.
Информацию по функциям смотрите в документации по элементу t_edit в библиотеке box_lib.obj.
Элемент | Размер (байт) |
---|---|
Количество цветов текста | 4 |
Количество подсвечиваемых слов | 4 |
Цвета интерфейса | 4*6 |
Цвета для текста | 4*(кол. цв. текста) |
Структуры со свойствами и описаниями слов | sizeof(TexColViv)*(кол. слов) |
Разделительный символ, означающий начало описаний слов (всегда равен 0) | 1 байт |
Описания слов (строки текста с 0-ми в конце) | (длинна справочного текста + 1) |
Файлы синтаксиса можно компилировать через fasm.
macro wo txt,f1,p1,p2,p3{ @@: db txt rb @b+40-$ dd f1+0 db p1 dw p2+0 db p3 }
Игорь А. (IgorA) - разработка программы.