--- deliantra/Deliantra-Client/DC.pm 2006/05/25 16:24:43 1.62
+++ deliantra/Deliantra-Client/DC.pm 2006/05/25 21:36:44 1.67
@@ -258,6 +258,44 @@
sub update_widgets {
my ($self) = @_;
+ my $button_cb = sub {
+ my (undef, $ev, $x, $y) = @_;
+
+ if (($ev->{mod} & CFClient::KMOD_SHIFT) && $ev->{button} == 1) {
+ my $targ = $::CONN->{player}{tag};
+
+ if ($self->{container} == $::CONN->{player}{tag}) {
+ $targ = $::CONN->{open_container};
+ }
+
+ $::CONN->send ("move $targ $self->{tag} 0");
+ } elsif ($ev->{button} == 1) {
+ $::CONN->send ("examine $self->{tag}");
+ } elsif ($ev->{button} == 2) {
+ $::CONN->send ("apply $self->{tag}");
+ } elsif ($ev->{button} == 3) {
+ my @menu_items = (
+ ["examine", sub { $::CONN->send ("examine $self->{tag}") }],
+ ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }],
+ ["apply", sub { $::CONN->send ("apply $self->{tag}") }],
+ (
+ $self->{flags} & Crossfire::Protocol::F_LOCKED
+ ? (
+ ["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }],
+ )
+ : (
+ ["lock", sub { $::CONN->send ("lock " . pack "CN", 1, $self->{tag}) }],
+ ["drop", sub { $::CONN->send ("move $::CONN->{open_container} $self->{tag} 0") }],
+ )
+ ),
+ );
+
+ CFClient::UI::Menu->new (items => \@menu_items)->popup ($ev);
+ }
+
+ 1
+ };
+
my $tooltip_std = ""
. "Left click - examine item\n"
. "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n"
@@ -265,10 +303,16 @@
. "Right click - further options"
. "\n";
- $self->{face_widget} ||= new CFClient::UI::Face can_events => 1, can_hover => 1;
+ $self->{face_widget} ||= new CFClient::UI::Face
+ can_events => 1,
+ can_hover => 1,
+ anim => $self->{anim},
+ animspeed => $self->{animspeed}, # TODO# must be set at creation time
+ connect_button_down => $button_cb,
+ ;
$self->{face_widget}{face} = $self->{face};
$self->{face_widget}{anim} = $self->{anim};
- $self->{face_widget}{animspeed} = $self->{animespeed};
+ $self->{face_widget}{animspeed} = $self->{animspeed};
$self->{face_widget}->set_tooltip (
"Face/Animation.\n"
. "Item uses face #$self->{face}. "
@@ -276,10 +320,24 @@
. "\n\n$tooltip_std"
);
- $self->{desc_widget} ||= new CFClient::UI::Label ellipsise => 2, can_events => 1, can_hover => 1;
- $self->{desc_widget}->set_text (CFClient::Item::desc_string $self);
+ $self->{desc_widget} ||= new CFClient::UI::Label
+ can_events => 1,
+ can_hover => 1,
+ ellipsise => 2,
+ xalign => 0,
+ connect_button_down => $button_cb,
+ ;
+ my $desc = CFClient::Item::desc_string $self;
+ $self->{desc_widget}->set_text ($desc);
+ $self->{desc_widget}->set_tooltip ("$desc.\n$tooltip_std");
- $self->{weight_widget} ||= new CFClient::UI::Label ellipsise => 0, can_events => 1, can_hover => 1, align => 0.5;
+ $self->{weight_widget} ||= new CFClient::UI::Label
+ can_events => 1,
+ can_hover => 1,
+ ellipsise => 0,
+ xalign => 0.5,
+ connect_button_down => $button_cb,
+ ;
$self->{weight_widget}->set_text (CFClient::Item::weight_string $self);
$self->{weight_widget}->set_tooltip (