Re: Aligning in a Table
- From: muppet <scott asofyet org>
- To: dom dreamscan net
- Cc: gtk-perl-list gnome org
- Subject: Re: Aligning in a Table
- Date: Fri, 18 Jul 2008 23:48:06 -0400
On Jul 18, 2008, at 5:40 PM, Dominik wrote:
Hi all,
I'm sure this is easy to answer, but I'm trying to get back into
coding, and specifically GTK2-Perl.
I have a table setup with various widgets in each. What I would
like to do is align, say the menubar, to the top of the cell,
without having all the gaps in between. Attached is a screenshot of
what I mean. I think I would have to use Alignment, but I'm not
sure, looking through some other people's code I wasn't able to find
anything. Ideally, I would like the center table to take up all the
space that the Menubar and Statusbar widgets do not use. And having
those two widgets aligned at the top (Menubar) and bottom (Statusbar).
Any help would be greatly appreciated.
I think what you're looking for are "packing properties", like
"expand" and "fill".
http://library.gnome.org/devel/gtk/stable/gtk-Standard-Enumerations.html#GtkAttachOptions
GTK_EXPAND the widget should expand to take up any extra space in
its container that has been allocated.
GTK_SHRINK the widget should shrink as and when possible.
GTK_FILL the widget should fill the space allocated to it.
For the basic layout you created in the screenshot, menubar, content
area, and statusbar, you really only want the content area to have the
"expand" and "fill" properties.
my $table = Gtk2::Table->new (3, 1);
$table->pack_start ($menubar, 0, 1, 0, 1, [], [], 0, 0);
$table->pack_start ($contents, 0, 1, 1, 2, [qw(expand fill)],
[qw(expand fill)], 0, 0);
$table->pack_start ($statusbar, 0, 1, 2, 3, [], [], 0, 0);
One-column tables are a bit silly, though. You also can create that
layout a bit more easily with a vertical box, like this:
my $vbox = Gtk2::VBox->new ();
# pack menu bar first, with "expand" and "fill" set to false.
$vbox->pack_start ($menubar, FALSE, FALSE, 0);
# next, the content area expands to take all remaining vertical
space.
$vbox->pack_start ($contents, TRUE, TRUE, 0);
# finally, the status bar, packed just like the menu bar.
$vbox->pack_start ($statusbar, FALSE, FALSE, 0);
This stuff is described in the gtk+ tutorial, but i find it's best to
play around with these options in the glade UI designer to get a feel
for what they do.
Here's the "Packing Widgets" section of the gtk2-perl tutorial:
http://gtk2-perl.sourceforge.net/doc/gtk2-perl-tut/ch-PackingWidgets.html
and the original C version for comparison.
http://library.gnome.org/devel/gtk-tutorial/stable/c355.html
--
If the monkey could type one keystroke every nanosecond, the expected
waiting time until the monkey types out Hamlet is so long that the
estimated age of the universe is insignificant by comparison ... this
is not a practical method for writing plays.
-- Gian-Carlo Rota
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]