Subversion Repositories Kolibri OS

Rev

Rev 1338 | Rev 1457 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1338 IgorA 1
2
3
Оглавление
4
5
48
49
 
50
1456 IgorA 51

TextEditor версия от 22.04.2010

1338 IgorA 52

О программе

53

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

54
  Лицензия свободная.

55

56

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

57

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

58
 
59

Возможности

60
    61
      
  • Открытие (Ctrl+O)/Сохранение файла.
  • 62
      
  • Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).
  • 63
      
  • Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).
  • 64
    65
     
    66

    После создания программы TextEditor в Kolibri стало 2 программы для работы с текстом,

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

    69
    1456 IgorA 70
    ДействияTinyPadTextEditor
    1338 IgorA 71
    Работа с несколькими документами
    1456 IgorA 72
      
    естьнет (возможно скоро будет)
    1338 IgorA 73
    Поддержка кодировок KOI8M, OEM
    1456 IgorA 74
      
    естьнет
    1338 IgorA 75
    Подсветка синтаксиса
    76
      
    подсветка заранее зашита в программуподсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).
    77
    Многократная отмена/повтор действий
    78
      
    нетесть
    79
    Ограничения на размер файлов
    80
      
    нетесть
    81
    82
     
    83

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

    84
      85
    • Если открыть большой файл, размер которого больше чем:
    • 86
          maxChars equ 100002 ;(...+2)
      87
        он откроется не весь, а первые maxChars-2 символов из файла
      88
        (о чем выдается сообщение).
      89
    • При сохранении программа не спрашивает о замене существ. файла.
    • 90
    • Срабатывали кнопки под меню, потому я их сдвинул влево.
    • 91
      92
       
      93

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

      94

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

      95
        некоторые идеи, на которых построена данная программа.

      96
       
      97

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

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

      Каждая из таких структур сохраняет один символ в переменной 'c'. Переменные

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

      109

      'tc' - время создания символа, при отмене действия текстовый редактор "знает"

      110
        какие символы отображать, а какие нет (хотя все символы "висят" в памяти).

      111

      'td' - время удаления символа, заполняется при удалении, при отмене действия

      112
        удаления символов, текст может быть восстановлен.

      113

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

      114
       
      115

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

      116

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

      117

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

      118

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

      119
            от значений 'tc' и 'td')

      120

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

      121
            работы функции GetTexNextPos и SymbNotVis.

      122

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

      123
       
      124

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

      125
            поиска, bl->код искомого символа)

      126

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

      127
            ecx->коорд. y, строка)

      128

      GoToPos - переставляет курсор в указанную позицию, если указанная позиция

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

      130
       
      131

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

      132
      133
      ЭлементРазмер (байт)
      134
      Количество цветов текста
      135
        
      4
      136
      Количество подсвечиваемых слов
      137
        
      4
      138
      Цвета интерфейса
      139
        
      4*6
      140
      Цвета для текста
      141
        
      4*(кол. цв. текста)
      142
      Структуры со свойствами и описаниями слов
      143
        
      sizeof(TexColViv)*(кол. слов)
      144
      Разделительный символ, означающий начало описаний слов (всегда равен 0)
      145
        
      1 байт
      146
      Описания слов (строки текста с 0-ми в конце)
      147
        
      (длинна справочного текста + 1)
      148
      149

      Замечания.

      150
        151
      • Все слова должны быть расположены в порядке следования их ASCII кодов.
      • 152
          Возможно в будущих версиях формат файлов подсветки будет изменен.
        153
        154
         
        155

        156

        Автор

        157

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

        158
         
        159

        Спасибо

        160
          161
            
        • Евтихов Максим (Maxxxx32) - элемент EditBox.
        • 162
            
        • Алексей Теплов (Lrz) - элемент EditBox, макрос load_library.
        • 163
            
        • Mario79 - элемент скроллинг.
        • 164
            
        • Diamond - за программу KlbrInWin, и помощь при написании программы.
        • 165
            
        • Insolor - за тестирование программы на ошибки.
        • 166
            
        • Leency и другим, кто помогал на форуме советами.
        • 167
          168
           
          169
          170