--- deliantra/Deliantra-Client/DC.pm 2006/05/25 16:24:43 1.62 +++ deliantra/Deliantra-Client/DC.pm 2006/05/25 23:06:05 1.69 @@ -173,7 +173,7 @@ sub view_verbatim { (join "", - map +("\t" x ($indent / 2)) . "$_\n", + map +("\t" x ($indent / 2)) . "$_\n", split /\n/, CFClient::UI::Label::escape ($_[1])) . "\n" } @@ -183,12 +183,17 @@ } sub view_head1 { - "" . $_[1]->title->present ($_[0]) . "\n\n" + "\n\n" . $_[1]->title->present ($_[0]) . "\n\n" . $_[1]->content->present ($_[0]) }; sub view_head2 { - "" . $_[1]->title->present ($_[0]) . "\n\n" + "\n" . $_[1]->title->present ($_[0]) . "\n\n" + . $_[1]->content->present ($_[0]) +}; + +sub view_head3 { + "\n" . $_[1]->title->present ($_[0]) . "\n\n" . $_[1]->content->present ($_[0]) }; @@ -258,6 +263,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 +308,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 +325,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->{weight_widget} ||= new CFClient::UI::Label ellipsise => 0, can_events => 1, can_hover => 1, align => 0.5; + $self->{desc_widget} ||= new CFClient::UI::Label + can_events => 1, + can_hover => 1, + ellipsise => 2, + align => -1, + 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 + can_events => 1, + can_hover => 1, + ellipsise => 0, + align => 0, + connect_button_down => $button_cb, + ; $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); $self->{weight_widget}->set_tooltip (