### Описание класса TEXTEDIT

#### Атрибуты/свойства

Название атрибута | Значение атрибута
--- | ---
className | "TEXTEDIT"
line | позиция в тексте: строка
pos | позиция в тексте: колонка
nTop | координата окна: левый верхний угол - строка
nLeft | координата окна: левый верхний угол - колонка
nBottom | координата окна: правый нижний угол - строка
nRight | координата окна: правый нижний угол - колонка
tabSize | шаг табуляции
marginRight | правая граница
marginLeft | левая граница
lenundo | размер буфера отката

### Методы/функции

Функция textEditNew(Lrow, Lcol, Rrow, Rcol, color) - создает новый объект класса TEXTEDIT
Lrow - граница окна редактирования: левый верхний угол - строка
Lcol - граница окна редактирования: левый верхний угол - колонка
Rrow - граница окна редактирования: правый нижний угол - строка
Rcol - граница окна редактирования: правый нижний угол - колонка
color - string, цвет редактирования "color1, color2, color3, color4"
color1 - основной цвет
color2 - цвет линии конца файла (<EOF>)
color3 - цвет выделенной области (блоки - строчные/прямоугольные)
color4 - цвет выделенной области (поиск)

Все методы класса имеют последний параметр - undo(default .t./.f.)- сохранять информацию для операции "откат". Метод writeundo - записать информацию для отката - вызывается автоматически из всех остальных методов, если undo=.t.

#### Управление курсором

down() | на строку вниз
up() | на строку вверх
left() | на строку влево
right() | на строку вправо
pageUp() | на страницу вверх
pageDown() | на страницу вниз
top() | в начало текста
bottom() | в конец текста
wordLeft() | на слово влево
wordRight() | на слово вправо
gotoLine(line) | на заданную строку line - номер строки
gotoPos(pos) | на заданную колонку pos - номер колонки
home() | в начало строки
end() | в конец строки

#### Редактирование

insert(str) | вставить символ/строку символов str - вставляемый символ/строка
overStrike(str) | заменить символ/строку str - новый символ/строка
insertLine() | вставить новую строку
newLine() | перейти на следующую строку
backSpace() | удаление символа слева от курсора
delLeft() | удаление символа слева от курсора == backSpace()
delHome() | удаление от курсора до начала строки
delete() | удаление символа
delRigth() | удаление символа справа от курсора
delEnd() | удаление от курсора до конца строки
deleteLine() | удаление строки
delWordRight() | удаление слова справа
insTempl(targ) | замена подстроки по шаблону targ - string, шаблон для замены Шаблоны и строки замены берутся из файла $HOME/.clip/.templ
insMacro(targ) | макроподстановка targ - string, шаблон для замены Шаблоны и строки замены берутся из файла $HOME/.clip/.macro
draw(Draw_mode, nkey) | рисование линий, таблиц Draw_mode - logical, .t. - одиночные линии, .f. - двойные nkey - numeric, код клавиши (K_UP, K_DOWN, K_LEFT, K_RIGHT) - направление рисования

#### Работа с блоками

loadBlock(filename) | загрузка блока с диска filename - string, имя файла Возвращает .t. или .f.
saveBlock(filename, createbak) | записать блок на диск filename - string, имя файла createbak - logical, .t./.f. создавать .bak файл Возвращает .t. или .f.
beginBlock(vid) | начать отметку блока vid - logical, .t./.f. строчный/прямоугольный блок(default .t.)
endBlock() | закончить отметку блока
cancelBlock() | снять отметку блока
copyBlock() | копировать блок
moveBlock() | переместить блок
deleteBlock() | удалить блок
newClipBoard(Clipboard) | записать блок в буфер с удалением содержимого буфера Clipboard - array, буфер
addClipBoard(Clipboard) | добавить блок в буфер Clipboard - array, буфер
moveClipBoard(Clipboard) | переместить блок в буфер Clipboard - array, буфер
pasteClipBoard(Clipboard, it) | вставить блок из буфера Clipboard - array, буфер it - numeric, индекс в массиве Clipboard (default 1)

#### Форматирование

formatLine(Opt)

форматирование строки
Opt - map, должен содержать елементы:

- Opt:OAUTOMARGIN - logical, автоматическая установка левой границы
- Opt:OTABSIZE - numeric, шаг табуляции
- Opt:OMARGINRIGHT - numeric, правая граница
- Opt:OMARGINLEFT - numeric, левая граница
- Opt:OHYPHEN - logical, перенос в словах

formatPart(Opt)

форматирование абзаца
Opt - map, должен содержать елементы:

- Opt:OAUTOMARGIN - logical, автоматическая установка левой границы
- Opt:OTABSIZE - numeric, шаг табуляции
- Opt:OMARGINRIGHT - numeric, правая граница
- Opt:OMARGINLEFT - numeric, левая граница
- Opt:OHYPHEN - logical, перенос в словах

centerLine() | центрирование строки (длина строки определяется атрибутом marginRight класса TEXTEDIT)

#### Поиск

Find(Find) | поиск подстроки Find - объект FINDOPTIONS Возвращает .t.-найдено или .f.-не найдено
findNext(Find) | найти следующее вхождение подстроки Find - объект FINDOPTIONS Возвращает .t.-найдено или .f.-не найдено
findPrev(Find) | найти предыдущее вхождение подстроки Find - объект FINDOPTIONS Возвращает .t.-найдено или .f.-не найдено
Replace(Find) | поиск с заменой подстроки Find - объект FINDOPTIONS Возвращает .t.-найдено или .f.-не найдено
identity(symb, forward) | поиск парного символа (), [], {}, <> symb - string, символ, для которого ищется пара. Если символ не скобка, то ищется идентичный символ forward - logical, направление поиска (вперед/назад) Возвращает .t.-найдено или .f.-не найдено
identity(symb, forward) | поиск парного символа (), [], {}, <> symb - string, символ, для которого ищется пара. Если символ не скобка, то ищется идентичный символ forward - logical, направление поиска (вперед/назад) Возвращает .t.-найдено или .f.-не найдено

matchStruct(curword, forward)

поиск структуры по правилам Clipper'а
curword - string, слово для поиска

определяются следующие структуры:
- DO WHILE - LOOP - EXIT - ENDDO
- DO CASE - CASE - OTHERWISE - EXIT - ENDCASE
- FOR - EXIT - LOOP - NEXT
- IF - ELSE - ELSEIF - ENDIF
- BEGIN SEQUENCE - BREAK - RECOVER - END SEQUENCE

forward - logical, направление поиска (вперед/назад)
Возвращает .t.-найдено или .f.-не найдено

#### Работа с файлами

loadFile(filename) | загрузка текста из файла filename - string, имя загружаемого файла Возвращает .t. или .f.
saveFile(filename, createbak) | записать файл на диск filename - string, ифя файла createbak - logical, создавать/не создавать .bak копию файла (default .f.) Возвращает .t. или .f.
loadString(str) | загрузка текста из строки str - string, строка для редактирования Возвращает .t. или .f.
saveString() | текст -> в строку Возвращает текст, записанный в строку

#### Прочее

refresh() | перерисовывает экран
setNewColor(newcolor) | перерисовывает экран newcolor - string, новая цветовая строка, newcolor = color1[,color2,[color3,color4]]] color1 - основной цвет color2 - цвет линии конца файла (<EOF>) color3 - цвет выделенной области (блоки - строчные/прямоугольные) color4 - цвет выделенной области (поиск)
curWord() | текущее слово в строке Возвращает строку - текущее слово
prevWord() | предыдущее слово Возвращает строку - предыдущее слово
nextWord() | следующее слово Возвращает строку - следующее слово
clear() | очистить буфер редактирования
check_line(line) | проверка существования строки line - numeric, строка для проверки. Если строка с номером line не существует, то она создается.
writeundo(cmd, val) | запись информации для отката, хранятся данные о предыдущем состоянии буфера редактирования, поиска, положение курсора и прочее cmd - numeric, команда val - numeric/string/logical/array/NIL, запоминаемое значение
undo(cmd) | восстановить предыдущее состояние буфера редактирования, поиска, положение курсора и прочее cmd - numeric, команда

Формат файла .templ

Файл .templ хранится в домашнем каталоге пользователя в директории .clip

шаблон [Space|Tab] описание[/описание]
Символ [/] служит для деления на строки
Пример:

    headf	******************************/*Function:/*Notes:/ /*** End of          **********
    headp	******************************/*File:/*Author:/*Date:/*Version:/*Notes:/ /*** End of          **********
    f	For/Next
    c	CLEAR
    *	******************************
    IF	If/EndIF
    I	If/EndIF
    IE	If/Else/EndIF
    D	DO/EndDO
    DW	DO WHILE/EndDO
    DC	DO CASE/    CASE/    OTHERWISE/EndCASE
    .............

т.е. после подстановки, например, вместо шаблона DC должно получиться что-то вроде:

    DO CASE
        CASE
        OTHERWISE
    EndCASE

а вместо шаблона headp

    ******************************
    *File:
    *Author:
    *Date:
    *Version:
    *Notes:

    *** End of          **********

Формат файла .macro

Файл .macro хранится в домашнем каталоге пользователя в директории .clip

шаблон [Space|Tab] функция
Пример:

    d	DATE()
    dd	date_rus(date())
    .............

т.е. после подстановки, например, вместо шаблона d должно получиться что-то вроде:

    11/22/2000

а вместо шаблона dd

    22  Ноября 2000 г.

© Ю.Хныкин, uri@itk.ru, 2000
© Е.Корнилова, alena@itk.ru, 2000