Subversion Repositories Kolibri OS

Rev

Rev 7576 | Details | Compare with Previous | 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
  • 1458 IgorA 16
  • ted_but_cut
  • 7576 IgorA 17
  • ted_but_find
  • 1458 IgorA 18
  • ted_but_find_next
  • 19
  • ted_but_paste
  • 20
  • ted_but_redo
  • 21
  • ted_but_reverse
  • 22
  • ted_but_save_file
  • 23
  • ted_but_select_word
  • 24
  • ted_but_sumb_lover
  • 25
  • ted_but_sumb_upper
  • 26
  • ted_but_undo
  • 27
  • ted_can_save
  • 28
  • ted_clear
  • 29
  • ted_delete
  • 30
  • ted_draw
  • 31
  • ted_init
  • 32
  • ted_init_scroll_bars
  • 33
  • ted_init_syntax_file
  • 34
  • ted_is_select
  • 35
  • ted_key
  • 36
  • ted_mouse
  • 37
  • ted_open_file
  • 38
  • ted_text_add
  • 39
  • ted_text_colored
  • 7579 IgorA 40
  • ted_go_to_position
  • 1457 IgorA 41
    1458 IgorA 42

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

    1464 IgorA 43

    Структура tedit

    1457 IgorA 44
     
    45

    Введение

    1476 IgorA 46

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

    1457 IgorA 47

    48

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

    49
     
    1476 IgorA 50

    Возможности элемента

    1457 IgorA 51
      7579 IgorA 52
        
    • Открытие (Ctrl+O), Сохранение файла (Ctrl+S, Ctrl+Shift+S).
    • 53
        
    • Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать, Копировать (Ctrl+C), Вставить (Ctrl+V), Поиск (Ctrl+F, F3), Замена (Ctrl+H), Переход на строку (Ctrl+G).
    • 1457 IgorA 54
        
    • Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).
    • 55
      56
       
      1476 IgorA 57

      О работе элемента

      1457 IgorA 58

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

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

      60
       
      61

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

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

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

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

      73

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

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

      75

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

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

      1476 IgorA 77

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

      1457 IgorA 78
       
      79

      Функции

      1476 IgorA 80

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

      1457 IgorA 81
       
      82

      ted_but_copy

      1458 IgorA 83

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

      1457 IgorA 84

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

      85
      stdcall [ted_but_copy], tedit0
      86
       
      1458 IgorA 87

      ted_but_cut

      88

      Функция вырезает выделенный текст и копирует его в буфер.

      89

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

      90
      stdcall [ted_but_cut], tedit0
      1457 IgorA 91
       
      7576 IgorA 92

      ted_but_find

      93

      Функция для поиска текста. Ищет текст из буфера ted_buffer_find, при нахождении перемещает курсор к найденому тексту и выделяет его. Принимает 2 параметра:

      94

      1) структура tedit,

      95

      2) параметры поиска:

      96
        97
      • 0 - искать ниже курсора
      • 98
      • 1 - искать выше курсора
      • 99
      • 2 - искать от начала документа
      • 100
        101

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

        102
        stdcall [ted_but_find], tedit0, 2
        103
         
        1458 IgorA 104

        ted_but_find_next

        7576 IgorA 105

        Функция для поиска текста. Ищет текст из буфера ted_buffer_find, при нахождении перемещает курсор к найденому тексту и выделяет его. Поиск ведется ниже текущего положения курсора.

        1458 IgorA 106

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

        107
        stdcall [ted_but_find_next], tedit0
        108
         
        109

        ted_but_paste

        110

        Функция вставляет текст из буфера ted_buffer.

        111

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

        112
        stdcall [ted_but_paste], tedit0
        113
         
        114

        ted_but_redo

        115

        Повторяет отмененные действия по редактированию текста.

        116

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

        117
        stdcall [ted_but_redo], tedit0
        118
         
        119

        ted_but_reverse

        120

        Меняет порядок следования символов в выделенном тексте.

        121

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

        122
        stdcall [ted_but_reverse], tedit0
        123
         
        124

        ted_but_save_file

        125

        Функция для сохранения файла. Принимает 3 параметра:

        126

        1) структура tedit,

        127

        2) структура для работы 70-й функции (до вызова функции заполнения не требует),

        128

        3) строка с путем и именем файла.

        129

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

        130
        stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text]
        131
         
        132

        ted_but_select_word

        133

        Функция для выделения ключевого слова под курсором. Если ключевые слова не используются, тогда будет выделен весь текст.

        134

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

        135
        stdcall [ted_but_select_word], tedit0
        136
         
        137

        ted_but_sumb_lover

        138

        Переводит выделенные символы к нижнему регистру.

        139

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

        140
        stdcall [ted_but_sumb_lover], tedit0
        141
         
        142

        ted_but_sumb_upper

        143

        Переводит выделенные символы к верхнему регистру.

        144

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

        145
        stdcall [ted_but_sumb_upper], tedit0
        146
         
        147

        ted_but_undo

        148

        Отменяет действия по редактированию текста. Действия функции ted_but_reverse не отменяются.

        149

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

        150
        stdcall [ted_but_undo], tedit0
        151
         
        152

        ted_can_save

        153

        Функция которая проверяет были ли не сохраненные изменения в тексте. Результат возвращается в регистр al, если изменения были то возвращает 1 иначе 0.

        154

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

        155
        push eax
        156
        	stdcall [ted_can_save], tedit0
        157
        	cmp al,1
        158
        .........
        159
        pop eax
        160
         
        161

        ted_clear

        162

        Очистка текста в окне редактора. Принимает 2 параметра:

        163

        1) структура tedit,

        164

        2) параметр определяет будет ли очистка памяти полной.

        165

        Если 2-й параметр равен 1, то очистка будет полной, при 0 нет. Пользователю нужно вызывать функцию с параметром 1, параметр 0 для внутреннего использования.

        166

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

        167
        stdcall [ted_clear], tedit0,1
        168
         
        169

        ted_delete

        170

        Деструктор элемента, освобождает память занятую элементом.

        171

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

        172
        stdcall [ted_delete], tedit0
        173
         
        174

        ted_draw

        175

        Перерисовка всего окна редактора, включая дочерние скроллинги.

        176

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

        177
        stdcall [ted_draw], tedit0
        178
         
        179

        ted_init

        180

        Конструктор элемента, выделяет память необходимую для работы текстового редактора.

        181

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

        182
        stdcall [ted_init], tedit0
        183
         
        184

        ted_init_scroll_bars

        185

        Устанавливает цвет скроллингов и настраивает их размеры в зависимости от размеров окна. Можно вызывать эту функцию при изменении размеров окна в пользовательской программе. Принимает 2 параметра:

        186

        1) структура tedit,

        1459 IgorA 187

        2) опции, указывают какие нужно изменить параметры:

        188
          189
        • 1 - изменить цвета скроллингов
        • 190
        • 2 - изменился размер окна
        • 191
        • 4 - изменился размер документа
        • 192
          193

          Параметры можно комбинировать через логическое или.

          1458 IgorA 194

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

          195
          stdcall [ted_init_scroll_bars], tedit0,2
          196
           
          197

          ted_init_syntax_file

          198

          Функция для загрузки цветов интерфейса и ключевых слов из файла синтаксиса. Принимает 3 параметра:

          199

          1) структура tedit,

          200

          2) структура для работы 70-й функции (до вызова функции заполнения не требует),

          201

          3) строка с путем и именем файла синтаксиса.

          202

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

          203
          stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name
          204
           
          205

          ted_is_select

          206

          Определяет есть в окне редактора выделенный текст. Если есть в регистр al записывается 1 иначе 0. Функция необходима для создания панелей инстрементов, в которых в зависимости от выделения будут доступны или заблокированы определенные кнопки (действия). Например кнопку для копирования в буфер можно заблокировать если нет выбранного текста.

          207

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

          208
          push eax edi
          209
          	mov edi,tedit0
          210
          	call [ted_is_select]
          211
          	cmp al,0
          212
          .........
          213
          pop edi eax
          214
           
          215

          ted_key

          216

          Функция вызываемая для реакции на клавиатуру. В регистре eax должен быть код нажатой клавиши. Принимает 3 параметра:

          217

          1) структура tedit,

          218

          2) таблица для конвертации scan кодов в ascii,