--- 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 (