App-mirai

 view release on metacpan or  search on metacpan

lib/App/mirai/Tickit.pm  view on Meta::CPAN

		my ($item) = @$data;
		my ($pkg, $file, $line) = @$item;
		add_widgets {
			fileviewer {
			} $file,
			  'tabsize' => 4,
			  line => $line - 1,
			  'parent:label' => $file;
			  'parent:top' => 3,
			  'parent:left' => 3;
		} under => $widget{desktop};
	} data => $stack,
	  item_transformations => [sub {
	  	my ($row, $item) = @_;
		Future->wrap([ @{$item}[1,2] ])
	  } ],
	  failure_transformations => sub { ' ' },
	  view_transformations => [$truncate],
	  columns => [
		{ label => 'File' },
		{ label => 'Line', align => 'right', width => 6 },

lib/App/mirai/Tickit.pm  view on Meta::CPAN

				vbox {
					static 'Marked ready stack', align => 0.5;
					stack_table($f->ready_stack);
				} 'parent:expand' => 1;
			} 'parent:expand' => 1;
		} style => { spacing => 1 },
		  'parent:label' => $f->label . ' (' . $f->status . ', ' . $elapsed . 's)',
		  'parent:top' => 3,
		  'parent:left' => 3,
		  'parent:lines' => 12;
	} under => $widget{desktop}
}

=head2 app_about

Shows the C< About > dialog popup.

=cut

sub app_about {
	my $vbox = shift;

lib/App/mirai/Tickit.pm  view on Meta::CPAN


sub app_menu {
	my ($self) = @_;
	menubar {
		submenu File => sub {
			menuitem 'Open session' => sub { warn 'open' };
			menuitem 'Save session' => sub {
				my $sp = $self->session_path;
				unlink $sp if -l $sp;
				my $session = { };
				my @win = @{$widget{desktop}->{widgets}};
				for my $widget (@win) {
					my $label = $widget->label;
					$session->{$label} = {
						geometry => [
							map {;
								$widget->window->rect->$_
							} qw(top left lines cols)
						]
					};
				}

lib/App/mirai/Tickit.pm  view on Meta::CPAN

Sets up the UI.

=cut

sub apply_layout {
	my ($self) = @_;
	vbox {
		floatbox {
			vbox {
				$self->app_menu;
				$widget{desktop} = desktop {
					vbox {
						my $bc = breadcrumb {
						} item_transformations => sub {
							my ($item) = @_;
							return '' if $item->name eq 'Root';
							$item->name
						};
						my $tree = tree {
						} data => [
							Pending => [

lib/App/mirai/Tickit.pm  view on Meta::CPAN


sub prepare {
	my ($self) = @_;
	$self->load_styles;
	$self->apply_layout;
	my $path = $self->session_path;
	if(-r $path) {
		open my $fh, '<', $path or die "Unable to open last session $path - $!";
		my $session = decode_json(do { local $/; <$fh> });
		tickit->later(sub {
			my @win = @{$widget{desktop}->{widgets}};
			for my $widget (@win) {
				my $label = $widget->label;
				if(exists $session->{$label}) {
					$widget->window->change_geometry(
						@{$session->{$label}->{geometry}}
					)
				}
			}
			$win[0]->{linked_widgets}{right} = [
				left => $win[1]



( run in 0.475 second using v1.01-cache-2.11-cpan-299005ec8e3 )