/* Built with: gcc -o Corrupt -g `pkg-config --cflags gtk+-2.0` Corrupt.c `pkg-config --libs gtk+-2.0` */ #include #include #define BCOLS 8 #define BROWS 6 GtkWidget *buttons[BROWS * BCOLS]; GtkWidget *kframe; GtkWidget *labels[8]; static gboolean frame_interpose(GtkWidget *widget, GdkEvent *event, gpointer user_data) { if (event->type == GDK_CONFIGURE || event->type == GDK_EXPOSE) { return(FALSE); } return(FALSE); } static void make_ktable(GtkWidget *frame, GtkWidget *vbox) { int i, j, n; GtkStyle *style; GtkWidget *table = gtk_table_new(BROWS, BCOLS, FALSE); gtk_widget_ref(table); gtk_widget_show(table); gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); for (i = 0; i < BCOLS; i++) { for (j = 0; j < BROWS; j++) { n = j*BCOLS + i; buttons[n] = gtk_button_new_with_label("Label"); gtk_widget_ref(buttons[n]); gtk_widget_show(buttons[n]); gtk_table_attach(GTK_TABLE(table), buttons[n], i, i+1, j, j+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 4, 4); gtk_widget_set_usize(buttons[n], 60, 28); } } } void create_kframe() { char data[12]; int i, k; GtkWidget *hbox, *vbox; kframe = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_object_set_data(GTK_OBJECT(kframe), "kframe", kframe); gtk_window_set_policy(GTK_WINDOW(kframe), TRUE, TRUE, TRUE); vbox = gtk_vbox_new(FALSE, 0); gtk_widget_ref(vbox); gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(kframe), vbox); labels[0] = gtk_label_new(""); gtk_label_set_text(GTK_LABEL(labels[0]), "0.00"); gtk_widget_ref(labels[0]); gtk_widget_show(labels[0]); gtk_box_pack_start(GTK_BOX(vbox), labels[0], TRUE, TRUE, 0); gtk_misc_set_alignment(GTK_MISC(labels[0]), 1.0, 0.5); gtk_misc_set_padding(GTK_MISC(labels[0]), 5, 5); gtk_widget_set_usize(labels[0], -2, 80); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_ref(hbox); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); gtk_widget_realize(kframe); gtk_window_set_title(GTK_WINDOW(kframe), "Corrupt"); for (i = 1; i < 8; i++) { labels[i] = gtk_label_new(""); gtk_label_set_text(GTK_LABEL(labels[i]), "BASIC"); gtk_widget_ref(labels[i]); (void) sprintf(data, "label%1d", i); gtk_widget_show(labels[i]); gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); gtk_misc_set_padding(GTK_MISC(labels[i]), 5, 0); } make_ktable(kframe, vbox); #ifdef WANTED gdk_window_set_events(kframe->window, GDK_ALL_EVENTS_MASK); #endif /*WANTED*/ gtk_signal_connect(GTK_OBJECT(kframe), "event", GTK_SIGNAL_FUNC(frame_interpose), NULL); } int main(int argc, char **argv) { bindtextdomain("Corrupt", "/usr/local/lib/locale"); textdomain("Corrupt"); gtk_set_locale(); gtk_init(&argc, &argv); create_kframe(); gtk_widget_