… | |
… | |
171 | . $_[1]->content->present ($_[0]) |
171 | . $_[1]->content->present ($_[0]) |
172 | } |
172 | } |
173 | |
173 | |
174 | sub view_verbatim { |
174 | sub view_verbatim { |
175 | (join "", |
175 | (join "", |
176 | map +("\t" x ($indent / 2)) . "$_\n", |
176 | map +("\t" x ($indent / 2)) . "<tt>$_</tt>\n", |
177 | split /\n/, CFClient::UI::Label::escape ($_[1])) |
177 | split /\n/, CFClient::UI::Label::escape ($_[1])) |
178 | . "\n" |
178 | . "\n" |
179 | } |
179 | } |
180 | |
180 | |
181 | sub view_textblock { |
181 | sub view_textblock { |
182 | ("\t" x ($indent / 2)) . "$_[1]\n\n" |
182 | ("\t" x ($indent / 2)) . "$_[1]\n\n" |
183 | } |
183 | } |
184 | |
184 | |
185 | sub view_head1 { |
185 | sub view_head1 { |
186 | "<span foreground='#ffff00' size='x-large'>" . $_[1]->title->present ($_[0]) . "</span>\n\n" |
186 | "\n\n<span foreground='#ffff00' size='x-large'>" . $_[1]->title->present ($_[0]) . "</span>\n\n" |
187 | . $_[1]->content->present ($_[0]) |
187 | . $_[1]->content->present ($_[0]) |
188 | }; |
188 | }; |
189 | |
189 | |
190 | sub view_head2 { |
190 | sub view_head2 { |
191 | "<span foreground='#ccccff' size='large'>" . $_[1]->title->present ($_[0]) . "</span>\n\n" |
191 | "\n<span foreground='#ccccff' size='large'>" . $_[1]->title->present ($_[0]) . "</span>\n\n" |
|
|
192 | . $_[1]->content->present ($_[0]) |
|
|
193 | }; |
|
|
194 | |
|
|
195 | sub view_head3 { |
|
|
196 | "\n<span size='large'>" . $_[1]->title->present ($_[0]) . "</span>\n\n" |
192 | . $_[1]->content->present ($_[0]) |
197 | . $_[1]->content->present ($_[0]) |
193 | }; |
198 | }; |
194 | |
199 | |
195 | sub view_over { |
200 | sub view_over { |
196 | local $indent = $indent + $_[1]->indent; |
201 | local $indent = $indent + $_[1]->indent; |
… | |
… | |
256 | } |
261 | } |
257 | |
262 | |
258 | sub update_widgets { |
263 | sub update_widgets { |
259 | my ($self) = @_; |
264 | my ($self) = @_; |
260 | |
265 | |
|
|
266 | my $button_cb = sub { |
|
|
267 | my (undef, $ev, $x, $y) = @_; |
|
|
268 | |
|
|
269 | if (($ev->{mod} & CFClient::KMOD_SHIFT) && $ev->{button} == 1) { |
|
|
270 | my $targ = $::CONN->{player}{tag}; |
|
|
271 | |
|
|
272 | if ($self->{container} == $::CONN->{player}{tag}) { |
|
|
273 | $targ = $::CONN->{open_container}; |
|
|
274 | } |
|
|
275 | |
|
|
276 | $::CONN->send ("move $targ $self->{tag} 0"); |
|
|
277 | } elsif ($ev->{button} == 1) { |
|
|
278 | $::CONN->send ("examine $self->{tag}"); |
|
|
279 | } elsif ($ev->{button} == 2) { |
|
|
280 | $::CONN->send ("apply $self->{tag}"); |
|
|
281 | } elsif ($ev->{button} == 3) { |
|
|
282 | my @menu_items = ( |
|
|
283 | ["examine", sub { $::CONN->send ("examine $self->{tag}") }], |
|
|
284 | ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }], |
|
|
285 | ["apply", sub { $::CONN->send ("apply $self->{tag}") }], |
|
|
286 | ( |
|
|
287 | $self->{flags} & Crossfire::Protocol::F_LOCKED |
|
|
288 | ? ( |
|
|
289 | ["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }], |
|
|
290 | ) |
|
|
291 | : ( |
|
|
292 | ["lock", sub { $::CONN->send ("lock " . pack "CN", 1, $self->{tag}) }], |
|
|
293 | ["drop", sub { $::CONN->send ("move $::CONN->{open_container} $self->{tag} 0") }], |
|
|
294 | ) |
|
|
295 | ), |
|
|
296 | ); |
|
|
297 | |
|
|
298 | CFClient::UI::Menu->new (items => \@menu_items)->popup ($ev); |
|
|
299 | } |
|
|
300 | |
|
|
301 | 1 |
|
|
302 | }; |
|
|
303 | |
261 | my $tooltip_std = "<small>" |
304 | my $tooltip_std = "<small>" |
262 | . "Left click - examine item\n" |
305 | . "Left click - examine item\n" |
263 | . "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n" |
306 | . "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n" |
264 | . "Middle click - apply\n" |
307 | . "Middle click - apply\n" |
265 | . "Right click - further options" |
308 | . "Right click - further options" |
266 | . "</small>\n"; |
309 | . "</small>\n"; |
267 | |
310 | |
268 | $self->{face_widget} ||= new CFClient::UI::Face can_events => 1, can_hover => 1; |
311 | $self->{face_widget} ||= new CFClient::UI::Face |
|
|
312 | can_events => 1, |
|
|
313 | can_hover => 1, |
|
|
314 | anim => $self->{anim}, |
|
|
315 | animspeed => $self->{animspeed}, # TODO# must be set at creation time |
|
|
316 | connect_button_down => $button_cb, |
|
|
317 | ; |
269 | $self->{face_widget}{face} = $self->{face}; |
318 | $self->{face_widget}{face} = $self->{face}; |
270 | $self->{face_widget}{anim} = $self->{anim}; |
319 | $self->{face_widget}{anim} = $self->{anim}; |
271 | $self->{face_widget}{animspeed} = $self->{animespeed}; |
320 | $self->{face_widget}{animspeed} = $self->{animspeed}; |
272 | $self->{face_widget}->set_tooltip ( |
321 | $self->{face_widget}->set_tooltip ( |
273 | "<b>Face/Animation.</b>\n" |
322 | "<b>Face/Animation.</b>\n" |
274 | . "Item uses face #$self->{face}. " |
323 | . "Item uses face #$self->{face}. " |
275 | . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
324 | . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
276 | . "\n\n$tooltip_std" |
325 | . "\n\n$tooltip_std" |
277 | ); |
326 | ); |
278 | |
327 | |
279 | $self->{desc_widget} ||= new CFClient::UI::Label ellipsise => 2, can_events => 1, can_hover => 1; |
328 | $self->{desc_widget} ||= new CFClient::UI::Label |
280 | $self->{desc_widget}->set_text (CFClient::Item::desc_string $self); |
329 | can_events => 1, |
|
|
330 | can_hover => 1, |
|
|
331 | ellipsise => 2, |
|
|
332 | align => -1, |
|
|
333 | connect_button_down => $button_cb, |
|
|
334 | ; |
|
|
335 | my $desc = CFClient::Item::desc_string $self; |
|
|
336 | $self->{desc_widget}->set_text ($desc); |
|
|
337 | $self->{desc_widget}->set_tooltip ("<b>$desc</b>.\n$tooltip_std"); |
281 | |
338 | |
282 | $self->{weight_widget} ||= new CFClient::UI::Label ellipsise => 0, can_events => 1, can_hover => 1, align => 0.5; |
339 | $self->{weight_widget} ||= new CFClient::UI::Label |
|
|
340 | can_events => 1, |
|
|
341 | can_hover => 1, |
|
|
342 | ellipsise => 0, |
|
|
343 | align => 0, |
|
|
344 | connect_button_down => $button_cb, |
|
|
345 | ; |
283 | $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); |
346 | $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); |
284 | |
347 | |
285 | $self->{weight_widget}->set_tooltip ( |
348 | $self->{weight_widget}->set_tooltip ( |
286 | "<b>Weight</b>.\n" |
349 | "<b>Weight</b>.\n" |
287 | . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ") |
350 | . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ") |