3.5. Using Tables

#!/usr/cogent/bin/gamma

/* Example: Packing Widgets using Tables.
 * Another useful way to control widget layout is
 * with tables. This example packs three buttons
 * into a table.
 */

/* Initialize Cogent interprocess communication.*/
init_ipc("a", "aq");

/* Make a simple function for the buttons to call. */
function print_out (label)
{
  princ(string(label," was pressed.\n"));
}

/* Create a window.*/
window = new(GtkWindow);
window.set_border_width(20);
window.set_default_size(200,100);
window.set_title("Table Packing Example");

/* Make a 2 X 2 table, set row and column spacings,
 * and add it to the window.
 */
table = new(GtkTable);
table.n_rows = 2;
table.n_columns = 2;
table.set_col_spacings(30);
table.set_row_spacings(10);
window.add(table);

/* Make a button and put it in the upper left cell
 * of the table.
 */
button1 = new(GtkButton);
button1.label = "Button 1";
button1.signal("clicked",#print_out(button1.label));
table.attach_defaults(button1, 0, 1, 0, 1);

/* Make another button for the upper right cell.*/
button2 = new(GtkButton);
button2.label = "Button 2";
button2.signal("clicked",#print_out(button2.label));
table.attach_defaults(button2, 1, 2, 0, 1);

/* Make a "Quit" button that spans both bottom cells 
 * of the table.
 */
button_q = new(GtkButton);
button_q.label = "Quit";
button_q.signal("clicked",#gtk_main_quit());
table.attach_defaults(button_q, 0, 2, 1, 2);

/* Show everything and enter the GTK main processing loop.*/
window.show_all();
gtk_main();