Subversion Repositories Kolibri OS

Rev

Rev 1458 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1457 IgorA 1
2
3
элемент Text Editor
4
5
6
7
 
8
9

На главную ↑

10

Оглавление

11
 
12

Введение

13

Функции

14
    15
  • ted_but_copy
  • 16
    17
     
    18

    Введение

    19

    Элемент text_editor позволяет работать с текстовыми файлами, содержит много функция для редактирования текста.

    20

    21

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

    22
     
    23

    Возможности

    24
      25
        
    • Открытие (Ctrl+O)/Сохранение файла.
    • 26
        
    • Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).
    • 27
        
    • Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).
    • 28
      29
       
      30

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

      31
        32
      • Если открыть большой файл, размер которого больше чем:
      • 33
            maxChars equ 100002 ;(...+2)
        34
          он откроется не весь, а первые maxChars-2 символов из файла
        35
          (о чем выдается сообщение).
        36
      • При сохранении программа не спрашивает о замене существ. файла.
      • 37
        38
         
        39

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

        40

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

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

        42
         
        43

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

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

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

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

        55

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

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

        57

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

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

        59

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

        60
         
        61

        Функции

        62

        Функции на экспорт:

        63
         
        64

        ted_but_copy

        65
         
        66

        Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на Ctrl+C.

        67

        Пример использования:

        68
        stdcall [ted_but_copy], tedit0
        69
         
        70

        ted_but_cut

        71

        ted_but_find_next

        72

        ted_but_paste

        73

        ted_but_redo

        74

        ted_but_reverse

        75

        ted_but_save_file

        76

        ted_but_select_word

        77

        ted_but_sumb_lover

        78

        ted_but_sumb_upper

        79

        ted_but_undo

        80

        ted_can_save

        81

        ted_clear

        82

        ted_delete

        83

        ted_draw

        84

        ted_init

        85

        ted_init_syntax_file

        86

        ted_is_select

        87

        ted_key

        88

        ted_mouse

        89

        ted_open_file

        90

        ted_text_add

        91

        ted_text_colored

        92
         
        93

        Внутренние функции:

        94

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

        95

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

        96

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

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

        98

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

        99
              работы функции ted_get_text_next_pos и ted_symbol_not_vis.

        100

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

        101
         
        102

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

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

        104

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

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

        106

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

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

        108
         
        109
         
        110

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

        111
        112
        ЭлементРазмер (байт)
        113
        Количество цветов текста
        114
          
        4
        115
        Количество подсвечиваемых слов
        116
          
        4
        117
        Цвета интерфейса
        118
          
        4*6
        119
        Цвета для текста
        120
          
        4*(кол. цв. текста)
        121
        Структуры со свойствами и описаниями слов
        122
          
        sizeof(TexColViv)*(кол. слов)
        123
        Разделительный символ, означающий начало описаний слов (всегда равен 0)
        124
          
        1 байт
        125
        Описания слов (строки текста с 0-ми в конце)
        126
          
        (длинна справочного текста + 1)
        127
        128

        Замечания.

        129
          130
        • Все слова должны быть расположены в порядке следования их ASCII кодов.
        • 131
            Возможно в будущих версиях формат файлов подсветки будет изменен.
          132
          133
           
          134

          135

          Документация обновлялась последний раз 29.04.10.

          136
           
          137
          138