Иерархия наследования
Object
+--- Widget
+--- Container
+--- Bin
+--- Button
+--- ToggleButton
Кнопки Toggle отличны от нормальных тем, что находятся в одном из состояний "нажато" или "не нажато".
Создание кнопок Toggle
new Gtk::ToggleButton();
new Gtk::ToggleButton( $label );
Реакция кнопки на запросы аналогична тому, что было описано выше про виджеты. Соответственно первая строчка создает просто кнопку, а вторая создает кнопку с лейблом.
Toggle сигналы.
Чтобы восстановить состояние toggle виджета, включая радиокнопки или
чекбоксы, используется приведенная ниже конструкция. Код проверяет состояние
кнопки, обращаясь к активной области виджета, содержащего toggle.
Интересующий сигнал, посылаемый кнопкой(радио или чекбоксом), зовется
'toggled'. Чтобы проверить состояние этих кнопок, необходимо выставить
обработчик сигнала чтобы поймать toggled сигнал:
sub toggle_button_callback
{
$togglebutton = $_[0];
if ( $togglebutton->active )
{
# Если тоггл нажат, то выполнится этот участок кода
}
else
{
# Если тоггл отжат, то выполнится этот участок кода
}
}
Состояние кнопки toggle
Чтобы сэмулировать нажатие тоггль-кнопки, её детей(все это относится к
чекбоксам и радиокнопкам), используется функция set_active():
$togglebutton->set_active( $state );
Когда срабатывает эта функция, то в системе проходит сигнал 'clicked' но не 'toggled'.
Чтобы узнать состояние кнопки, необходимо вызвать функцию get_active():
$togglebutton->get_active();
Строчка $togglebutton->toggled(); испускает 'toggled' сигнал;