1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| typedef struct
{
GtkWidget *user_name;
GtkWidget *password;
} MyWidgets;
static void login()
{
GtkWidget *login_window;
GtkWidget *login_button;
GtkWidget *fixed;
GtkWidget *luser;
GtkWidget *lpass;
MyWidgets *widgets;
/* allocate space for MyWidgets struct */
widgets = g_slice_new (MyWidgets);
/* Create login window */
login_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (login_window), 10);
gtk_window_set_skip_taskbar_hint(GTK_WINDOW (login_window), TRUE);
/* Signal handling for close button */
g_signal_connect (G_OBJECT (login_window), "destroy",
G_CALLBACK (gtk_widget_destroy), G_OBJECT(login_window));
/* Create new fixed container */
fixed = gtk_fixed_new();
/* Add fixed container to window container */
login_button = gtk_button_new_with_label ("Login");
luser = gtk_label_new("Username");
lpass = gtk_label_new("Password");
widgets->user_name = gtk_entry_new();
widgets->password = gtk_entry_new();
g_signal_connect (G_OBJECT (login_button), "clicked",
G_CALLBACK (check_id), widgets);
gtk_entry_set_visibility(GTK_ENTRY (widgets->password),FALSE);
// Add widgets to their containers
gtk_container_add(GTK_CONTAINER(login_window), GTK_WIDGET(fixed));
gtk_fixed_put(GTK_FIXED(fixed), luser,1,1);
gtk_fixed_put(GTK_FIXED(fixed), lpass,1,40);
gtk_fixed_put(GTK_FIXED(fixed), widgets->user_name,100,1);
gtk_fixed_put(GTK_FIXED(fixed), widgets->password,100,40);
gtk_fixed_put(GTK_FIXED(fixed), login_button,100,80);
// Display Widgets
gtk_widget_show(fixed);
gtk_widget_show(luser);
gtk_widget_show(lpass);
gtk_widget_show(widgets->user_name);
gtk_widget_show(widgets->password);
gtk_widget_show(login_button);
gtk_widget_show(login_window);
gtk_grab_add(login_window);
} |