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 )