Hello.
As promised, I wrote a simplistic sample application that sports some packing methods.
Code:
#include <gtk/gtk.h>
int
main( int argc,
char **argv )
{
GtkWidget *window;
GtkWidget *align;
GtkWidget *button;
GtkWidget *label;
GtkWidget *table;
gtk_init( &argc, &argv );
window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
g_signal_connect( G_OBJECT( window ), "destroy",
G_CALLBACK( gtk_main_quit ), NULL );
table = gtk_table_new( 10, 2, FALSE );
gtk_container_add( GTK_CONTAINER( window ), table );
/* First button */
label = gtk_label_new( "This button has 15px margin\n"
"on all sides." );
gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1, GTK_FILL,
GTK_SHRINK, 0, 0 );
button = gtk_button_new_with_label( "Button 1" );
gtk_container_set_border_width( GTK_CONTAINER( button ), 15 );
gtk_table_attach( GTK_TABLE( table ), button, 1, 2, 0, 1, GTK_SHRINK,
GTK_SHRINK, 0, 0 );
/* Second button */
label = gtk_label_new( "Label inside this button has 0px top, 5px right,\n"
"10px botton and 15px left padding." );
gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2, GTK_FILL,
GTK_SHRINK, 0, 0 );
button = gtk_button_new();
gtk_table_attach( GTK_TABLE( table ), button, 1, 2, 1, 2, GTK_SHRINK,
GTK_SHRINK, 0, 0 );
align = gtk_alignment_new( 0, 0, 0, 0 );
gtk_alignment_set_padding( GTK_ALIGNMENT( align ), 0, 10, 15, 5 );
gtk_container_add( GTK_CONTAINER( button ), align );
label = gtk_label_new( "Button 2" );
gtk_container_add( GTK_CONTAINER( align ), label );
gtk_widget_show_all( window );
gtk_main();
return( 0 );
}