… | |
… | |
347 | my ($self, $flags, $prompt) = @_; |
347 | my ($self, $flags, $prompt) = @_; |
348 | |
348 | |
349 | $prompt = $LAST_QUERY unless length $prompt; |
349 | $prompt = $LAST_QUERY unless length $prompt; |
350 | $LAST_QUERY = $prompt; |
350 | $LAST_QUERY = $prompt; |
351 | |
351 | |
352 | my $dialog = new CFClient::UI::FancyFrame |
352 | $self->{query}-> ($self, $flags, $prompt); |
353 | x => "center", |
|
|
354 | y => "center", |
|
|
355 | title => "Query", |
|
|
356 | child => my $vbox = new CFClient::UI::VBox, |
|
|
357 | ; |
|
|
358 | |
|
|
359 | $vbox->add (new CFClient::UI::Label |
|
|
360 | max_w => $::WIDTH * 0.4, |
|
|
361 | ellipsise => 0, |
|
|
362 | text => $prompt); |
|
|
363 | |
|
|
364 | if ($flags & CS_QUERY_YESNO) { |
|
|
365 | $vbox->add (my $hbox = new CFClient::UI::HBox); |
|
|
366 | $hbox->add (new CFClient::UI::Button |
|
|
367 | text => "No", |
|
|
368 | on_activate => sub { |
|
|
369 | $self->send ("reply n"); |
|
|
370 | $dialog->destroy; |
|
|
371 | $self->{map_widget}->focus_in; |
|
|
372 | } |
|
|
373 | ); |
|
|
374 | $hbox->add (new CFClient::UI::Button |
|
|
375 | text => "Yes", |
|
|
376 | on_activate => sub { |
|
|
377 | $self->send ("reply y"); |
|
|
378 | $dialog->destroy; |
|
|
379 | }, |
|
|
380 | ); |
|
|
381 | |
|
|
382 | $dialog->focus_in; |
|
|
383 | |
|
|
384 | } elsif ($flags & CS_QUERY_SINGLECHAR) { |
|
|
385 | $dialog->{tooltip} = "Press a key (click on the entry to make sure it has keyboard focus)"; |
|
|
386 | $vbox->add (my $entry = new CFClient::UI::Entry |
|
|
387 | on_changed => sub { |
|
|
388 | $self->send ("reply $_[1]"); |
|
|
389 | $dialog->destroy; |
|
|
390 | }, |
|
|
391 | ); |
|
|
392 | |
|
|
393 | $entry->focus_in; |
|
|
394 | |
|
|
395 | } else { |
|
|
396 | $dialog->{tooltip} = "Enter the reply and press return (click on the entry to make sure it has keyboard focus)"; |
|
|
397 | |
|
|
398 | $vbox->add (my $entry = new CFClient::UI::Entry |
|
|
399 | $flags & CS_QUERY_HIDEINPUT ? (hiddenchar => "*") : (), |
|
|
400 | on_activate => sub { |
|
|
401 | $self->send ("reply $_[1]"); |
|
|
402 | $dialog->destroy; |
|
|
403 | }, |
|
|
404 | ); |
|
|
405 | |
|
|
406 | $entry->focus_in; |
|
|
407 | } |
|
|
408 | |
|
|
409 | $dialog->show; |
|
|
410 | } |
353 | } |
411 | |
354 | |
412 | sub drawinfo { |
355 | sub drawinfo { |
413 | my ($self, $color, $text) = @_; |
356 | my ($self, $color, $text) = @_; |
414 | |
357 | |
… | |
… | |
428 | [0.74, 0.65, 0.41], |
371 | [0.74, 0.65, 0.41], |
429 | ); |
372 | ); |
430 | |
373 | |
431 | my $time = sprintf "%02d:%02d:%02d", (localtime time)[2,1,0]; |
374 | my $time = sprintf "%02d:%02d:%02d", (localtime time)[2,1,0]; |
432 | |
375 | |
|
|
376 | # try to create single paragraphs of multiple lines sent by the server |
|
|
377 | $text =~ s/(?<=\S)\n(?=\w)/ /g; |
|
|
378 | |
433 | $text = CFClient::UI::Label::escape $text; |
379 | $text = CFClient::UI::Label::escape $text; |
434 | $text =~ s/\[b\](.*?)\[\/b\]/<b>\1<\/b>/g; |
380 | $text =~ s/\[b\](.*?)\[\/b\]/<b>\1<\/b>/g; |
435 | $text =~ s/\[color=(.*?)\](.*?)\[\/color\]/<span foreground='\1'>\2<\/span>/g; |
381 | $text =~ s/\[color=(.*?)\](.*?)\[\/color\]/<span foreground='\1'>\2<\/span>/g; |
436 | |
382 | |
437 | $self->{logview}->add_paragraph ($color[$color], |
383 | $self->{logview}->add_paragraph ($color[$color], |
… | |
… | |
540 | |
486 | |
541 | $::FLOORBOX->clear; |
487 | $::FLOORBOX->clear; |
542 | |
488 | |
543 | my $row; |
489 | my $row; |
544 | for (@{ $::CONN->{container}{0} }) { |
490 | for (@{ $::CONN->{container}{0} }) { |
545 | if ($row < 7) { |
491 | if ($row < 6) { |
546 | local $_->{face_widget}; # hack to force recreation of widget |
492 | local $_->{face_widget}; # hack to force recreation of widget |
547 | local $_->{desc_widget}; # hack to force recreation of widget |
493 | local $_->{desc_widget}; # hack to force recreation of widget |
548 | CFClient::Item::update_widgets $_; |
494 | CFClient::Item::update_widgets $_; |
549 | |
495 | |
550 | $::FLOORBOX->add (0, $row, $_->{face_widget}); |
496 | $::FLOORBOX->add (0, $row, $_->{face_widget}); |
551 | $::FLOORBOX->add (1, $row, $_->{desc_widget}); |
497 | $::FLOORBOX->add (1, $row, $_->{desc_widget}); |
552 | |
498 | |
553 | $row++; |
499 | $row++; |
554 | } else { |
500 | } else { |
555 | $::FLOORBOX->add (1, $row, new CFClient::UI::Label text => "More..."); |
501 | $::FLOORBOX->add (1, $row, new CFClient::UI::Button |
|
|
502 | text => "More...", |
|
|
503 | on_activate => sub { $::INV_WINDOW->toggle_visibility }, |
|
|
504 | ); |
556 | last; |
505 | last; |
557 | } |
506 | } |
558 | } |
507 | } |
559 | }); |
508 | }); |
560 | |
509 | |