Gtk2-Ex-Datasheet-DBI
view release on metacpan or search on metacpan
lib/Gtk2/Ex/Datasheet/DBI.pm view on Meta::CPAN
}
sub undo {
# undo and revert are synonyms of each other
my $self = shift;
$self->query( undef, TRUE );
return TRUE;
}
sub revert {
# undo and revert are synonyms of each other
my $self = shift;
$self->query( undef, TRUE );
return TRUE;
}
sub changed {
my ( $self, $liststore, $treepath, $iter ) = @_;
my $model = $self->{treeview}->get_model;
# Only change the record status if it's currently unchanged
if ( ! $model->get( $iter, STATUS_COLUMN ) ) {
$model->signal_handler_block( $self->{changed_signal} );
$model->set( $iter, STATUS_COLUMN, CHANGED );
$model->signal_handler_unblock( $self->{changed_signal} );
}
# Execute user-defined functions
if ( $self->{on_changed} ) {
$self->{on_changed}(
{
treepath => $treepath,
iter => $iter
}
);
}
if ( $self->{footer} ) {
$self->update_footer;
}
return FALSE;
}
sub update_footer {
my $self = shift;
my @model_row;
foreach my $field ( @{$self->{fields}} ) {
if ( $field->{footer_function} eq "sum" ) {
push @model_row, $field->{column}, $self->sum_column( $field->{column} );
} elsif ( $field->{footer_function} eq "max" ) {
push @model_row, $field->{column}, $self->max_column( $field->{column} );
} elsif ( $field->{footer_function} eq "average" ) {
push @model_row, $field->{column}, $self->average_column( $field->{column} );
} elsif ( $field->{footer_text} ) {
push @model_row, $field->{column}, $field->{footer_text};
} else {
push @model_row, $field->{column}, undef;
}
}
$self->{footer_model}->set(
$self->{footer_model}->get_iter_first,
@model_row
);
}
sub apply {
my $self = shift;
my ( @iters_to_remove );
if ( $self->{read_only} ) {
Gtk2::Ex::Dialogs::ErrorMsg->new_and_run(
title => "Read Only!",
icon => "warning",
text => "Datasheet is open in read-only mode!"
);
return FALSE;
}
my $model = $self->{treeview}->get_model;
my $iter = $model->get_iter_first;
while ( $iter ) {
my $status = $model->get( $iter, STATUS_COLUMN );
# Decide what to do based on status
if ( $status == UNCHANGED || $status == LOCKED ) {
$iter = $model->iter_next( $iter );
next;
}
my $primary_key = $model->get( $iter, $self->{primary_key_column} );
if ( $self->{before_apply} ) {
# Better change the status indicator back into text, rather than make
# people use our constants. I think, anyway ...
( run in 1.476 second using v1.01-cache-2.11-cpan-39bf76dae61 )