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 )