package MTools::Widget::MRadioGroup; # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU LGPL Libray General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, # or refer to http://www.gnu.org/copyleft/lgpl.html # ################################################################## use strict; use MTools; use MTools::MObjet; use vars qw / @ISA /; BEGIN { @ISA = qw /MTools::MObjet/; } sub new { my ($class, @buttons) = @_; my $self = new MTools::MObjet (); bless $self, $class; $self -> recordEvent ('BUTTON_SELECTED'); $self -> {buttons} = (); for (my $i = 0; $i < @buttons; $i ++) { $self -> addButton ($buttons [$i]); } return $self; } sub addButton { my ($self, $button) = @_; push (@{$self -> {buttons}}, $button); $button -> binding ('PRESSED', sub { my @buttons = @{$self -> {buttons}}; for (my $i = 0; $i < @buttons; $i ++) { if ($buttons [$i] != $button) { $buttons [$i] -> notify ('RELEASE'); } } $self -> notify ('BUTTON_SELECTED', $button); }); } sub getSelected { my ($self) = @_; my @buttons = @{$self -> {buttons}}; for (my $i = 0; $i < @buttons; $i ++) { if ($buttons [$i] -> mget ('selected')) { return $buttons [$i]; } } } sub setSelected { my ($self, $button) = @_; my @buttons = @{$self -> {buttons}}; for (my $i = 0; $i < @buttons; $i ++) { if ($buttons [$i] == $button) { $buttons [$i] -> notify ('PRESS'); } } } 1;