… | |
… | |
2800 | fontsize => 0.9, |
2800 | fontsize => 0.9, |
2801 | valign => 0, |
2801 | valign => 0, |
2802 | align => 0, |
2802 | align => 0, |
2803 | can_events => 1, |
2803 | can_events => 1, |
2804 | ellipsise => 1, |
2804 | ellipsise => 1, |
|
|
2805 | label => "%d%%", |
2805 | %arg, |
2806 | %arg, |
2806 | ); |
2807 | ); |
2807 | |
2808 | |
2808 | $self->set_value ($arg{value} || -1); |
2809 | $self->set_value ($arg{value} || -1); |
2809 | |
2810 | |
2810 | $self |
2811 | $self |
2811 | } |
2812 | } |
2812 | |
2813 | |
|
|
2814 | sub set_label { |
|
|
2815 | my ($self, $label) = @_; |
|
|
2816 | |
|
|
2817 | return if $self->{label} eq $label; |
|
|
2818 | $self->{label} = $label; |
|
|
2819 | |
|
|
2820 | $self->CFPlus::UI::Progress::set_value (0 + delete $self->{value}); |
|
|
2821 | } |
|
|
2822 | |
2813 | sub set_value { |
2823 | sub set_value { |
2814 | my ($self, $value) = @_; |
2824 | my ($self, $value) = @_; |
2815 | |
2825 | |
2816 | if ($self->{value} != $value) { |
2826 | if ($self->{value} ne $value) { |
2817 | $self->{value} = $value; |
2827 | $self->{value} = $value; |
2818 | |
2828 | |
2819 | if ($value < 0) { |
2829 | if ($value < 0) { |
2820 | $self->set_text ("-"); |
2830 | $self->set_text ("-"); |
2821 | } else { |
2831 | } else { |
2822 | $self->set_text (sprintf "%d%%", $value * 100); |
2832 | $self->set_text (sprintf $self->{label}, $value * 100); |
2823 | } |
2833 | } |
|
|
2834 | |
2824 | $self->update; |
2835 | $self->update; |
2825 | } |
2836 | } |
2826 | } |
2837 | } |
2827 | |
2838 | |
2828 | sub _draw { |
2839 | sub _draw { |
… | |
… | |
3933 | |
3944 | |
3934 | ############################################################################# |
3945 | ############################################################################# |
3935 | |
3946 | |
3936 | package CFPlus::UI::Notebook; |
3947 | package CFPlus::UI::Notebook; |
3937 | |
3948 | |
|
|
3949 | use CFPlus::OpenGL; |
|
|
3950 | |
3938 | our @ISA = CFPlus::UI::VBox::; |
3951 | our @ISA = CFPlus::UI::VBox::; |
3939 | |
3952 | |
3940 | sub new { |
3953 | sub new { |
3941 | my $class = shift; |
3954 | my $class = shift; |
3942 | |
3955 | |
3943 | my $self = $class->SUPER::new ( |
3956 | my $self = $class->SUPER::new ( |
3944 | buttonbar => (new CFPlus::UI::Buttonbar), |
3957 | buttonbar => (new CFPlus::UI::Buttonbar), |
3945 | multiplexer => (new CFPlus::UI::Multiplexer expand => 1), |
3958 | multiplexer => (new CFPlus::UI::Multiplexer expand => 1), |
|
|
3959 | active_outline => [1, 1, 0], |
3946 | # filter => # will be put between multiplexer and $self |
3960 | # filter => # will be put between multiplexer and $self |
3947 | @_, |
3961 | @_, |
3948 | ); |
3962 | ); |
3949 | |
3963 | |
3950 | $self->{filter}->add ($self->{multiplexer}) if $self->{filter}; |
3964 | $self->{filter}->add ($self->{multiplexer}) if $self->{filter}; |
… | |
… | |
4022 | sub set_current_page { |
4036 | sub set_current_page { |
4023 | my ($self, $page) = @_; |
4037 | my ($self, $page) = @_; |
4024 | |
4038 | |
4025 | $self->{multiplexer}->set_current_page ($page); |
4039 | $self->{multiplexer}->set_current_page ($page); |
4026 | $self->emit (page_changed => $self->{multiplexer}{current}); |
4040 | $self->emit (page_changed => $self->{multiplexer}{current}); |
|
|
4041 | } |
|
|
4042 | |
|
|
4043 | sub _draw { |
|
|
4044 | my ($self) = @_; |
|
|
4045 | |
|
|
4046 | $self->SUPER::_draw (); |
|
|
4047 | |
|
|
4048 | if (my $cur = $self->{multiplexer}{current}) { |
|
|
4049 | if ($cur = $cur->{c_tab_}) { |
|
|
4050 | glTranslate $cur->{x}, $cur->{y}; |
|
|
4051 | glLineWidth 3; |
|
|
4052 | glColor @{$self->{active_outline}}; |
|
|
4053 | glRect_lineloop 1, 1, $cur->{w} - 2, $cur->{h} - 2; |
|
|
4054 | glLineWidth 1; |
|
|
4055 | } |
|
|
4056 | } |
4027 | } |
4057 | } |
4028 | |
4058 | |
4029 | ############################################################################# |
4059 | ############################################################################# |
4030 | |
4060 | |
4031 | package CFPlus::UI::Selector; |
4061 | package CFPlus::UI::Selector; |