ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.430 by root, Tue Aug 21 02:39:17 2007 UTC vs.
Revision 1.434 by root, Wed Aug 22 21:32:09 2007 UTC

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 text => "-",
2807 value => -1,
2808 ); 2807 );
2809 2808
2810 $self->set_value ($arg{value}) if exists $arg{value}; 2809 $self->set_value ($arg{value} || -1);
2811 2810
2812 $self 2811 $self
2812}
2813
2814sub 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});
2813} 2821}
2814 2822
2815sub set_value { 2823sub set_value {
2816 my ($self, $value) = @_; 2824 my ($self, $value) = @_;
2817 2825
2818 if ($self->{value} != $value) { 2826 if ($self->{value} ne $value) {
2819 $self->{value} = $value; 2827 $self->{value} = $value;
2828
2829 if ($value < 0) {
2830 $self->set_text ("-");
2831 } else {
2820 $self->set_text (sprintf "%d%%", $value * 100); 2832 $self->set_text (sprintf $self->{label}, $value * 100);
2833 }
2834
2821 $self->update; 2835 $self->update;
2822 } 2836 }
2823} 2837}
2824 2838
2825sub _draw { 2839sub _draw {
2856 2870
2857sub new { 2871sub new {
2858 my ($class, %arg) = @_; 2872 my ($class, %arg) = @_;
2859 2873
2860 my $self = $class->SUPER::new ( 2874 my $self = $class->SUPER::new (
2875 tooltip => sub {
2876 my ($self) = @_;
2877
2878 sprintf "%s points experience (level %d).\n%s points to next level %s.",
2879 ::formsep $self->{exp},
2880 $self->{lvl},
2881 ::formsep $self->{nxt}
2882 },
2861 %arg 2883 %arg
2862 ); 2884 );
2863 2885
2864 $::CONN->{on_exp_update}{$self+0} = sub { $self->set_value ($self->{value}) } 2886 $::CONN->{on_exp_update}{$self+0} = sub { $self->set_value ($self->{value}) }
2865 if $::CONN; 2887 if $::CONN;
2877} 2899}
2878 2900
2879sub set_value { 2901sub set_value {
2880 my ($self, $lvl, $exp) = @_; 2902 my ($self, $lvl, $exp) = @_;
2881 2903
2904 $self->{lvl} = $exp;
2905 $self->{exp} = $exp;
2906
2882 my $v = 0; 2907 my $v = -1;
2883 2908
2884 if ($::CONN && (my $table = $::CONN->{exp_table})) { 2909 if ($::CONN && (my $table = $::CONN->{exp_table})) {
2885 my $l0 = $table->[$lvl - 1]; 2910 my $l0 = $table->[$lvl - 1];
2886 my $l1 = $table->[$lvl]; 2911 my $l1 = $table->[$lvl];
2912
2913 $self->{nxt} = $l1;
2887 2914
2888 $v = ($exp - $l0) / ($l1 - $l0); 2915 $v = ($exp - $l0) / ($l1 - $l0);
2889 } 2916 }
2890 2917
2891 $self->SUPER::set_value ($v); 2918 $self->SUPER::set_value ($v);
3930 3957
3931############################################################################# 3958#############################################################################
3932 3959
3933package CFPlus::UI::Notebook; 3960package CFPlus::UI::Notebook;
3934 3961
3962use CFPlus::OpenGL;
3963
3935our @ISA = CFPlus::UI::VBox::; 3964our @ISA = CFPlus::UI::VBox::;
3936 3965
3937sub new { 3966sub new {
3938 my $class = shift; 3967 my $class = shift;
3939 3968
3940 my $self = $class->SUPER::new ( 3969 my $self = $class->SUPER::new (
3941 buttonbar => (new CFPlus::UI::Buttonbar), 3970 buttonbar => (new CFPlus::UI::Buttonbar),
3942 multiplexer => (new CFPlus::UI::Multiplexer expand => 1), 3971 multiplexer => (new CFPlus::UI::Multiplexer expand => 1),
3972 active_outline => [1, 1, 0],
3943 # filter => # will be put between multiplexer and $self 3973 # filter => # will be put between multiplexer and $self
3944 @_, 3974 @_,
3945 ); 3975 );
3946 3976
3947 $self->{filter}->add ($self->{multiplexer}) if $self->{filter}; 3977 $self->{filter}->add ($self->{multiplexer}) if $self->{filter};
4019sub set_current_page { 4049sub set_current_page {
4020 my ($self, $page) = @_; 4050 my ($self, $page) = @_;
4021 4051
4022 $self->{multiplexer}->set_current_page ($page); 4052 $self->{multiplexer}->set_current_page ($page);
4023 $self->emit (page_changed => $self->{multiplexer}{current}); 4053 $self->emit (page_changed => $self->{multiplexer}{current});
4054}
4055
4056sub _draw {
4057 my ($self) = @_;
4058
4059 $self->SUPER::_draw ();
4060
4061 if (my $cur = $self->{multiplexer}{current}) {
4062 if ($cur = $cur->{c_tab_}) {
4063 glTranslate $cur->{x}, $cur->{y};
4064 glLineWidth 3;
4065 glColor @{$self->{active_outline}};
4066 glRect_lineloop 1, 1, $cur->{w} - 2, $cur->{h} - 2;
4067 glLineWidth 1;
4068 }
4069 }
4024} 4070}
4025 4071
4026############################################################################# 4072#############################################################################
4027 4073
4028package CFPlus::UI::Selector; 4074package CFPlus::UI::Selector;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines