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

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