|
GTK+ example: Switch |
#include <gtk/gtk.h>
static void
switch_active (GtkSwitch *myswitch, GParamSpec *pspec, GtkLabel *label)
{
if (gtk_switch_get_active (myswitch)){
gtk_label_set_text (label, "Active");
}else{
gtk_label_set_text (label, "In-Active");
}
}
int main( int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *switch1;
GtkWidget *switch2;
GObject *context_object;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 400, 250);
gtk_window_set_title(GTK_WINDOW(window), "Linux-buddy.blogspot.com");
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
//Create labels
label1 = gtk_label_new("label1");
gtk_box_pack_start(GTK_BOX(box), label1, FALSE, FALSE, 3);
label2 = gtk_label_new("label2");
gtk_box_pack_start(GTK_BOX(box), label2, FALSE, FALSE, 3);
//Create Switchs
//switch1 with default actived
switch1 = gtk_switch_new ();
gtk_switch_set_active (GTK_SWITCH (switch1), TRUE);
gtk_box_pack_start(GTK_BOX(box), switch1, FALSE, FALSE, 3);
//switch2 with default in-actived
switch2 = gtk_switch_new ();
gtk_switch_set_active (GTK_SWITCH (switch2), FALSE);
gtk_box_pack_start(GTK_BOX(box), switch2, FALSE, FALSE, 3);
g_signal_connect(GTK_SWITCH (switch1), "notify::active",
G_CALLBACK (switch_active), label1);
g_signal_connect(GTK_SWITCH (switch2), "notify::active",
G_CALLBACK (switch_active), label2);
//Connects GCallback function gtk_main_quit to "destroy" signal for "window"
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_container_add(GTK_CONTAINER(window), box);
gtk_widget_show_all(window);
gtk_main();
return 0;
}