This is my code:
Code:
int main (int argc, char *argv[]) {
GtkWidget *TopLevel;
GtkWidget *table;
GtkWidget *name, *email;
gtk_init (&argc, &argv);
/* TopLevel features */
TopLevel = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (TopLevel), "User Info");
gtk_window_set_position (GTK_WINDOW (TopLevel), GTK_WIN_POS_CENTER);
g_signal_connect (G_OBJECT (TopLevel), "destroy", G_CALLBACK (on_toplevel_destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (TopLevel), 5);
/* table creation */
table = gtk_table_new (2, 3, FALSE);
gtk_table_attach (GTK_TABLE (table), gtk_aligned_label ("Please fill the following form"), 0, 2, 0, 1, GTK_EXPAND, GTK_SHRINK, 0, 0); // (0, 0) (2, 1)
gtk_table_attach (GTK_TABLE (table), gtk_aligned_label ("Name"), 0, 1, 1, 2, GTK_EXPAND, GTK_SHRINK, 0, 0); // (0, 1) (1, 2)
name = gtk_entry_new ();
gtk_table_attach (GTK_TABLE (table), name, 1, 2, 1, 2, GTK_EXPAND, GTK_SHRINK | GTK_FILL, 0, 0); // (1,1) (2, 2)
gtk_table_attach (GTK_TABLE (table), gtk_aligned_label ("Email"), 0, 1, 2, 3, GTK_EXPAND, GTK_SHRINK, 0, 0); // (0, 2) (1, 3)
email = gtk_entry_new ();
gtk_table_attach (GTK_TABLE (table), email, 1, 2, 2, 3, GTK_EXPAND, GTK_SHRINK | GTK_FILL, 0, 0); // (1,2) (2, 3)
gtk_container_add (GTK_CONTAINER (TopLevel), table);
gtk_widget_show_all (TopLevel);
gtk_main ();
return 0;
}
callbacks:
Code:
GtkWidget *gtk_aligned_label (const gchar *string) {
GtkWidget *aligner;
aligner = gtk_alignment_new (0.0, 0.5, 0.0, 0.0);
gtk_container_add (GTK_CONTAINER (aligner), gtk_label_new (string));
return aligner;
}
My problem is that the table alignment is not showing as expected, see screenies:
Normal
Maximized
a) Normal state, labels aren't aligned to the left.
b) Maximized state labels aren't aligned to the left and how to expand the entry to can be larger as the window.
Thanks.