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 )