Gtk2-Ex-FormFactory
view release on metacpan or search on metacpan
lib/Gtk2/Ex/FormFactory/ExecFlow.pm view on Meta::CPAN
$tree_view->set_rules_hint(1);
$self->set_gtk_widget($tree_view);
1;
}
sub empty_widget {
my $self = shift;
$self->get_gtk_widget->get_model->clear;
$self->set_path_by_id_href({});
1;
}
sub object_to_widget {
my $self = shift;
my $job = $self->get_object_value;
return unless $job;
$self->empty_widget;
$self->add_job_to_model($job, undef);
$self->get_gtk_widget->expand_all;
1;
}
sub add_job_to_model {
my $self = shift;
my ($job, $parent_iter) = @_;
my $model = $self->get_gtk_widget->get_model;
my $iter = $model->append($parent_iter);
$model->set($iter, 0 => $job->get_info);
$model->set($iter, 1 => $job->get_progress_stats);
$model->set($iter, 2 => $job->get_id);
my $i = 3;
foreach my $add_col ( @{$self->get_add_columns} ) {
my $method = "get_$add_col";
$model->set($iter, $i => $job->$method());
++$i;
}
my $path = $model->get_path($iter);
$self->get_path_by_id_href->{$job->get_id} = $path;
if ( $job->get_type eq 'group' ) {
foreach my $child_job ( @{$job->get_jobs} ) {
$self->add_job_to_model($child_job, $iter);
}
}
1;
}
sub update_job {
my $self = shift;
my ($job) = @_;
my $path = $self->get_path_by_id_href->{$job->get_id};
return if !$path;
my $model = $self->get_gtk_widget->get_model;
my $iter = $model->get_iter($path);
$model->set($iter, 0 => $job->get_info);
$model->set($iter, 1 => $job->get_progress_stats);
my $i = 3;
foreach my $add_col ( @{$self->get_add_columns} ) {
my $method = "get_$add_col";
$model->set($iter, $i => $job->$method());
++$i;
}
1;
}
sub add_job {
my $self = shift;
my ($job) = @_;
my $group = $job->get_group;
my $group_path = $self->get_path_by_id_href->{$group->get_id};
return $self->add_job_to_model($job) if !$group_path;
my $model = $self->get_gtk_widget->get_model;
my $iter = $model->get_iter($group_path);
$self->add_job_to_model($job, $iter);
$self->get_gtk_widget->expand_row($group_path, 0);
$self->get_gtk_widget->expand_row(
$self->get_path_by_id_href->{$job->get_id},
1
);
1;
}
sub remove_job {
my $self = shift;
my ($job) = @_;
$self->remove_job_with_id($job->get_id);
1;
}
sub remove_job_with_id {
my $self = shift;
my ($job_id) = @_;
my $path = $self->get_path_by_id_href->{$job_id};
( run in 1.701 second using v1.01-cache-2.11-cpan-39bf76dae61 )