Иерархия наследования
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().