Виджеты для редакции

Иерархия наследования

Object
   +--- Widget
         +--- Editable

Виджеты редактирования - базовый класс всех виджетов этого типа. Этот класс
не нуждается в применении функции new() и только обеспечивает обычные
функциональные возможности к тексту widgets. Все виджеты, в которых можно
редактировать текст, позволяют выделять область текста при помощи функции:
$editable->select_region( $start, $end );

где выделенный текст содержит те символы, которые отмечены с $start и до(не
включая) $end. Если $end отрицательно, то происходит обратный отсчет с конца
текста.

Текст может быть вставлен на определенную позицию при помощи функции

$editable->insert_text( $new_text, $position ); 

$new_text - текст, который вставляется, $position - позиция, начиная от
которой происходит вставление текста.

Символы могут быть удалены при помощи функции

$editable->delete_text( $start, $pos );

где $start - начальная позиция удаляемого текста и $pos - конечная позиция
удаляемого текста. Если $pos < 0, тогда отсчет удаляемых символов ведется от
конца текста.

Вытащить текст из положения "от" и "до" можно при помощи функции

$editable->get_chars( $start, $end ); 

Чтобы взять весь текст, находящийся в виджете нужно использовать
$editable->get_chars( 0, -1 );

Если текст выделен, то его можно скопировать в клипбоард при помощи функции
$editable->cut_clipboard(); 

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

Текст в клипбоарде модет быть вставлен в виджет при помощи

$editable->paste_clipboard();

текст будет вставлен в месте, где находится курсор.

Для удаления текста используется функция

$editable->delete_selection(); 

Положение курсора может быть установлено или изменено при помощи функций
$editable->get_position(); 

$editable->set_position( $position ); 

Текстовый виджет может находится в двух состояниях "для чтения" и "для
редакции", эти состояния определяются функцией
$editable-> set_editable ($is_editable);

где $is_editable принимает значения "истина" или "ложь".

Текстовые редактируемые виджеты имеют множество сигналов:
'changed'
'insert-text'
'delete-text'
'activate'
'set-editable'
'move-cursor'
'move-word'
'move-page'
'move-to-row'
'move-to-column'
'kill-char'
'kill-word'
'kill-line'
'cut-clipboard'
'copy-clipboard'
'paste-clipboard'

Как работают эти сигналы - очевидно из их названия, если у Вас возникнут
вопросы относительно их применения - читайте описание Gtk. Например чтобы
посать сигнал 'changed' необходимо вызвать функцию $editable->changed().