Gtk2-Ex-DbLinker
view release on metacpan or search on metacpan
examples/Forms/Dnav2.pm view on Meta::CPAN
#Gtk2::Widget::hide($self->{glade_xml}->get_object('RecordSpinner'));
#Gtk2::Widget::hide($self->{glade_xml}->get_object('lbl_recordCount'));
#Gtk2::Widget::hide($self->{glade_xml}->get_object('menubar1'));
push @{ $self->{w2hide} },
(
$self->{glade_xml}->get_object('RecordSpinner'),
$self->{glade_xml}->get_object('lbl_recordCount'),
$self->{glade_xml}->get_object('menubar1'),
$self->{glade_xml}->get_object('lbl_RecordStatus')
);
}
else {
carp("$ref not found with set_dataref") unless ( $ref_form{$ref} );
}
}
sub get_builder {
my $self = shift;
return $self->{glade_xml};
}
sub add_widgets2hide {
my ( $self, @allnames ) = @_;
foreach my $n (@allnames) {
push @{ $self->{w2hide} }, $self->{glade_xml}->get_object($n);
}
}
sub connect_signal_for {
my ( $self, $btn, $sub_ref, $data, $signal ) = @_;
my $b = $self->{glade_xml}->get_object($btn);
croak
"Dnav connect_signal_for failed since no widget instance exists for $btn"
unless ($b);
$signal = ( $signal ? $signal : "clicked" );
if ( exists ${ $self->{events_id} }{$btn} ) {
#deconnecter
my $id = $self->{events_id}->{$btn};
$b->signal_handler_disconnect($id);
}
$b->signal_connect( $signal, $sub_ref, $data );
}
sub show_tables {
my $self = shift;
my %arg = @_;
#my $dbh = $self->{globals}->{connections}->{dbh};
my $sth = $arg{dbh}->prepare( $arg{sql} );
$sth->execute;
my $menu = $self->{glade_xml}->get_object('menu1');
# die unless ($menu);
while ( my @row = $sth->fetchrow_array() ) {
# print $row[0],"\n";
my $t = Gtk2::MenuItem->new( $row[0] );
$t->signal_connect(
'activate',
sub {
$self->display_tbl( { name => $row[0] }, dbh => $arg{dbh} );
}
);
# push @tbl, $t
$menu->append($t);
$t->show;
}
}
sub display_tbl {
my ( $self, $href ) = @_;
my $treeview = Gtk2::TreeView->new();
# a closure where the $self var is sent with $href
# ref $self is the calling class not Forms::Dnav2
my $data = $self->{mibuilder}->($href);
my $f = Forms::Dnav2->new( ismain => 0 );
my $scroll = Gtk2::ScrolledWindow->new;
$scroll->add($treeview);
$f->add_ctrl($scroll);
# print "$name\n";
my $rs = Gtk2::Ex::DbLinker::Datasheet->new(
{ treeview => $treeview,
data_manager => $data,
}
);
$rs->update;
$f->set_dataref($rs);
# $f->test();
$f->show_all_except( ['menubar1'] );
}
sub show_all_except {
my ( $self, $ar_ref ) = @_;
my @size = $self->{size} ? @{ $self->{size} } : ( 800, 400 );
my $w = $self->{glade_xml}->get_object('mainwindow');
$w->set_default_size(@size);
$w->show_all;
foreach my $name (@$ar_ref) {
my $w = $self->{glade_xml}->get_object($name);
$w->hide if ($w);
}
foreach my $w ( @{ $self->{w2hide} } ) {
$w->hide if ($w);
}
}
sub add_ctrl {
my ( $self, $ctrl ) = @_;
my $sfctrl = $self->{glade_xml}->get_object('main');
# Gtk2::Widget::reparent($ctrl, $sfctrl);
( run in 1.112 second using v1.01-cache-2.11-cpan-39bf76dae61 )