#include "geotrace.h" // vars for main window GtkWidget *window; GtkWidget *vbox; GtkWidget *menubar; GtkWidget *status_bar; GtkWidget *file_item; GtkWidget *file_menu; GtkWidget *options_item; GtkWidget *exit_item; GtkWidget *about_item; GtkWidget *hbox; GtkWidget *host_label; GtkWidget *host_entry; GtkWidget *host_combo; GtkWidget *trace_button; GtkWidget *separator1; GtkWidget *separator2; GtkWidget *map_label; GtkWidget *combo_entry; GtkWidget *map_combo; GtkWidget *map_change_button; GtkWidget *latlon_label; GtkWidget *latlon_label2; GtkWidget *vpaned; GtkWidget *scrolled_window; GtkWidget *drawing_area; GtkWidget *scrolled_window2; GtkWidget *trace_list; GtkWidget *hop_label; GtkWidget *ip_label; GtkWidget *dns_label; GtkWidget *location_label; GtkWidget *rtt_label; // vars for options window GtkWidget *options_window; GtkWidget *options_vbox; GtkWidget *options_apply_button; GtkWidget *options_cancel_button; GtkWidget *options_button_box; // traceroute options notebook GtkWidget *options_notebook; GtkWidget *trace_options_vbox; GtkWidget *traceroute_options_label; GtkWidget *trace_options_hbox1; GtkWidget *executable_label; GtkWidget *trace_path_entry; GtkWidget *trace_path_button; GtkWidget *trace_options_hbox2; GtkWidget *max_ttl_label; GtkObject *max_ttl_spinbutton_adj; GtkWidget *max_ttl_spinbutton; GtkWidget *resolve_checkbox; GtkWidget *timeout_label; GtkObject *timeout_spinbutton_adj; GtkWidget *timeout_spinbutton; GtkWidget *notebook_trace_label; GtkWidget *empty_notebook_page; // map notebook GtkWidget *map_options_vbox; GtkWidget *map_options_label; GtkWidget *map_options_hbox1; GtkWidget *map_dir_path_label; GtkWidget *map_dir_path_entry; GtkWidget *map_dir_path_button; GtkWidget *map_options_hbox2; GtkWidget *start_map_label; GtkWidget *start_map_combo; GtkWidget *start_map_entry; GtkWidget *notebook_maps_label; // display notebook GtkWidget *display_options_vbox; GtkWidget *display_options_label; GtkWidget *display_options_hbox1; GtkWidget *notebook_display_label; GtkWidget *display_color_label; GtkWidget *display_color_label2; GtkWidget *display_color_select_button; GtkWidget *line_width_label; GtkObject *line_width_spinbutton_adj; GtkWidget *line_width_spinbutton; // vars for traceroute file selection GtkWidget*trace_selection_dialog; GtkWidget*trace_select_ok_button; GtkWidget*trace_select_cancel_button; // vars for about window GtkWidget *about_label; GtkWidget *about_window; // vars for popup window GtkWidget *popup_label; GtkWidget *popup_window; // vars for color selection dialog GtkWidget *color_select_dialog; GtkWidget *color_select_ok_button; GtkWidget *color_select_cancel_button; char *popup_msg; // creates main window void create_window(void) { // create main window window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW(window),800,600); gtk_window_set_title (GTK_WINDOW(window),GEO_TITLEBAR_STR); gtk_signal_connect (GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC (delete_event), NULL); gtk_signal_connect (GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC (destroy), NULL); // create vbox vbox = gtk_vbox_new (FALSE,0); gtk_widget_show (vbox); gtk_container_add (GTK_CONTAINER(window),vbox); // create menu file_menu = gtk_menu_new(); options_item = gtk_menu_item_new_with_label("Options"); exit_item = gtk_menu_item_new_with_label("Exit"); gtk_menu_append(GTK_MENU(file_menu),options_item); gtk_menu_append(GTK_MENU(file_menu),exit_item); gtk_signal_connect_object(GTK_OBJECT(options_item),"activate", GTK_SIGNAL_FUNC(options_clicked),NULL); gtk_signal_connect_object(GTK_OBJECT(exit_item),"activate", GTK_SIGNAL_FUNC(destroy),NULL); gtk_widget_show(options_item); gtk_widget_show(exit_item); about_item = gtk_menu_item_new_with_label("About"); gtk_signal_connect_object(GTK_OBJECT(about_item),"activate", GTK_SIGNAL_FUNC(about_clicked),NULL); gtk_widget_show(about_item); menubar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE,FALSE,0); gtk_widget_show(menubar); file_item = gtk_menu_item_new_with_label("File"); gtk_widget_show(file_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item),file_menu); gtk_menu_bar_append(GTK_MENU_BAR(menubar),file_item); gtk_menu_item_right_justify(GTK_MENU_ITEM (about_item)); gtk_menu_bar_append(GTK_MENU_BAR(menubar),about_item); // create host/trace/maps row hbox = gtk_hbox_new(FALSE,0); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,TRUE,0); gtk_widget_set_usize(hbox,-2,25); host_label = gtk_label_new("Host:"); gtk_widget_show(host_label); gtk_box_pack_start(GTK_BOX(hbox),host_label,FALSE,FALSE,5); host_combo = gtk_combo_new(); gtk_widget_show(host_combo); gtk_box_pack_start(GTK_BOX(hbox),host_combo,FALSE,FALSE,5); gtk_container_set_border_width(GTK_CONTAINER(host_combo),5); host_entry = GTK_COMBO(host_combo)->entry; gtk_widget_show(host_entry); trace_button = gtk_button_new_with_label ("Trace"); gtk_widget_show(trace_button); gtk_box_pack_start(GTK_BOX(hbox),trace_button,FALSE,FALSE,5); gtk_container_set_border_width(GTK_CONTAINER(trace_button),3); gtk_signal_connect(GTK_OBJECT(trace_button),"clicked", GTK_SIGNAL_FUNC(trace_button_clicked),NULL); separator1 = gtk_vseparator_new(); gtk_widget_show(separator1); gtk_box_pack_start(GTK_BOX(hbox),separator1,FALSE,TRUE,5); map_label = gtk_label_new("Map:"); gtk_widget_show(map_label); gtk_box_pack_start(GTK_BOX(hbox),map_label,FALSE,FALSE,5); map_combo = gtk_combo_new(); gtk_widget_show(map_combo); gtk_box_pack_start(GTK_BOX(hbox),map_combo,FALSE,FALSE,5); gtk_container_set_border_width(GTK_CONTAINER(map_combo),5); map_combo_entry = GTK_COMBO(map_combo)->entry; gtk_widget_show(map_combo_entry); gtk_entry_set_editable(GTK_ENTRY(map_combo_entry),FALSE); gtk_widget_set_sensitive(map_combo_entry,FALSE); map_change_button = gtk_button_new_with_label ("Change"); gtk_widget_show(map_change_button); gtk_box_pack_start(GTK_BOX(hbox),map_change_button,FALSE,FALSE,5); gtk_container_set_border_width(GTK_CONTAINER(map_change_button),3); gtk_signal_connect(GTK_OBJECT(map_change_button),"clicked", GTK_SIGNAL_FUNC(map_combo_entry_changed),NULL); separator2 = gtk_vseparator_new(); gtk_widget_show(separator2); gtk_box_pack_start(GTK_BOX(hbox),separator2,FALSE,TRUE,5); latlon_label2 = gtk_label_new("Lat/Lon:"); gtk_widget_show(latlon_label2); gtk_box_pack_start(GTK_BOX(hbox),latlon_label2,FALSE,FALSE,5); latlon_label = gtk_label_new(""); gtk_widget_show(latlon_label); gtk_box_pack_start(GTK_BOX(hbox),latlon_label,FALSE,FALSE,5); // create vpane/drawarea vpaned = gtk_vpaned_new(); gtk_widget_show(vpaned); gtk_box_pack_start(GTK_BOX(vbox),vpaned,TRUE,TRUE,0); scrolled_window = gtk_scrolled_window_new(NULL,NULL); gtk_widget_show (scrolled_window); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); gtk_paned_pack1(GTK_PANED(vpaned),scrolled_window,FALSE,TRUE); gtk_widget_set_usize(scrolled_window,800,400); drawing_area = gtk_drawing_area_new(); gtk_widget_show(drawing_area); gtk_drawing_area_size(GTK_DRAWING_AREA (drawing_area), 792,392); gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event", (GtkSignalFunc) expose_event, NULL); gtk_signal_connect (GTK_OBJECT (drawing_area), "motion_notify_event" ,(GtkSignalFunc) on_mouse_move,NULL); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), drawing_area); gtk_widget_set_events(drawing_area,GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK); scrolled_window2 = gtk_scrolled_window_new(NULL,NULL); gtk_widget_show (scrolled_window2); gtk_paned_pack2(GTK_PANED(vpaned),scrolled_window2,TRUE,TRUE); trace_list = gtk_clist_new(5); gtk_widget_show(trace_list); gtk_container_add(GTK_CONTAINER(scrolled_window2),trace_list); gtk_clist_set_column_width(GTK_CLIST(trace_list),0,20); gtk_clist_set_column_width(GTK_CLIST(trace_list),1,110); gtk_clist_set_column_width(GTK_CLIST(trace_list),2,239); gtk_clist_set_column_width(GTK_CLIST(trace_list),3,314); gtk_clist_set_column_width(GTK_CLIST(trace_list),4,58); gtk_clist_column_titles_show(GTK_CLIST(trace_list)); hop_label = gtk_label_new("Hop"); gtk_widget_show(hop_label); gtk_clist_set_column_widget(GTK_CLIST(trace_list),0,hop_label); ip_label = gtk_label_new("IP"); gtk_widget_show(ip_label); gtk_clist_set_column_widget(GTK_CLIST(trace_list),1,ip_label); dns_label = gtk_label_new("DNS"); gtk_widget_show(dns_label); gtk_clist_set_column_widget(GTK_CLIST(trace_list),2,dns_label); location_label = gtk_label_new("Location"); gtk_widget_show(location_label); gtk_clist_set_column_widget(GTK_CLIST(trace_list),3,location_label); rtt_label = gtk_label_new("RTT (ms)"); gtk_widget_show(rtt_label); gtk_clist_set_column_widget(GTK_CLIST(trace_list),4,rtt_label); gtk_clist_column_titles_passive(GTK_CLIST(trace_list)); status_bar = gtk_statusbar_new(); gtk_widget_show(status_bar); gtk_box_pack_start(GTK_BOX(vbox),status_bar,FALSE,FALSE,0); } void create_options_window() { options_window = gtk_window_new (GTK_WINDOW_DIALOG); gtk_window_set_default_size (GTK_WINDOW(options_window),350,150); gtk_window_set_title (GTK_WINDOW(options_window),"Options"); gtk_signal_connect (GTK_OBJECT(options_window), "destroy", GTK_SIGNAL_FUNC (generic_destroy), NULL); options_vbox = gtk_vbox_new(FALSE,0); gtk_widget_show (options_vbox); gtk_container_add(GTK_CONTAINER(options_window),options_vbox); // trace options notebook options_notebook = gtk_notebook_new(); gtk_widget_show (options_notebook); gtk_container_add(GTK_CONTAINER(options_vbox),options_notebook); trace_options_vbox = gtk_vbox_new(FALSE,0); gtk_widget_show (trace_options_vbox); gtk_container_add(GTK_CONTAINER(options_notebook),trace_options_vbox); traceroute_options_label = gtk_label_new("Traceroute Options"); gtk_widget_show (traceroute_options_label); gtk_box_pack_start(GTK_BOX(trace_options_vbox),traceroute_options_label,FALSE,FALSE,0); gtk_widget_set_usize(traceroute_options_label,-2,43); trace_options_hbox1 = gtk_hbox_new(FALSE,0); gtk_widget_show (trace_options_hbox1); gtk_box_pack_start(GTK_BOX(trace_options_vbox),trace_options_hbox1,FALSE,FALSE,0); gtk_widget_set_usize(trace_options_hbox1,-2,35); executable_label = gtk_label_new("Executable:"); gtk_widget_show(executable_label); gtk_box_pack_start(GTK_BOX(trace_options_hbox1),executable_label,FALSE,FALSE,0); trace_path_entry = gtk_entry_new(); gtk_widget_show(trace_path_entry); gtk_box_pack_start(GTK_BOX(trace_options_hbox1),trace_path_entry,FALSE,FALSE,5); gtk_widget_set_usize(trace_path_entry,201,-2); trace_path_button = gtk_button_new_with_label("Browse"); gtk_widget_show(trace_path_button); gtk_box_pack_start(GTK_BOX(trace_options_hbox1),trace_path_button,FALSE,FALSE,5); gtk_widget_set_usize(trace_path_button,65,23); gtk_container_set_border_width(GTK_CONTAINER(trace_path_button),7); gtk_signal_connect(GTK_OBJECT(trace_path_button),"clicked", GTK_SIGNAL_FUNC(trace_browse_button_clicked),NULL); trace_options_hbox2 = gtk_hbox_new(FALSE,0); gtk_widget_show (trace_options_hbox2); gtk_box_pack_start(GTK_BOX(trace_options_vbox),trace_options_hbox2,FALSE,FALSE,0); gtk_widget_set_usize(trace_options_hbox2,-2,35); max_ttl_label = gtk_label_new("Max TTL:"); gtk_widget_show(max_ttl_label); gtk_box_pack_start(GTK_BOX(trace_options_hbox2),max_ttl_label,FALSE,FALSE,5); max_ttl_spinbutton_adj = gtk_adjustment_new(30,1,50,1,10,10); max_ttl_spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(max_ttl_spinbutton_adj),1,0); gtk_widget_show (max_ttl_spinbutton); gtk_box_pack_start(GTK_BOX(trace_options_hbox2),max_ttl_spinbutton,FALSE,FALSE,5); gtk_widget_set_usize(max_ttl_spinbutton,-2,22); timeout_label = gtk_label_new("Timeout:"); gtk_widget_show(timeout_label); gtk_box_pack_start(GTK_BOX(trace_options_hbox2),timeout_label,FALSE,FALSE,0); timeout_spinbutton_adj = gtk_adjustment_new(5,2,50,1,10,10); timeout_spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(timeout_spinbutton_adj),1,0); gtk_widget_show (timeout_spinbutton); gtk_box_pack_start(GTK_BOX(trace_options_hbox2),timeout_spinbutton,FALSE,FALSE,5); gtk_widget_set_usize(timeout_spinbutton,-2,22); resolve_checkbox = gtk_check_button_new_with_label("Resolve name"); gtk_widget_show (resolve_checkbox); gtk_box_pack_start(GTK_BOX(trace_options_hbox2),resolve_checkbox,FALSE,FALSE,5); notebook_trace_label = gtk_label_new("Traceroute"); gtk_widget_show (notebook_trace_label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(options_notebook),gtk_notebook_get_nth_page(GTK_NOTEBOOK(options_notebook),0),notebook_trace_label); // map options notebook map_options_vbox = gtk_vbox_new(FALSE,0); gtk_widget_show (map_options_vbox); gtk_container_add(GTK_CONTAINER(options_notebook),map_options_vbox); map_options_label = gtk_label_new("Map Options"); gtk_widget_show (map_options_label); gtk_box_pack_start(GTK_BOX(map_options_vbox),map_options_label,FALSE,FALSE,0); gtk_widget_set_usize(map_options_label,-2,43); map_options_hbox1 = gtk_hbox_new(FALSE,0); gtk_widget_show (map_options_hbox1); gtk_box_pack_start(GTK_BOX(map_options_vbox),map_options_hbox1,FALSE,FALSE,0); gtk_widget_set_usize(map_options_hbox1,-2,35); map_dir_path_label = gtk_label_new("Maps Dir:"); gtk_widget_show(map_dir_path_label); gtk_box_pack_start(GTK_BOX(map_options_hbox1),map_dir_path_label,FALSE,FALSE,0); map_dir_path_entry = gtk_entry_new(); gtk_widget_show(map_dir_path_entry); gtk_box_pack_start(GTK_BOX(map_options_hbox1),map_dir_path_entry,FALSE,FALSE,5); gtk_widget_set_usize(map_dir_path_entry,201,-2); map_dir_path_button = gtk_button_new_with_label("Browse"); gtk_widget_show(map_dir_path_button); gtk_box_pack_start(GTK_BOX(map_options_hbox1),map_dir_path_button,FALSE,FALSE,5); gtk_widget_set_usize(map_dir_path_button,65,23); gtk_container_set_border_width(GTK_CONTAINER(map_dir_path_button),7); gtk_signal_connect(GTK_OBJECT(map_dir_path_button),"clicked", GTK_SIGNAL_FUNC(maps_browse_button_clicked),NULL); map_options_hbox2 = gtk_hbox_new(FALSE,0); gtk_widget_show (map_options_hbox2); gtk_box_pack_start(GTK_BOX(map_options_vbox),map_options_hbox2,FALSE,FALSE,0); gtk_widget_set_usize(map_options_hbox2,-2,35); start_map_label = gtk_label_new("Start map:"); gtk_widget_show(start_map_label); gtk_box_pack_start(GTK_BOX(map_options_hbox2),start_map_label,FALSE,FALSE,0); start_map_combo = gtk_combo_new(); gtk_widget_show(start_map_combo); gtk_box_pack_start(GTK_BOX(map_options_hbox2),start_map_combo,FALSE,FALSE,5); gtk_container_set_border_width(GTK_CONTAINER(start_map_combo),5); start_map_entry = GTK_COMBO(start_map_combo)->entry; gtk_widget_show(start_map_entry); gtk_entry_set_editable(GTK_ENTRY(map_combo_entry),FALSE); gtk_widget_set_sensitive(start_map_entry,FALSE); notebook_maps_label = gtk_label_new("Maps"); gtk_widget_show (notebook_maps_label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(options_notebook),gtk_notebook_get_nth_page(GTK_NOTEBOOK(options_notebook),1),notebook_maps_label); // display options notebook display_options_vbox = gtk_vbox_new(FALSE,0); gtk_widget_show (display_options_vbox); gtk_container_add(GTK_CONTAINER(options_notebook),display_options_vbox); display_options_label = gtk_label_new("Display Options"); gtk_widget_show (display_options_label); gtk_box_pack_start(GTK_BOX(display_options_vbox),display_options_label,FALSE,FALSE,0); gtk_widget_set_usize(display_options_label,-2,43); display_options_hbox1 = gtk_hbox_new(FALSE,0); gtk_widget_show (display_options_hbox1); gtk_box_pack_start(GTK_BOX(display_options_vbox),display_options_hbox1,FALSE,FALSE,0); gtk_widget_set_usize(display_options_hbox1,-2,35); display_color_label = gtk_label_new("Line color:"); gtk_widget_show(display_color_label); gtk_box_pack_start(GTK_BOX(display_options_hbox1),display_color_label,FALSE,FALSE,0); display_color_label2 = gtk_event_box_new(); gtk_widget_show(display_color_label2); gtk_box_pack_start(GTK_BOX(display_options_hbox1),display_color_label2,FALSE,FALSE,5); gtk_widget_set_usize(display_color_label2,30,20); display_color_select_button = gtk_button_new_with_label("Select"); gtk_widget_show(display_color_select_button); gtk_box_pack_start(GTK_BOX(display_options_hbox1),display_color_select_button,FALSE,FALSE,5); gtk_widget_set_usize(display_color_select_button,65,23); gtk_container_set_border_width(GTK_CONTAINER(display_color_select_button),7); gtk_signal_connect(GTK_OBJECT(display_color_select_button),"clicked", GTK_SIGNAL_FUNC(display_color_select_clicked),NULL); line_width_label = gtk_label_new("Line Width:"); gtk_widget_show(line_width_label); gtk_box_pack_start(GTK_BOX(display_options_hbox1),line_width_label,FALSE,FALSE,5); line_width_spinbutton_adj = gtk_adjustment_new(1,1,10,1,10,10); line_width_spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(line_width_spinbutton_adj),1,0); gtk_widget_show (line_width_spinbutton); gtk_box_pack_start(GTK_BOX(display_options_hbox1),line_width_spinbutton,FALSE,FALSE,5); gtk_widget_set_usize(line_width_spinbutton,-2,22); notebook_display_label = gtk_label_new("Display"); gtk_widget_show (notebook_display_label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(options_notebook),gtk_notebook_get_nth_page(GTK_NOTEBOOK(options_notebook),2),notebook_display_label); // button box options_button_box = gtk_hbox_new(FALSE,0); gtk_widget_show (options_button_box); gtk_box_pack_start(GTK_BOX(options_vbox),options_button_box,FALSE,FALSE,0); gtk_widget_set_usize(options_button_box,-2,35); options_apply_button = gtk_button_new_with_label("Apply"); gtk_widget_show(options_apply_button); gtk_box_pack_start(GTK_BOX(options_button_box),options_apply_button,TRUE,FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(options_apply_button),5); gtk_signal_connect(GTK_OBJECT(options_apply_button),"clicked", GTK_SIGNAL_FUNC(options_apply_button_clicked),NULL); options_cancel_button = gtk_button_new_with_label("Cancel"); gtk_widget_show(options_cancel_button); gtk_box_pack_start(GTK_BOX(options_button_box),options_cancel_button,TRUE,FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(options_cancel_button),5); gtk_signal_connect(GTK_OBJECT(options_cancel_button),"clicked", GTK_SIGNAL_FUNC(options_cancel_button_clicked),NULL); } void create_trace_select_dialog() { trace_selection_dialog = gtk_file_selection_new("Select file"); gtk_container_set_border_width (GTK_CONTAINER(trace_selection_dialog),10); trace_select_ok_button = GTK_FILE_SELECTION(trace_selection_dialog)->ok_button; gtk_widget_show (trace_select_ok_button); gtk_signal_connect(GTK_OBJECT(trace_select_ok_button),"clicked", GTK_SIGNAL_FUNC(browse_ok_button_clicked),NULL); trace_select_cancel_button = GTK_FILE_SELECTION(trace_selection_dialog)->cancel_button; gtk_widget_show (trace_select_cancel_button); gtk_signal_connect(GTK_OBJECT(trace_select_cancel_button),"clicked", GTK_SIGNAL_FUNC(browse_cancel_button_clicked),NULL); } void create_about_window() { about_window = gtk_window_new (GTK_WINDOW_DIALOG); gtk_window_set_default_size (GTK_WINDOW(about_window),150,100); gtk_window_set_title (GTK_WINDOW(about_window),"About GeoTrace"); gtk_signal_connect (GTK_OBJECT(about_window), "destroy", GTK_SIGNAL_FUNC (generic_destroy), NULL); about_label = gtk_label_new(ABOUT_STRING); gtk_widget_show(about_label); gtk_container_add(GTK_CONTAINER(about_window),about_label); } void create_popup_window() { popup_window = gtk_window_new (GTK_WINDOW_DIALOG); gtk_window_set_default_size (GTK_WINDOW(popup_window),150,50); gtk_window_set_title (GTK_WINDOW(popup_window),"Warning"); gtk_signal_connect (GTK_OBJECT(popup_window), "destroy", GTK_SIGNAL_FUNC (generic_destroy), NULL); popup_label = gtk_label_new(popup_msg); gtk_widget_show(popup_label); gtk_container_add(GTK_CONTAINER(popup_window),popup_label); } void create_color_select_dialog() { color_select_dialog = gtk_color_selection_dialog_new("Select Color"); color_select_ok_button = GTK_COLOR_SELECTION_DIALOG(color_select_dialog)->ok_button; gtk_widget_show(color_select_ok_button); color_select_cancel_button = GTK_COLOR_SELECTION_DIALOG(color_select_dialog)->cancel_button; gtk_widget_show(color_select_cancel_button); gtk_signal_connect (GTK_OBJECT(color_select_dialog),"destroy", GTK_SIGNAL_FUNC (generic_destroy), NULL); gtk_signal_connect (GTK_OBJECT(color_select_cancel_button),"clicked", GTK_SIGNAL_FUNC (color_select_destroy), NULL); gtk_signal_connect (GTK_OBJECT(color_select_ok_button),"clicked", GTK_SIGNAL_FUNC (color_select_ok_clicked), NULL); gtk_widget_show (color_select_dialog); }