Parse-Vipar
view release on metacpan or search on metacpan
lib/Parse/Vipar.pm view on Meta::CPAN
$view->{left_f} = $view->{main_f}->Frame()
->pack(-side => LEFT, -fill => 'both', -expand => 1);
$view->{state_f} = $view->{left_f}->Frame()
->pack(-side => TOP, -fill => 'x');
$view->{graph_f} = $view->{left_f}->Frame()
->pack(-side => TOP, -fill => 'both', -expand => 1);
# Middle pane
$view->{ministates_f} = $view->{main_f}->Frame()
->pack(-side => LEFT, -fill => 'y');
# Right pane
$view->{right_f} = $view->{main_f}->Frame()
->pack(-fill => 'y', -expand => 1);
$view->{rules_f} = $view->{right_f}->Frame()
->pack(-side => TOP, -fill => 'both', -expand => 1);
$view->{symbols_f} = $view->{right_f}->Frame()
->pack(-side => TOP, -fill => 'both', -expand => 1);
$self->layout_menubar($view);
$self->layout_statusline($view);
for my $child (@{ $self->{view_children} }) {
$child->layout_view($view);
}
return $view;
}
sub layout_step_window {
my $self = shift;
my ($win) = @_;
my $info = $win->{info} = {};
# Set up the overall layout
$info->{topline_f} = $win->Frame()
->pack(-side => TOP, -fill => 'x');
$info->{parse_f} = $win->Frame()
->pack(-side => LEFT, -fill => 'y');
$info->{shell_f} = $win->Frame()
->pack(-side => RIGHT, -fill => 'y');
for my $child (@{ $self->{step_children} }) {
$child->layout($info, $win);
}
return $info;
}
sub layout_menubar {
my $self = shift;
my ($view) = @_;
$view->{topline_m} = $view->{topline_f}->Menubutton(-text => "Pulldown")
->pack(-anchor => 'w', -fill => 'x');
return $view;
}
sub popup_debug_window {
my $top = Toplevel->new();
$top->Entry()->pack();
}
sub layout_statusline {
my $self = shift;
my ($view) = @_;
$view->{statusline_l} = $view->{statusline_f}->Label(-text => "Status Line")
->pack();
return $view;
}
sub status {
my $self = shift;
$self->{view}->{statusline_l}->configure(-text => shift());
}
################ CONTROLS ######################
######## GENERAL ###########
sub bind_symbol {
my ($self, $t, $tag, $symbol) = @_;
$t->tagBind($tag, "<Any-Enter>",
sub { $self->view_symbols($symbol); });
$t->tagBind($tag, "<Any-Leave>", sub { });
$t->tagBind($tag, "<Button-1>",
sub { $self->select_symbols($symbol); });
$t->tagBind($tag, "<Double-Button-1>",
sub { $self->restrict_symbols($symbol) });
}
sub bind_object {
my ($self, $obj, $t, $tag, $id) = @_;
$t->tagBind($tag, "<Any-Enter>",
sub { $obj->view($id); });
$t->tagBind($tag, "<Any-Leave>", sub { });
$t->tagBind($tag, "<Button-1>",
sub { $obj->select($id); });
$t->tagBind($tag, "<Double-Button-1>",
sub { $obj->restrict($id) });
}
######## SYMBOLS #########
sub view_symbols {
my $self = shift;
my (@symbols) = @_;
my $view = $self->{view};
$self->{rules}->view_symbols(@symbols);
$self->{symbols}->view(@symbols);
$self->{ministates}->view_symbols(@symbols);
}
sub select_symbols {
( run in 1.111 second using v1.01-cache-2.11-cpan-364913b4093 )