… | |
… | |
234 | [ |
234 | [ |
235 | map s/^(\s*)// && [40 * length $1, length $_ ? $_ : " "], |
235 | map s/^(\s*)// && [40 * length $1, length $_ ? $_ : " "], |
236 | split /\n/, $pom->present ("CFClient::PodToPango") |
236 | split /\n/, $pom->present ("CFClient::PodToPango") |
237 | ] |
237 | ] |
238 | } |
238 | } |
|
|
239 | |
|
|
240 | package CFClient::Layout; |
|
|
241 | |
|
|
242 | $CFClient::OpenGL::SHUTDOWN_HOOK{"CFClient::Layout"} = sub { |
|
|
243 | reset_glyph_cache; |
|
|
244 | }; |
239 | |
245 | |
240 | package CFClient::Item; |
246 | package CFClient::Item; |
241 | |
247 | |
242 | use strict; |
248 | use strict; |
243 | use Crossfire::Protocol::Constants; |
249 | use Crossfire::Protocol::Constants; |
… | |
… | |
279 | } |
285 | } |
280 | |
286 | |
281 | sub do_n_dialog { |
287 | sub do_n_dialog { |
282 | my ($cb) = @_; |
288 | my ($cb) = @_; |
283 | |
289 | |
284 | my $w = new CFClient::UI::FancyFrame; |
290 | my $w = new CFClient::UI::FancyFrame |
|
|
291 | on_delete => sub { $_[0]->destroy; 1 }, |
|
|
292 | has_close_button => 1, |
|
|
293 | ; |
|
|
294 | |
285 | $w->add (my $vb = new CFClient::UI::VBox x => "center", y => "center"); |
295 | $w->add (my $vb = new CFClient::UI::VBox x => "center", y => "center"); |
286 | $vb->add (new CFClient::UI::Label text => "Enter item count:"); |
296 | $vb->add (new CFClient::UI::Label text => "Enter item count:"); |
287 | $vb->add (my $entry = new CFClient::UI::Entry |
297 | $vb->add (my $entry = new CFClient::UI::Entry |
288 | text => $last_enter_count, |
298 | text => $last_enter_count, |
289 | on_activate => sub { |
299 | on_activate => sub { |
290 | my ($entry) = @_; |
300 | my ($entry) = @_; |
291 | $last_enter_count = $entry->get_text; |
301 | $last_enter_count = $entry->get_text; |
292 | $cb->($last_enter_count); |
302 | $cb->($last_enter_count); |
293 | $w->hide; |
303 | $w->hide; |
294 | $w = undef; |
304 | $w->destroy; |
|
|
305 | |
|
|
306 | 0 |
295 | } |
307 | }, |
|
|
308 | on_escape => sub { $w->destroy; 1 }, |
296 | ); |
309 | ); |
297 | $entry->grab_focus; |
310 | $entry->grab_focus; |
298 | $w->show; |
311 | $w->show; |
299 | |
|
|
300 | } |
312 | } |
301 | |
313 | |
302 | sub update_widgets { |
314 | sub update_widgets { |
303 | my ($self) = @_; |
315 | my ($self) = @_; |
304 | |
316 | |
… | |
… | |
327 | $::CONN->send ("apply $self->{tag}"); |
339 | $::CONN->send ("apply $self->{tag}"); |
328 | } elsif ($ev->{button} == 3) { |
340 | } elsif ($ev->{button} == 3) { |
329 | my @menu_items = ( |
341 | my @menu_items = ( |
330 | ["examine", sub { $::CONN->send ("examine $self->{tag}") }], |
342 | ["examine", sub { $::CONN->send ("examine $self->{tag}") }], |
331 | ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }], |
343 | ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }], |
|
|
344 | ["ignite/thaw", # first try of an easier use of flint&steel |
|
|
345 | sub { |
|
|
346 | $::CONN->send ("mark ". pack "N", $self->{tag}); |
|
|
347 | $::CONN->send ("command apply flint and steel"); |
|
|
348 | } |
|
|
349 | ], |
332 | ["apply", sub { $::CONN->send ("apply $self->{tag}") }], |
350 | ["apply", sub { $::CONN->send ("apply $self->{tag}") }], |
333 | ( |
351 | ( |
334 | $self->{flags} & F_LOCKED |
352 | $self->{flags} & F_LOCKED |
335 | ? ( |
353 | ? ( |
336 | ["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }], |
354 | ["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }], |