GtkWidget * create_main_window(void) { GtkWidget *notebook1; GtkWidget *frame3; GtkWidget *frame4; GtkWidget *hbox1; GtkWidget *vbox1; GtkWidget *scrolledwindow1; GtkWidget *node_label1; GtkWidget *node_label2; GtkWidget *node_label3; GtkWidget *node_label4; GtkWidget *node_label7; GtkWidget *node_label8; GtkWidget *node_label9; GtkWidget *mid_frame; GtkWidget *mpr_frame; GtkWidget *hna_frame; GtkWidget *mid_scrolledwindow; GtkWidget *mpr_scrolledwindow; GtkWidget *hna_scrolledwindow; GtkWidget *Main; GtkWidget *label_routes; GtkWidget *hbox2; GtkWidget *frame2; GtkWidget *scrolledwindow4; GtkWidget *label17; GtkWidget *label18; GtkWidget *label19; GtkWidget *scrolledwindow3; GtkWidget *label13; GtkWidget *label14; GtkWidget *label15; GtkWidget *label16; GtkWidget *label_packets; //GtkWidget *empty_notebook_page2; GtkWidget *label3; GtkWidget *net_vbox; GtkWidget *pack_vbox; GtkWidget *pack_disp_vbox; GtkWidget *disp_frame; GtkWidget *route_frame; GtkWidget *route_stats_frame; GtkWidget *route_scrolledwindow; GtkWidget *route_label1; GtkWidget *route_label2; GtkWidget *route_label3; GtkWidget *route_label4; GtkWidget *route_hbox1; GtkWidget *traffic_label; GtkWidget *settings_label; GtkWidget *settings_hbox1; GtkWidget *about_hbox1; GtkWidget *about_label; GtkWidget *empty1; GdkPixmap *unik_logo_gdk; GtkWidget *unik_logo; /* *The main window */ main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_object_set_data(GTK_OBJECT(main_window), "main_window", main_window); gtk_window_set_title(GTK_WINDOW(main_window), (olsrd_version)); gtk_window_set_default_size(GTK_WINDOW(main_window), 600, 550); gtk_signal_connect(GTK_OBJECT(main_window), "destroy", GTK_SIGNAL_FUNC(gui_shutdown), //GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER); /* Position window in center */ gtk_window_set_policy(GTK_WINDOW(main_window), FALSE, TRUE, TRUE); /* No user-resizing */ /* *Initialize the pixmaps */ unik_logo_gdk = gdk_pixmap_colormap_create_from_xpm_d(NULL, gtk_widget_get_colormap(main_window), &mask, NULL, (gchar **) logo_xpm); unik_logo = gtk_pixmap_new(unik_logo_gdk, mask); /* *The notebook */ notebook1 = gtk_notebook_new(); gtk_widget_ref(notebook1); gtk_object_set_data_full(GTK_OBJECT(main_window), "notebook1", notebook1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(notebook1); gtk_container_add(GTK_CONTAINER(main_window), notebook1); /* *The first vbox */ vbox1 = gtk_vbox_new(FALSE, 0); gtk_widget_ref(vbox1); gtk_object_set_data_full(GTK_OBJECT(main_window), "vbox1", vbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(vbox1); //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1); gtk_container_add(GTK_CONTAINER(notebook1), vbox1); /* *The nodes frame */ frame3 = gtk_frame_new("Registered nodes:"); gtk_widget_ref(frame3); gtk_object_set_data_full(GTK_OBJECT(main_window), "frame3", frame3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(frame3); gtk_box_pack_start(GTK_BOX(vbox1), frame3, TRUE, TRUE, 0); gtk_widget_set_size_request(frame3, -1, 300); gtk_container_set_border_width(GTK_CONTAINER(frame3), 1); /* *The scrolled window to contain the node list */ scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(scrolledwindow1); gtk_object_set_data_full(GTK_OBJECT(main_window), "scrolledwindow1", scrolledwindow1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(scrolledwindow1); gtk_container_add(GTK_CONTAINER(frame3), scrolledwindow1); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); //gtk_box_pack_start (GTK_BOX (frame3), scrolledwindow1, TRUE, TRUE, 0); //gtk_widget_set_usize (scrolledwindow1, -2, 332); /* *The node list */ node_list = gtk_clist_new(7); gtk_widget_ref(node_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "node_list", node_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_list); gtk_container_add(GTK_CONTAINER(scrolledwindow1), node_list); gtk_clist_set_column_width(GTK_CLIST(node_list), 0, 150); /* IP */ //gtk_clist_set_column_justification(GTK_CLIST(node_list), 0, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 1, 150); /* gateway */ //gtk_clist_set_column_justification(GTK_CLIST(node_list), 1, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 2, 50); /* hopcount */ gtk_clist_set_column_justification(GTK_CLIST(node_list), 2, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 3, 80); /* dev */ gtk_clist_set_column_justification(GTK_CLIST(node_list), 3, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 4, 70); /* timer */ gtk_clist_set_column_justification(GTK_CLIST(node_list), 4, GTK_JUSTIFY_CENTER); //gtk_clist_set_column_width (GTK_CLIST (node_list), 7, 100); /* last about */ //gtk_clist_set_column_justification(GTK_CLIST(node_list), 7, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 5, 40); /* MID */ gtk_clist_set_column_justification(GTK_CLIST(node_list), 5, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(node_list), 6, 40); /* HNA */ gtk_clist_set_column_justification(GTK_CLIST(node_list), 6, GTK_JUSTIFY_CENTER); gtk_clist_column_titles_show(GTK_CLIST(node_list)); /* *Row selection callback */ gtk_signal_connect(GTK_OBJECT(node_list), "select_row", GTK_SIGNAL_FUNC(selection_made), NULL); /* *Column selection callback */ gtk_signal_connect(GTK_OBJECT(node_list), "click_column", GTK_SIGNAL_FUNC(column_clicked_callback), NULL); node_label1 = gtk_label_new("Dest"); gtk_widget_ref(node_label1); gtk_object_set_data_full(GTK_OBJECT(main_window), "IP", node_label1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label1); gtk_clist_set_column_widget(GTK_CLIST(node_list), 0, node_label1); node_label2 = gtk_label_new("Gateway"); gtk_widget_ref(node_label2); gtk_object_set_data_full(GTK_OBJECT(main_window), "hops", node_label2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label2); gtk_clist_set_column_widget(GTK_CLIST(node_list), 1, node_label2); node_label3 = gtk_label_new("Metric"); gtk_widget_ref(node_label3); gtk_object_set_data_full(GTK_OBJECT(main_window), "info", node_label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label3); gtk_clist_set_column_widget(GTK_CLIST(node_list), 2, node_label3); node_label4 = gtk_label_new("Device"); gtk_widget_ref(node_label4); gtk_object_set_data_full(GTK_OBJECT(main_window), "Device", node_label4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label4); gtk_clist_set_column_widget(GTK_CLIST(node_list), 3, node_label4); node_label7 = gtk_label_new("Timer"); gtk_widget_ref(node_label7); gtk_object_set_data_full(GTK_OBJECT(main_window), "LMF", node_label7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label7); gtk_clist_set_column_widget(GTK_CLIST(node_list), 4, node_label7); /* node_label8 = gtk_label_new ("LMA"); gtk_widget_ref (node_label8); gtk_object_set_data_full (GTK_OBJECT (main_window), "LMA", node_label8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (node_label8); gtk_clist_set_column_widget (GTK_CLIST (node_list), 7, node_label8); */ node_label8 = gtk_label_new("MID"); gtk_widget_ref(node_label8); gtk_object_set_data_full(GTK_OBJECT(main_window), "MID", node_label8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label8); gtk_clist_set_column_widget(GTK_CLIST(node_list), 5, node_label8); node_label9 = gtk_label_new("HNA"); gtk_widget_ref(node_label9); gtk_object_set_data_full(GTK_OBJECT(main_window), "HNA", node_label9, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(node_label9); gtk_clist_set_column_widget(GTK_CLIST(node_list), 6, node_label9); gtk_clist_column_titles_active(GTK_CLIST(node_list)); gtk_widget_show_now(node_list); /* *Row selection callback */ gtk_signal_connect(GTK_OBJECT(node_list), "select_row", GTK_SIGNAL_FUNC(node_selection), NULL); /* *The first hbox */ hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(hbox1); gtk_object_set_data_full(GTK_OBJECT(main_window), "hbox1", hbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 0); //gtk_container_add (GTK_CONTAINER (notebook1), hbox1); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 4); gtk_widget_set_size_request(hbox1, -1, 200); /* *The net-info frame */ frame4 = gtk_frame_new("Info:"); gtk_widget_ref(frame4); gtk_object_set_data_full(GTK_OBJECT(main_window), "frame4", frame4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(frame4); gtk_box_pack_start(GTK_BOX(hbox1), frame4, TRUE, TRUE, 0); //gtk_widget_set_size_request(frame4, 200, -1); gtk_container_set_border_width(GTK_CONTAINER(frame4), 1); /* *The net-info hbox */ net_vbox = gtk_vbox_new(FALSE, 0); gtk_widget_ref(net_vbox); gtk_object_set_data_full(GTK_OBJECT(main_window), "net_vbox", net_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(net_vbox); gtk_container_add(GTK_CONTAINER(frame4), net_vbox); /* *The net-info label field */ net_label = gtk_label_new(NULL); gtk_widget_ref(net_label); gtk_misc_set_alignment((GtkMisc *) net_label, 0, 0); //gtk_label_set_justify((GtkLabel *)net_label,GTK_JUSTIFY_LEFT); gtk_object_set_data_full(GTK_OBJECT(main_window), "net_label", net_label, (GtkDestroyNotify) gtk_widget_unref); //set_net_info("Not connected..."); gtk_widget_show(net_label); gtk_box_pack_start(GTK_BOX(net_vbox), net_label, TRUE, TRUE, 0); //gtk_container_add (GTK_CONTAINER (frame4), net_label); /* *The connect button */ connect_button = gtk_button_new_with_label("Connect to host"); gtk_widget_ref(connect_button); gtk_object_set_data_full(GTK_OBJECT(main_window), "connect_button", connect_button, (GtkDestroyNotify) gtk_widget_unref); /* Connect the "clicked" signal of the button to our callback */ gtk_signal_connect(GTK_OBJECT(connect_button), "clicked", GTK_SIGNAL_FUNC(connect_callback), NULL); gtk_widget_show(connect_button); gtk_box_pack_start(GTK_BOX(net_vbox), connect_button, FALSE, FALSE, 1); gtk_container_set_border_width(GTK_CONTAINER(connect_button), 5); /* *The node MPR info frame */ mpr_frame = gtk_frame_new("MPR:"); gtk_widget_ref(mpr_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "mpr_frame", mpr_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mpr_frame); gtk_box_pack_start(GTK_BOX(hbox1), mpr_frame, FALSE, FALSE, 0); //gtk_widget_set_size_request(mid_frame, 125, -1); gtk_container_set_border_width(GTK_CONTAINER(mpr_frame), 1); /* *The scrolledwindow to contain the MPR node info */ mpr_scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(mpr_scrolledwindow); gtk_object_set_data_full(GTK_OBJECT(main_window), "mpr_scrolledwindow", mpr_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mpr_scrolledwindow); gtk_container_add(GTK_CONTAINER(mpr_frame), mpr_scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(mpr_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_set_border_width(GTK_CONTAINER(mpr_scrolledwindow), 3); /* *The node MID info frame */ mid_frame = gtk_frame_new("MID:"); gtk_widget_ref(mid_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "mid_frame", mid_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mid_frame); gtk_box_pack_start(GTK_BOX(hbox1), mid_frame, FALSE, FALSE, 0); //gtk_widget_set_size_request(mid_frame, 125, -1); gtk_container_set_border_width(GTK_CONTAINER(mid_frame), 1); /* *The scrolledwindow to contain the MID node info */ mid_scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(mid_scrolledwindow); gtk_object_set_data_full(GTK_OBJECT(main_window), "mid_scrolledwindow", mid_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mid_scrolledwindow); gtk_container_add(GTK_CONTAINER(mid_frame), mid_scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(mid_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_set_border_width(GTK_CONTAINER(mid_scrolledwindow), 3); /* *The MPR list */ mpr_list = gtk_clist_new(1); gtk_widget_ref(mpr_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "mpr_list", mpr_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mpr_list); gtk_container_add(GTK_CONTAINER(mpr_scrolledwindow), mpr_list); gtk_clist_set_column_width(GTK_CLIST(mpr_list), 0, 120); /* IP */ gtk_clist_column_titles_hide(GTK_CLIST(mpr_list)); /* *The MID list */ mid_list = gtk_clist_new(1); gtk_widget_ref(mid_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "mid_list", mid_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(mid_list); gtk_container_add(GTK_CONTAINER(mid_scrolledwindow), mid_list); gtk_clist_set_column_width(GTK_CLIST(mid_list), 0, 120); /* IP */ gtk_clist_column_titles_hide(GTK_CLIST(mid_list)); /* *The node HNA info frame */ hna_frame = gtk_frame_new("HNA:"); gtk_widget_ref(hna_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "hna_frame", hna_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(hna_frame); gtk_box_pack_start(GTK_BOX(hbox1), hna_frame, FALSE, FALSE, 0); //gtk_widget_set_size_request(mid_frame, 125, -1); gtk_container_set_border_width(GTK_CONTAINER(hna_frame), 1); /* *The HNA scrolled window */ hna_scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(hna_scrolledwindow); gtk_object_set_data_full(GTK_OBJECT(main_window), "hna_scrolledwindow", hna_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(hna_scrolledwindow); gtk_container_add(GTK_CONTAINER(hna_frame), hna_scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(hna_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_set_border_width(GTK_CONTAINER(hna_scrolledwindow), 3); /* *The HNA list */ hna_list = gtk_clist_new(1); gtk_widget_ref(hna_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "hna_list", hna_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(hna_list); gtk_container_add(GTK_CONTAINER(hna_scrolledwindow), hna_list); gtk_clist_set_column_width(GTK_CLIST(hna_list), 0, 120); /* IP */ gtk_clist_column_titles_hide(GTK_CLIST(hna_list)); /* *The "main" notebook page */ Main = gtk_label_new("Main"); gtk_widget_ref(Main); gtk_object_set_data_full(GTK_OBJECT(main_window), "Main", Main, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(Main); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 0), Main); /* *The main hbox of the Packet page */ hbox2 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(hbox2); gtk_object_set_data_full(GTK_OBJECT(main_window), "hbox2", hbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(hbox2); gtk_container_add(GTK_CONTAINER(notebook1), hbox2); /* *The packet hbox */ pack_vbox = gtk_vbox_new(FALSE, 0); gtk_widget_ref(pack_vbox); gtk_object_set_data_full(GTK_OBJECT(main_window), "pack_vbox", pack_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(pack_vbox); gtk_box_pack_start(GTK_BOX(hbox2), pack_vbox, TRUE, TRUE, 0); /* *The packet frame */ frame2 = gtk_frame_new("Packet"); gtk_widget_ref(frame2); gtk_object_set_data_full(GTK_OBJECT(main_window), "frame2", frame2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(frame2); gtk_box_pack_start(GTK_BOX(pack_vbox), frame2, TRUE, TRUE, 0); /* Do not expand */ /* *Packet list scrolled window */ scrolledwindow4 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(scrolledwindow4); gtk_object_set_data_full(GTK_OBJECT(main_window), "scrolledwindow4", scrolledwindow4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(scrolledwindow4); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow4), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(frame2), scrolledwindow4); /* *The packet list */ packet_list = gtk_clist_new(3); gtk_widget_ref(packet_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "packet_list", packet_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(packet_list); gtk_container_add(GTK_CONTAINER(scrolledwindow4), packet_list); gtk_clist_set_column_width(GTK_CLIST(packet_list), 0, 80); /* Type */ gtk_clist_set_column_width(GTK_CLIST(packet_list), 1, 150); /* Origin IP */ gtk_clist_set_column_width(GTK_CLIST(packet_list), 2, 20); /* size */ gtk_clist_column_titles_show(GTK_CLIST(packet_list)); label17 = gtk_label_new("Type"); gtk_widget_ref(label17); gtk_object_set_data_full(GTK_OBJECT(main_window), "label17", label17, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label17); gtk_clist_set_column_widget(GTK_CLIST(packet_list), 0, label17); label18 = gtk_label_new("Origin"); gtk_widget_ref(label18); gtk_object_set_data_full(GTK_OBJECT(main_window), "label18", label18, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label18); gtk_clist_set_column_widget(GTK_CLIST(packet_list), 1, label18); label19 = gtk_label_new("Size"); gtk_widget_ref(label19); gtk_object_set_data_full(GTK_OBJECT(main_window), "label19", label19, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label19); gtk_clist_set_column_widget(GTK_CLIST(packet_list), 2, label19); /* *Row selection callback */ gtk_signal_connect(GTK_OBJECT(packet_list), "select_row", GTK_SIGNAL_FUNC(packet_selection), NULL); /* *The packet button */ packet_button = gtk_button_new_with_label("Grab packets"); gtk_widget_ref(packet_button); gtk_object_set_data_full(GTK_OBJECT(main_window), "packet_button", packet_button, (GtkDestroyNotify) gtk_widget_unref); /* Connect the "clicked" signal of the button to our callback */ gtk_signal_connect(GTK_OBJECT(packet_button), "clicked", GTK_SIGNAL_FUNC(packet_callback), NULL); gtk_widget_show(packet_button); gtk_box_pack_start(GTK_BOX(pack_vbox), packet_button, FALSE, FALSE, 5); /* *The packet disp hbox */ pack_disp_vbox = gtk_vbox_new(FALSE, 0); gtk_widget_ref(pack_disp_vbox); gtk_object_set_data_full(GTK_OBJECT(main_window), "pack_disp_vbox", pack_disp_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(pack_disp_vbox); gtk_box_pack_start(GTK_BOX(hbox2), pack_disp_vbox, TRUE, TRUE, 0); /* *The packet disp frame */ disp_frame = gtk_frame_new("Packet content"); gtk_widget_ref(disp_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "disp_frame", disp_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(disp_frame); gtk_box_pack_start(GTK_BOX(pack_disp_vbox), disp_frame, TRUE, TRUE, 0); /* Do not expand */ /* *Scrolled window for the packet display *list */ scrolledwindow3 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(scrolledwindow3); gtk_object_set_data_full(GTK_OBJECT(main_window), "scrolledwindow3", scrolledwindow3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(scrolledwindow3); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(disp_frame), scrolledwindow3); //gtk_box_pack_start (GTK_BOX (disp_frame), scrolledwindow3, TRUE, TRUE, 0); /* *The packet display list */ packet_content_list = gtk_clist_new(4); gtk_widget_ref(packet_content_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "packet_content_list", packet_content_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(packet_content_list); gtk_container_add(GTK_CONTAINER(scrolledwindow3), packet_content_list); gtk_clist_set_column_width(GTK_CLIST(packet_content_list), 0, 70); /* 0-7 */ gtk_clist_set_column_justification(GTK_CLIST(packet_content_list), 0, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(packet_content_list), 1, 70); /* 8-15 */ gtk_clist_set_column_justification(GTK_CLIST(packet_content_list), 1, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(packet_content_list), 2, 70); /* 16-23 */ gtk_clist_set_column_justification(GTK_CLIST(packet_content_list), 2, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(packet_content_list), 3, 70); /* 24-31 */ gtk_clist_set_column_justification(GTK_CLIST(packet_content_list), 3, GTK_JUSTIFY_CENTER); gtk_clist_column_titles_show(GTK_CLIST(packet_content_list)); label13 = gtk_label_new("0 - 7"); gtk_widget_ref(label13); gtk_object_set_data_full(GTK_OBJECT(main_window), "label13", label13, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label13); gtk_clist_set_column_widget(GTK_CLIST(packet_content_list), 0, label13); label14 = gtk_label_new("8 - 15"); gtk_widget_ref(label14); gtk_object_set_data_full(GTK_OBJECT(main_window), "label14", label14, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label14); gtk_clist_set_column_widget(GTK_CLIST(packet_content_list), 1, label14); label15 = gtk_label_new("16 - 23"); gtk_widget_ref(label15); gtk_object_set_data_full(GTK_OBJECT(main_window), "label15", label15, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label15); gtk_clist_set_column_widget(GTK_CLIST(packet_content_list), 2, label15); label16 = gtk_label_new("24 - 31"); gtk_widget_ref(label16); gtk_object_set_data_full(GTK_OBJECT(main_window), "label16", label16, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label16); gtk_clist_set_column_widget(GTK_CLIST(packet_content_list), 3, label16); //gtk_clist_set_selection_mode(GTK_CLIST (packet_content_list), GTK_SELECTION_NONE); /* no selections */ /* *The packet button */ packet_disp_button = gtk_button_new_with_label("Display hex"); gtk_widget_ref(packet_disp_button); gtk_object_set_data_full(GTK_OBJECT(main_window), "packet_disp_button", packet_disp_button, (GtkDestroyNotify) gtk_widget_unref); /* Connect the "clicked" signal of the button to our callback */ gtk_signal_connect(GTK_OBJECT(packet_disp_button), "clicked", GTK_SIGNAL_FUNC(packet_disp_callback), NULL); gtk_widget_show(packet_disp_button); gtk_box_pack_start(GTK_BOX(pack_disp_vbox), packet_disp_button, FALSE, FALSE, 5); /* *The "packets" notebook */ label_packets = gtk_label_new("Packets"); gtk_widget_ref(label_packets); gtk_object_set_data_full(GTK_OBJECT(main_window), "label_packets", label_packets, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label_packets); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 1), label_packets); /* *The route hbox */ route_hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(route_hbox1); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_hbox1", route_hbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_hbox1); //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1); gtk_container_add(GTK_CONTAINER(notebook1), route_hbox1); /* *The routes frame */ route_frame = gtk_frame_new("OLSR routes in kernel:"); gtk_widget_ref(route_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_frame", route_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_frame); //gtk_container_add (GTK_CONTAINER (notebook1), route_frame); gtk_widget_set_size_request(route_frame, 200, -1); gtk_box_pack_start(GTK_BOX(route_hbox1), route_frame, TRUE, TRUE, 0); /* Do not expand */ /* *Scrolled window for the packet display *list */ route_scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_ref(route_scrolledwindow); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_scrolledwindow", route_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(route_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(route_frame), route_scrolledwindow); //gtk_box_pack_start (GTK_BOX (route_frame), scrolledwindow3, TRUE, TRUE, 0); /* *The routes display list */ route_list = gtk_clist_new(4); gtk_widget_ref(route_list); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_list", route_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_list); gtk_container_add(GTK_CONTAINER(route_scrolledwindow), route_list); gtk_clist_set_column_width(GTK_CLIST(route_list), 0, 120); /* dest */ //gtk_clist_set_column_justification(GTK_CLIST (route_list), 0, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(route_list), 1, 120); /* gw */ //gtk_clist_set_column_justification(GTK_CLIST (route_list), 1, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(route_list), 2, 50); /* weight */ gtk_clist_set_column_justification(GTK_CLIST(route_list), 2, GTK_JUSTIFY_CENTER); gtk_clist_set_column_width(GTK_CLIST(route_list), 3, 70); /* interface */ gtk_clist_set_column_justification(GTK_CLIST(route_list), 3, GTK_JUSTIFY_CENTER); gtk_clist_column_titles_show(GTK_CLIST(route_list)); route_label1 = gtk_label_new("Destination"); gtk_widget_ref(route_label1); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_label1", route_label1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_label1); gtk_clist_set_column_widget(GTK_CLIST(route_list), 0, route_label1); route_label2 = gtk_label_new("Gateway"); gtk_widget_ref(route_label2); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_label2", route_label2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_label2); gtk_clist_set_column_widget(GTK_CLIST(route_list), 1, route_label2); route_label3 = gtk_label_new("Weight"); gtk_widget_ref(route_label3); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_label3", route_label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_label3); gtk_clist_set_column_widget(GTK_CLIST(route_list), 2, route_label3); route_label4 = gtk_label_new("Interface"); gtk_widget_ref(route_label4); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_label4", route_label4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_label4); gtk_clist_set_column_widget(GTK_CLIST(route_list), 3, route_label4); //gtk_clist_set_selection_mode(GTK_CLIST (route_list), GTK_SELECTION_NONE); /* no selections */ /* *The routes stats frame */ route_stats_frame = gtk_frame_new("Stats:"); gtk_widget_ref(route_stats_frame); gtk_object_set_data_full(GTK_OBJECT(main_window), "route_stats_frame", route_stats_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(route_stats_frame); //gtk_container_add (GTK_CONTAINER (notebook1), route_frame); gtk_box_pack_start(GTK_BOX(route_hbox1), route_stats_frame, TRUE, TRUE, 1); /* *The "routes" notebook */ label_routes = gtk_label_new("Routes"); gtk_widget_ref(label_routes); gtk_object_set_data_full(GTK_OBJECT(main_window), "label_routes", label_routes, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label_routes); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 2), label_routes); empty1 = gtk_vbox_new(FALSE, 0); gtk_widget_show(empty1); gtk_container_add(GTK_CONTAINER(notebook1), empty1); /* *The "traffic" notebook */ traffic_label = gtk_label_new("Traffic"); gtk_widget_ref(traffic_label); gtk_object_set_data_full(GTK_OBJECT(main_window), "traffic_label", traffic_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(traffic_label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 3), traffic_label); /* *The settings hbox */ settings_hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(settings_hbox1); gtk_object_set_data_full(GTK_OBJECT(main_window), "settings_hbox1", settings_hbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(settings_hbox1); //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1); gtk_container_add(GTK_CONTAINER(notebook1), settings_hbox1); /* *The settings-info label field */ info_label = gtk_label_new(NULL); gtk_widget_ref(info_label); gtk_misc_set_alignment((GtkMisc *) info_label, 0, 0); //gtk_label_set_justify((GtkLabel *)net_label,GTK_JUSTIFY_LEFT); gtk_object_set_data_full(GTK_OBJECT(main_window), "info_label", info_label, (GtkDestroyNotify) gtk_widget_unref); //set_net_info("Not connected..."); gtk_widget_show(info_label); gtk_box_pack_start(GTK_BOX(settings_hbox1), info_label, TRUE, TRUE, 0); /* *The "settings" notebook */ settings_label = gtk_label_new("Settings"); gtk_widget_ref(settings_label); gtk_object_set_data_full(GTK_OBJECT(main_window), "settings_label", settings_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(settings_label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 4), settings_label); /* *The "about" hbox */ about_hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(about_hbox1); gtk_object_set_data_full(GTK_OBJECT(main_window), "about_hbox1", about_hbox1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(about_hbox1); //gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 1); gtk_container_add(GTK_CONTAINER(notebook1), about_hbox1); gtk_container_set_border_width(GTK_CONTAINER(about_hbox1), 10); /* *The about label field */ about_label = gtk_label_new(NULL); gtk_widget_ref(about_label); gtk_misc_set_alignment((GtkMisc *) about_label, 0, 0); gtk_label_set_justify((GtkLabel *) about_label, GTK_JUSTIFY_CENTER); gtk_object_set_data_full(GTK_OBJECT(main_window), "about_label", about_label, (GtkDestroyNotify) gtk_widget_unref); //set_net_info("Not connected..."); gtk_widget_show(about_label); gtk_box_pack_start(GTK_BOX(about_hbox1), unik_logo, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(about_hbox1), about_label, TRUE, TRUE, 0); gtk_widget_show(unik_logo); gtk_label_set_text((GtkLabel *) about_label, "OLSRD-GUI by Andreas Tonnesen ([email protected])"); /* *The "about" notebook */ label3 = gtk_label_new("About"); gtk_widget_ref(label3); gtk_object_set_data_full(GTK_OBJECT(main_window), "About", label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(label3); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook1), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook1), 5), label3); return main_window; }
/* Create the fingerprint UI, and pack it into the vbox */ static void make_fingerprints_ui(GtkWidget *vbox) { GtkWidget *hbox; GtkWidget *table; GtkWidget *label; char *titles[5]; titles[0] = _("Screenname"); titles[1] = _("Status"); titles[2] = _("Verified"); titles[3] = _("Fingerprint"); titles[4] = _("Account"); ui_layout.scrollwin = gtk_scrolled_window_new(0, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ui_layout.scrollwin), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); ui_layout.keylist = gtk_clist_new_with_titles(5, titles); gtk_clist_set_column_width(GTK_CLIST(ui_layout.keylist), 0, 90); gtk_clist_set_column_width(GTK_CLIST(ui_layout.keylist), 1, 90); gtk_clist_set_column_width(GTK_CLIST(ui_layout.keylist), 2, 60); gtk_clist_set_column_width(GTK_CLIST(ui_layout.keylist), 3, 400); gtk_clist_set_column_width(GTK_CLIST(ui_layout.keylist), 4, 200); gtk_clist_set_selection_mode(GTK_CLIST(ui_layout.keylist), GTK_SELECTION_SINGLE); gtk_clist_column_titles_active(GTK_CLIST(ui_layout.keylist)); gtk_container_add(GTK_CONTAINER(ui_layout.scrollwin), ui_layout.keylist); gtk_box_pack_start(GTK_BOX(vbox), ui_layout.scrollwin, TRUE, TRUE, 0); otrg_gtk_ui_update_keylist(); hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); table = gtk_table_new(2, 2, TRUE); gtk_table_set_row_spacings(GTK_TABLE(table), 5); gtk_table_set_col_spacings(GTK_TABLE(table), 20); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(""), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), table, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(""), TRUE, TRUE, 0); ui_layout.connect_button = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(ui_layout.connect_button), "clicked", GTK_SIGNAL_FUNC(connect_connection), NULL); label = gtk_label_new(_("Start private connection")); gtk_container_add(GTK_CONTAINER(ui_layout.connect_button), label); gtk_table_attach_defaults(GTK_TABLE(table), ui_layout.connect_button, 0, 1, 0, 1); ui_layout.disconnect_button = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(ui_layout.disconnect_button), "clicked", GTK_SIGNAL_FUNC(disconnect_connection), NULL); label = gtk_label_new(_("End private connection")); gtk_container_add(GTK_CONTAINER(ui_layout.disconnect_button), label); gtk_table_attach_defaults(GTK_TABLE(table), ui_layout.disconnect_button, 0, 1, 1, 2); ui_layout.verify_button = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(ui_layout.verify_button), "clicked", GTK_SIGNAL_FUNC(verify_fingerprint), NULL); label = gtk_label_new(_("Verify fingerprint")); gtk_container_add(GTK_CONTAINER(ui_layout.verify_button), label); gtk_table_attach_defaults(GTK_TABLE(table), ui_layout.verify_button, 1, 2, 0, 1); ui_layout.forget_button = gtk_button_new(); gtk_signal_connect(GTK_OBJECT(ui_layout.forget_button), "clicked", GTK_SIGNAL_FUNC(forget_fingerprint), NULL); label = gtk_label_new(_("Forget fingerprint")); gtk_container_add(GTK_CONTAINER(ui_layout.forget_button), label); gtk_table_attach_defaults(GTK_TABLE(table), ui_layout.forget_button, 1, 2, 1, 2); gtk_signal_connect(GTK_OBJECT(vbox), "destroy", GTK_SIGNAL_FUNC(ui_destroyed), NULL); /* Handle selections and deselections */ gtk_signal_connect(GTK_OBJECT(ui_layout.keylist), "select_row", GTK_SIGNAL_FUNC(clist_selected), NULL); gtk_signal_connect(GTK_OBJECT(ui_layout.keylist), "unselect_row", GTK_SIGNAL_FUNC(clist_unselected), NULL); /* Handle column sorting */ gtk_signal_connect(GTK_OBJECT(ui_layout.keylist), "click-column", GTK_SIGNAL_FUNC(clist_click_column), NULL); ui_layout.sortcol = 0; ui_layout.sortdir = 1; clist_all_unselected(); }