1 |
package Libconf::GUI::Gtk2::CheckButton; |
package Libconf::GUI::Gtk2::CheckButton; |
2 |
|
|
3 |
use ugtk2 qw(:helpers :wrappers :create); |
use ugtk2 qw(:helpers :wrappers :create); |
4 |
|
use Libconf::GUI::Gtk2::Widget; |
5 |
|
|
6 |
our @ISA = qw(Gtk2::CheckButton); |
# multiple inheritance, yaaaaaaaaaaaaaaa |
7 |
|
our @ISA = qw(Gtk2::CheckButton Libconf::GUI::Gtk2::Widget); |
8 |
|
|
9 |
#constructor |
#constructor |
10 |
#@widget_options is optional |
#@widget_options is optional |
11 |
sub new { |
sub new { |
12 |
my ($class, $default, $ref_value, $data_mapping, @widget_options) = @_; |
my ($class, $default, $ref_value, $data_mapping, @widget_options) = @_; |
13 |
my $self = Gtk2::CheckButton->new(@widget_options); #UGLY! better is : $class->SUPER::new(@widget_options); |
my $self = $class->SUPER::new(@widget_options); |
14 |
$self->{'default_value'} = $default; |
$self->{default_value} = $default; |
15 |
$self->{'data_mapping'} = $data_mapping; |
$self->{data_mapping} = $data_mapping; |
16 |
$self->{ref_value} = $ref_value; |
$self->{ref_value} = $ref_value; |
17 |
bless $self, $class; |
bless $self, $class; |
18 |
gtksignal_connect($self, toggled => sub { |
gtksignal_connect($self, toggled => sub { |
19 |
my ($widget) = @_; |
my $widget = shift; |
20 |
my $value = $widget->get_active; |
my $value = $widget->get_active(); |
21 |
defined $data_mapping and $value = $data_mapping->($value); |
defined $data_mapping and $value = $data_mapping->($value); |
22 |
$self->set_value($value); |
$self->set_value($value); |
23 |
print " getvalue : -- " . $self->get_value() . "\n"; |
print " getvalue : -- " . $self->get_value() . "\n"; |
25 |
return $self; |
return $self; |
26 |
} |
} |
27 |
|
|
|
#### TO BE REWORKED, data mapping is bad |
|
|
sub set_default { |
|
|
my ($self) = @_; |
|
|
my $default_value = $self->{'default_value'}; |
|
|
$self->set_active($default_value); |
|
|
$self->{'value'} = $default_value; |
|
|
} |
|
|
|
|
28 |
sub set_value { |
sub set_value { |
29 |
my ($self, $value) = @_; |
my $self = shift; |
30 |
$self->{'value'} = $value; |
$self->set_active($self->SUPER::set_value(@_)); |
|
${$self->{ref_value}} = $value; |
|
|
defined $self->{'data_mapping'} and $value = $self->{'data_mapping'}->($value); |
|
|
$self->set_active($value); |
|
|
} |
|
|
|
|
|
sub get_value { |
|
|
my ($self) = @_; |
|
|
my $value = $self->{'value'}; |
|
|
$value; |
|
31 |
} |
} |
32 |
|
|
33 |
1; |
1; |