The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use Tickit::DSL;
use Eval::WithLexicals;
use Try::Tiny;
use Data::Dumper;

my $eval = Eval::WithLexicals->with_plugins("HintPersistence")->new(
	context => 'scalar',
);
vbox {
	my $scroller;
	widget {
		$scroller = scroller { };
	} expand => 1;
	entry {
		my ($self, $data) = @_;
		widget { scroller_text $data } parent => $scroller;
		try {
			my ($rslt) = $eval->eval($data);
			my $output = do {
				no warnings 'once';
				local $Data::Dumper::Terse = 1;
				local $Data::Dumper::Indent = 1;
				local $Data::Dumper::Useqq = 1;
				local $Data::Dumper::Deparse = 1;
				local $Data::Dumper::Sortkeys = 1;
				local $Data::Dumper::QuoteKeys = 0;
				Dumper($rslt)
			};
			widget { scroller_text $output } parent => $scroller
		} catch {
			my $err = $_;
			widget { scroller_text "Error: $err" } parent => $scroller
		}
	};
};
tickit->run;

=pod


  menubar {
    menuitem {
      menuitem { tickit->stop } label => 'Exit';
	} label => 'File';
    menuitem {
      menuitem { tickit->stop } label => 'Exit';
	} label => 'Widgets';
  } linetype => 'single';
  desktop { };
  statusbar { };

=cut