#include #include #include #include #include #include "multi.c" void exit_pgm(GtkWidget *widget, GtkWidget *window) { g_print("\n exit program invoked"); gtk_widget_destroy(window); gtk_main_quit (); } void print(GtkWidget *press, GdkEventButton *event, gpointer user_data) { GtkWidget *button; GtkWidget *text; GdkFont *font; gchar udata[200]; strcpy(udata, user_data); text = gtk_text_new(NULL, NULL); gtk_text_set_editable(GTK_TEXT(text), FALSE); font = gdk_font_load ("-cronyx-fixed-bold-r-normal-*-*-120-*-*-c-*-koi8-r"); gtk_text_insert(GTK_TEXT(text), font, &text->style->black, NULL, udata, -1); gtk_table_attach(GTK_TABLE(table), text, 1, 2, 0, 1, GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show(text); gtk_widget_realize(text); } int main(int argc, char *argv[]) { GtkWidget *main_win, *text, *fixed_cont_dummy; GtkWidget *quit_button, *quitbox, *hor_box; GtkWidget *ver_box, *hor_sep, *display_label, *text_label; gtk_set_locale(); gtk_init(&argc, &argv); gtk_rc_parse("testgtkrc1"); target_info(); main_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_name(main_win, "main window"); gtk_window_set_title(GTK_WINDOW(main_win), "GRAPHICS DISPLAY SERVER"); gtk_container_set_border_width(GTK_CONTAINER(main_win), 10); gtk_window_set_default_size(GTK_WINDOW(main_win), 1015, 740); gtk_signal_connect(GTK_OBJECT(main_win), "delete_event", GTK_SIGNAL_FUNC(gtk_dialog_win), main_win); gtk_signal_connect (GTK_OBJECT (main_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &main_win); gtk_timeout_add(500, display_fun, NULL); ver_box = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(main_win), ver_box); gtk_widget_show(ver_box); hor_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(ver_box), hor_box, FALSE, TRUE, 5); gtk_widget_show(hor_box); display_label = gtk_label_new("IMAGE DISPLAY"); gtk_box_pack_start(GTK_BOX(hor_box), display_label, FALSE, FALSE, 0); gtk_widget_show(display_label); text_label = gtk_label_new("TEXT DISPLAY"); gtk_box_pack_end(GTK_BOX(hor_box), text_label, FALSE, FALSE, 0); gtk_widget_show(text_label); table = gtk_table_new(1, 2, FALSE); gtk_widget_set_usize(GTK_WIDGET(table), 700, 650); gtk_box_pack_start(GTK_BOX(ver_box), table, FALSE, TRUE, 5); gtk_widget_show(table); fixed_cont_dummy = gtk_fixed_new(); gtk_widget_set_usize(GTK_WIDGET(fixed_cont_dummy), 675, 650); gtk_container_set_border_width(GTK_CONTAINER(fixed_cont_dummy), 20); gtk_table_attach_defaults(GTK_TABLE(table), fixed_cont_dummy, 0, 1, 0, 1); gtk_widget_show(fixed_cont_dummy); text = gtk_text_new(NULL, NULL); gtk_table_attach(GTK_TABLE(table), text, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0); gtk_widget_show(text); hor_sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(ver_box), hor_sep, FALSE, TRUE, 5); gtk_widget_show(hor_sep); quitbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(quitbox); quit_button = gtk_button_new_with_label("Quit"); gtk_widget_show(quit_button); gtk_signal_connect_object(GTK_OBJECT(quit_button), "clicked", GTK_SIGNAL_FUNC(exit_pgm), GTK_OBJECT(main_win)); gtk_box_pack_start(GTK_BOX(quitbox), quit_button, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ver_box), quitbox, FALSE, FALSE, 0); gtk_widget_show(main_win); gtk_main(); return 0; } gint gtk_dialog_win(GtkWidget *window) { GtkWidget *dia_window, *ok, *cancel, *lab; dia_window = gtk_dialog_new(); /*actually the dialog window type is GTK_WINDOW_TOPLEVEL. but i have gone inside and changed it to GTK_WINDOW_DIALOG*/ GTK_DIALOG(dia_window)->window.type = GTK_WINDOW_DIALOG; gtk_widget_set_usize(GTK_WIDGET(dia_window), 125, 100); ok = gtk_button_new_with_label("Yes"); cancel = gtk_button_new_with_label("No"); lab = gtk_label_new("Are you sure"); gtk_window_set_title(GTK_WINDOW(dia_window), "Warning!"); gtk_widget_set_uposition(GTK_WIDGET(dia_window), 300, 250); gtk_container_set_border_width(GTK_CONTAINER(dia_window), 10); gtk_signal_connect(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(exit_pgm), window); gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", (GtkSignalFunc)gtk_widget_destroy, GTK_OBJECT(dia_window)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dia_window)->action_area), ok, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dia_window)->action_area), cancel, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dia_window)->vbox), lab, TRUE, TRUE, 0); gtk_widget_show(ok); gtk_widget_show(cancel); gtk_widget_show(lab); gtk_widget_show(dia_window); } int display_fun() { static int x = 0; static int y = 0; int rand_no; int j = 0; GtkWidget *fixed_cont; GtkWidget *image, *event_box; GdkPixmap *pixmap; GdkPixbuf *pixbuf; GdkBitmap *mask; fixed_cont = gtk_fixed_new(); gtk_widget_set_usize(GTK_WIDGET(fixed_cont), 675, 650); gtk_container_set_border_width(GTK_CONTAINER(fixed_cont), 20); gtk_table_attach_defaults(GTK_TABLE(table), fixed_cont, 0, 1, 0, 1); gtk_widget_show(fixed_cont); gtk_widget_show(table); for( count = 0; count < 205; count ++) { pixbuf = gdk_pixbuf_new_from_file(input[count].image); gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, &mask, 127); image = gtk_pixmap_new(pixmap, mask); event_box = gtk_event_box_new(); gtk_widget_set_usize(GTK_WIDGET(event_box), 60, 40); gtk_signal_connect(GTK_OBJECT(event_box),"button_press_event", GTK_SIGNAL_FUNC(print), input[count].info); gtk_container_add(GTK_CONTAINER(event_box),image); gtk_fixed_put(GTK_FIXED(fixed_cont), event_box, input[count].x + x, input[count].y + y); gtk_widget_show(image); gtk_widget_show(event_box); gtk_widget_show(fixed_cont); } x = x + 5; y = y + 5; init++; if(init == 8) { g_print("\n there has been 8 increments and now initialising x and y to 0"); x = 0; y = 0; init = 0; gtk_widget_destroy(image); gtk_widget_destroy(event_box); gtk_widget_destroy(fixed_cont); } }