--- deliantra/Deliantra-Client/DC/UI.pm 2006/04/30 11:17:08 1.182 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/04/30 13:10:46 1.183 @@ -2636,6 +2636,68 @@ ############################################################################# +package CFClient::UI::InventoryItem; + +our @ISA = CFClient::UI::HBox::; + +sub new { + my $class = shift; + + my %args = @_; + + my $item = $args{item}; + + my $desc = $item->{nrof} < 2 + ? $item->{name} + : "$item->{nrof} $item->{name_pl}"; + + + my $self = $class->SUPER::new ( + can_hover => 1, + can_events => 1, + tooltip => (CFClient::UI::Label->escape ($desc) + . "\nleftclick - pick up\nmiddle click - apply\nrightclick - menu"), + connect_button_down => sub { + my ($self, $ev, $x, $y) = @_; + + # todo: maybe put examine on 1? but should just be a tooltip :( + if ($ev->{button} == 1) { + $::CONN->send ("move $::CONN->{player}{tag} $item->{tag} 0"); + } elsif ($ev->{button} == 2) { + $::CONN->send ("apply $item->{tag}"); + } elsif ($ev->{button} == 3) { + CFClient::UI::Menu->new ( + items => [ + ["examine", sub { $::CONN->send ("examine $item->{tag}") }], + [ + $item->{flags} & Crossfire::Protocol::F_LOCKED ? "lock" : "unlock", + sub { $::CONN->send ("lock $item->{tag}") }, + ], + ["mark", sub { $::CONN->send ("mark $item->{tag}") }], + ["apply", sub { $::CONN->send ("apply $item->{tag}") }], + ["drop", sub { $::CONN->send ("move 0 $item->{tag} 0") }], + ], + )->popup ($ev); + } + + 1 + }, + %args + ); + $self->add(new CFClient::UI::Face + can_events => 0, + face => $item->{face}, + anim => $item->{anim}, + animspeed => $item->{animspeed}); + $self->add(new CFClient::UI::Label + can_events => 0, + text => $desc); + + $self +} + +############################################################################# + package CFClient::UI::Inventory; our @ISA = CFClient::UI::ScrolledWindow::; @@ -2666,17 +2728,7 @@ ? $item->{name} : "$item->{nrof} $item->{name_pl}"; - my $hb = new CFClient::UI::HBox; - - $hb->add (my $f = new CFClient::UI::Face - can_events => 0, - face => $item->{face}, - anim => $item->{anim}, - animspeed => $item->{animspeed}, - expand => 1, - ); - $hb->add (new CFClient::UI::Label text => $desc, expand => 1); - $self->{scrolled}->add ($hb); + $self->{scrolled}->add (new CFClient::UI::InventoryItem item => $item); } # $range->{range} = [$self->{pos}, 0, $self->{max_pos}, $page]; @@ -2684,7 +2736,7 @@ sub size_request { my ($self) = @_; - (100, 200) + ($self->{req_w}, $self->{req_h}); } #############################################################################