1 |
package Libconf::GUI::Gtk2::SpinButton; |
package Libconf::GUI::Gtk2::SpinButton; |
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::SpinButton); |
# multiple inheritance, yaaaaaaaaaaaaaaa |
7 |
|
our @ISA = qw(Gtk2::SpinButton Libconf::GUI::Gtk2::Widget); |
8 |
|
|
9 |
|
#constructor |
10 |
|
#@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 $adj = create_adjustment(0, 0, 65535); |
my $adj = create_adjustment(0, 0, 65535); |
14 |
my $self = Gtk2::SpinButton->new($adj, 1, 0, @widget_options); #UGLY! better is $class->SUPER::new($adj, 1, 0, @widget_options); |
my $self = $class->SUPER::new($adj, 1, 0, @widget_options); |
15 |
$self->{default_value} = $default; |
$self->{default_value} = $default; |
16 |
$self->{data_mapping} = $data_mapping; |
$self->{data_mapping} = $data_mapping; |
17 |
$self->{ref_value} = $ref_value; |
$self->{ref_value} = $ref_value; |
18 |
bless $self, $class; |
bless $self, $class; |
19 |
gtksignal_connect($self, changed => sub { |
gtksignal_connect($self, changed => sub { |
20 |
my ($widget) = @_; |
my $widget = shift; |
21 |
my $value = $widget->get_value(); |
my $value = Gtk2::SpinButton::get_value($widget); |
22 |
|
$value == Libconf::GUI::Gtk2::Widget::get_value($self) and return; |
23 |
print " setting : -- [" . $value . "]\n"; |
print " setting : -- [" . $value . "]\n"; |
24 |
$self->{value} = $value; |
defined $data_mapping and $value = $data_mapping->($value); |
25 |
${$self->{ref_value}} = $value; |
Libconf::GUI::Gtk2::Widget::set_value($self, $value); |
26 |
print " getvalue : -- " . $self->get_value() . "\n"; |
print " getvalue : -- " . Libconf::GUI::Gtk2::Widget::get_value($self) . "\n"; |
27 |
}); |
}); |
28 |
return $self; |
return $self; |
29 |
} |
} |
30 |
|
|
|
sub set_default { |
|
|
my ($self) = @_; |
|
|
my $default_value = $self->{'default_value'}; |
|
|
$self->set_value($default_value); |
|
|
$self->{value} = $default_value; |
|
|
} |
|
|
|
|
31 |
sub set_value { |
sub set_value { |
32 |
my ($self, $value) = @_; |
my $self = shift; |
33 |
# $self->{value} = $value; |
Gtk2::SpinButton::set_value($self, Libconf::GUI::Gtk2::Widget::set_value($self, @_)); |
|
# ${$self->{ref_value}} = $value; |
|
|
Gtk2::SpinButton::set_value($self, $value); |
|
|
} |
|
|
|
|
|
sub get_value { |
|
|
my ($self) = @_; |
|
|
my $value = $self->{value}; |
|
|
$value; |
|
34 |
} |
} |
35 |
|
|
36 |
1; |
1; |
|
|
|