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.290 by root, Mon Jun 5 22:30:35 2006 UTC vs.
Revision 1.291 by root, Tue Jun 6 02:55:50 2006 UTC

1691 can_hover => 1, 1691 can_hover => 1,
1692 can_focus => 1, 1692 can_focus => 1,
1693 valign => 0, 1693 valign => 0,
1694 can_events => 1, 1694 can_events => 1,
1695 #text => ... 1695 #text => ...
1696 #hidden => "*",
1696 @_ 1697 @_
1697 ) 1698 )
1698} 1699}
1699 1700
1700sub _set_text { 1701sub _set_text {
2920 ); 2921 );
2921 2922
2922 $self->add ($self->{vbox} = new CFClient::UI::VBox); 2923 $self->add ($self->{vbox} = new CFClient::UI::VBox);
2923 2924
2924 for my $item (@{ $self->{items} }) { 2925 for my $item (@{ $self->{items} }) {
2925 my ($widget, $cb) = @$item; 2926 my ($widget, $cb, $tooltip) = @$item;
2926 2927
2927 # handle various types of items, only text for now 2928 # handle various types of items, only text for now
2928 if (!ref $widget) { 2929 if (!ref $widget) {
2929 $widget = new CFClient::UI::Label 2930 $widget = new CFClient::UI::Label
2930 can_hover => 1, 2931 can_hover => 1,
2931 can_events => 1, 2932 can_events => 1,
2932 text => $widget; 2933 text => $widget,
2934 tooltip => $tooltip
2933 } 2935 }
2934 2936
2935 $self->{item}{$widget} = $item; 2937 $self->{item}{$widget} = $item;
2936 2938
2937 $self->{vbox}->add ($widget); 2939 $self->{vbox}->add ($widget);
3084sub set_current_page { 3086sub set_current_page {
3085 my ($self, $page) = @_; 3087 my ($self, $page) = @_;
3086 3088
3087 $self->{multiplexer}->set_current_page ($page); 3089 $self->{multiplexer}->set_current_page ($page);
3088 $self->_emit (page_changed => $self->{multiplexer}{current}); 3090 $self->_emit (page_changed => $self->{multiplexer}{current});
3091}
3092
3093#############################################################################
3094
3095package CFClient::UI::Combobox;
3096
3097use utf8;
3098
3099our @ISA = CFClient::UI::Button::;
3100
3101sub new {
3102 my $class = shift;
3103
3104 my $self = $class->SUPER::new (
3105 options => [], # [title, value, tooltip], ...
3106 value => undef,
3107 @_,
3108 );
3109
3110 $self->_set_value ($self->{value});
3111
3112 $self
3113}
3114
3115sub button_down {
3116 my ($self, $ev) = @_;
3117
3118 my @menu_items;
3119
3120 for (@{ $self->{options} }) {
3121 my ($title, $value, $tooltip) = @$_;
3122
3123 push @menu_items, [$tooltip, sub { $self->set_value ($value) }];
3124 }
3125
3126 CFClient::UI::Menu->new (items => \@menu_items)->popup ($ev);
3127}
3128
3129sub _set_value {
3130 my ($self, $value) = @_;
3131
3132 my ($item) = grep $_->[1] eq $value, @{ $self->{options} }
3133 or return;
3134
3135 $self->{value} = $item->[1];
3136 $self->set_markup ("$item->[0] ⇓");
3137 $self->set_tooltip ($item->[2]);
3138}
3139
3140sub set_value {
3141 my ($self, $value) = @_;
3142
3143 return unless $self->{value} ne $value;
3144
3145 $self->_set_value ($value);
3146 $self->_emit (changed => $value);
3089} 3147}
3090 3148
3091############################################################################# 3149#############################################################################
3092 3150
3093package CFClient::UI::Statusbox; 3151package CFClient::UI::Statusbox;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines