Function to return Gtk2::Table
- From: Peter E Dennis <peter edwin dennis gmail com>
- To: gtk-perl-list gnome org
- Subject: Function to return Gtk2::Table
- Date: Fri, 15 May 2009 14:42:52 +1000
Hi All,
I am trying to create a function that when a button is clicked it will
create a table of widgets laid out in 2 rows x 9 columns and add it to
a vbox.
At the moment I am trying to do the following:
#!/usr/bin/perl
use Gtk2 -init;
use Gtk2::GladeXML;
# Read in glade file with gui
$gladexml = Gtk2::GladeXML->new('sscce.glade');
# Get main window vbox
$vbox1 = $gladexml->get_widget('vbox1');
# Get vbox to hold created tables
$vbox2 = $gladexml->get_widget('vbox2');
# Create a table of widgets
$table = &ret_table();
# Show the widgets?
$vbox2->pack_start_defaults($table); #get undefined error here...
$vbox2->show_all;
$vbox1->pack_start_defaults($vbox2);
$vbox1->show_all;
# Get main window from widget tree.
$main_window = $gladexml->get_widget('window1');
# Quit when user clicks on the close button/alt-f4 etc.
$main_window->signal_connect (destroy => sub { Gtk2->main_quit; });
# Maximise window
$main_window->maximize;
# Run main loop.
Gtk2->main;
sub ret_table
{
my $table = Gtk2::Table->new(2,9,FALSE);
# Title Row
my $lbl_num = Gtk2::Label->new("Num");
my $lbl_time = Gtk2::Label->new("Time/Session");
my $lbl_objectives = Gtk2::Label->new("Objectives/Learning Outcomes");
my $lbl_tasks = Gtk2::Label->new("Activities/Tasks/Content");
my $lbl_resources = Gtk2::Label->new("Resources");
my $tcol_sep1 = Gtk2::VSeparator->new;
my $tcol_sep2 = Gtk2::VSeparator->new;
my $tcol_sep3 = Gtk2::VSeparator->new;
my $tcol_sep4 = Gtk2::VSeparator->new;
# Entry Row
my $chk_num = Gtk2::CheckButton->new("1.");
my $e_time = Gtk2::Entry->new;
my $txtv_objectives = Gtk2::TextView->new;
my $txtv_tasks = Gtk2::TextView->new;
my $txtv_resources = Gtk2::TextView->new;
my $rcol_sep1 = Gtk2::VSeparator->new;
my $rcol_sep2 = Gtk2::VSeparator->new;
my $rcol_sep3 = Gtk2::VSeparator->new;
my $rcol_sep4 = Gtk2::VSeparator->new;
# Layout title row
$table->attach_defaults($lbl_num, 0, 1, 0, 1);
$table->attach_defaults($tcol_sep1, 1, 2, 0, 1);
$table->attach_defaults($lbl_time, 2, 3, 0, 1);
$table->attach_defaults($tcol_sep2, 3, 4, 0, 1);
$table->attach_defaults($lbl_objectives, 4, 5, 0, 1);
$table->attach_defaults($tcol_sep3, 5, 6, 0, 1);
$table->attach_defaults($lbl_tasks, 6, 7, 0, 1);
$table->attach_defaults($tcol_sep4, 7, 8, 0, 1);
$table->attach_defaults($lbl_resources, 8, 9, 0, 1);
# Layout entry row
$table->attach_defaults($chk_num, 0, 1, 0, 1);
$table->attach_defaults($rcol_sep1, 1, 2, 0, 1);
$table->attach_defaults($e_time, 2, 3, 0, 1);
$table->attach_defaults($rcol_sep2, 3, 4, 0, 1);
$table->attach_defaults($txtv_objectives, 4, 5, 0, 1);
$table->attach_defaults($rcol_sep3, 5, 6, 0, 1);
$table->attach_defaults($txtv_tasks, 6, 7, 0, 1);
$table->attach_defaults($rcol_sep4, 7, 8, 0, 1);
$table->attach_defaults($txtv_resources, 8, 9, 0, 1);
return $table;
}
However at the moment I get the following error:
Can't call method "pack_start_defaults" on an undefined value at
./main.pl line 18.
This is the line:
$vbox2->pack_start_defaults($table); # get undefined error here.
Is the table not being defined or is it the vbox?
Am I going the right way about this?
Many thanks,
Peter.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]