📄 interface.c
字号:
if (gtk_tree_view_column_get_visible(GTK_TREE_VIEW_COLUMN(column))) gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(column), FALSE); else gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(column), TRUE); }static void add_columns (){ GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new (); col_eth_addr = gtk_tree_view_column_new_with_attributes ("Ethernet Address", renderer, "text", COLUMN_ETH_ADDR_STRING, NULL); /* set this column to a fixed sizing (of 110 pixels) */ gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_eth_addr), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_eth_addr), 110); gtk_tree_view_column_set_sort_column_id (col_eth_addr, COLUMN_ETH_ADDR_STRING); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_eth_addr); /* column for ssid*/ renderer = gtk_cell_renderer_text_new (); col_ssid = gtk_tree_view_column_new_with_attributes ("SSID", renderer, "text", COLUMN_SSID_STRING, NULL); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_ssid), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_ssid), 150); gtk_tree_view_column_set_sort_column_id (col_ssid, COLUMN_SSID_STRING); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_ssid); /* column for vendor id*/ renderer = gtk_cell_renderer_text_new (); col_manufacturer = gtk_tree_view_column_new_with_attributes ("Manufacturer", renderer, "text", COLUMN_VENDOR_ID_STRING, NULL); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_manufacturer), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_manufacturer), 150); gtk_tree_view_column_set_sort_column_id (col_manufacturer, COLUMN_VENDOR_ID_STRING); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_manufacturer); /* column for strength */ renderer = gtk_cell_renderer_text_new (); col_strength = gtk_tree_view_column_new_with_attributes ("Strength", renderer, "text", COLUMN_STRENGTH, NULL); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_strength), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_strength), 60); gtk_tree_view_column_set_sort_column_id (col_strength, COLUMN_STRENGTH); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_strength); /* column for strength bar */ renderer = gtk_cell_renderer_pixbuf_new (); g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);//this makes the column aligned left col_strength_bar = gtk_tree_view_column_new_with_attributes ("Strength Bar", renderer, "pixbuf", COLUMN_STRENGTH_BAR, NULL); /* set this column to a fixed sizing of 100 pixels */ gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_strength_bar), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_strength_bar), 200); gtk_tree_view_column_set_sort_column_id (col_strength_bar, COLUMN_STRENGTH); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_strength_bar); /* Column for Packet Count */ renderer = gtk_cell_renderer_text_new (); col_packet_count = gtk_tree_view_column_new_with_attributes ("Packet Count", renderer, "text", COLUMN_PACKET_COUNT, NULL); /* Set this column to be a fixed sizing of 100 pixels */ gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_packet_count), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_packet_count), 100); gtk_tree_view_column_set_sort_column_id (col_packet_count, COLUMN_PACKET_COUNT); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_packet_count); /* column for active */ renderer = gtk_cell_renderer_pixbuf_new (); col_active = gtk_tree_view_column_new_with_attributes ("Active", renderer, "pixbuf", COLUMN_ACTIVE_LIGHT, NULL); /* set this column to a fixed sizing of 20 pixels */ gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (col_active), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col_active), 20); gtk_tree_view_column_set_sort_column_id (col_active, COLUMN_TIME_STAMP); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), col_active);}GtkWidget* create_main_window (){ GtkWidget *main_window; GtkWidget *viewport1; GtkWidget *vbox1; GtkWidget *main_menu_bar; GtkWidget *file_menu_container, *file_menu, *prefs_menu, *file_menu_separator, *quit; GtkWidget *activation_menu_container, *activation_menu, *fields_menu, *fields_menu_container; GtkWidget *help_menu_container, *help_menu, *about; GtkWidget *scrolledwindow2; GtkWidget *statusbar; GtkAccelGroup *accel_group; GtkTreeModel *datamodel; GSList *active_group = NULL; GtkWidget *active_item; GtkWidget *about_image; pthread_t threadId; //ModelData* md; int err; gint i; sem_init(&semaphore,0,1); accel_group = gtk_accel_group_new (); main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (main_window), "Airfart"); viewport1 = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport1); gtk_container_add (GTK_CONTAINER (main_window), viewport1); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (viewport1), vbox1); main_menu_bar = gtk_menu_bar_new (); gtk_widget_show (main_menu_bar); gtk_box_pack_start (GTK_BOX (vbox1), main_menu_bar, FALSE, FALSE, 0); file_menu_container = gtk_menu_item_new_with_mnemonic ("_File"); gtk_widget_show (file_menu_container); gtk_container_add (GTK_CONTAINER (main_menu_bar), file_menu_container); file_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (file_menu_container), file_menu); prefs_menu = gtk_image_menu_item_new_from_stock("gtk-preferences", accel_group); gtk_widget_show(prefs_menu); gtk_container_add(GTK_CONTAINER(file_menu), prefs_menu); g_signal_connect (G_OBJECT(prefs_menu), "activate", G_CALLBACK (show_pref_window), NULL); file_menu_separator = gtk_separator_menu_item_new (); gtk_widget_show (file_menu_separator); gtk_container_add (GTK_CONTAINER (file_menu), file_menu_separator); gtk_widget_set_sensitive (file_menu_separator, FALSE); quit = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); gtk_widget_show (quit); gtk_container_add (GTK_CONTAINER (file_menu), quit); g_signal_connect (G_OBJECT (quit), "activate", G_CALLBACK (destroy), NULL); /* Setup the activation menu */ activation_menu_container = gtk_menu_item_new_with_mnemonic ("_Activation Time"); gtk_widget_show (activation_menu_container); gtk_container_add (GTK_CONTAINER (main_menu_bar), activation_menu_container); activation_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (activation_menu_container), activation_menu); for (i = 1; i <= 5; i++) { active_item = gtk_radio_menu_item_new_with_label (active_group, g_strdup_printf("%d second%c", i, ((i != 1) ? 's' : ' '))); active_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (active_item)); gtk_container_add (GTK_CONTAINER (activation_menu), active_item); gtk_signal_connect (GTK_OBJECT (active_item), "activate", GTK_SIGNAL_FUNC (set_active_secs), (gpointer) g_strdup_printf("%d", i)); if (i == 3) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (active_item), TRUE); gtk_widget_show(GTK_WIDGET(active_item)); } /* Setup the Show Columns menu */ fields_menu_container = gtk_menu_item_new_with_mnemonic ("_Show Columns"); gtk_widget_show (fields_menu_container); gtk_container_add (GTK_CONTAINER (main_menu_bar), fields_menu_container); fields_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (fields_menu_container), fields_menu); col_eth_addr_menu = gtk_check_menu_item_new_with_label ("Ethernet Address"); gtk_widget_show (col_eth_addr_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_eth_addr_menu); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( col_eth_addr_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_eth_addr_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "1"); col_ssid_menu = gtk_check_menu_item_new_with_label ("SSID"); gtk_widget_show (col_ssid_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_ssid_menu); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( col_ssid_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_ssid_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "2"); col_manufacturer_menu = gtk_check_menu_item_new_with_label ("Manufacturer"); gtk_widget_show (col_manufacturer_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_manufacturer_menu); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( col_manufacturer_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_manufacturer_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "3"); col_strength_menu = gtk_check_menu_item_new_with_label ("Strength"); gtk_widget_show(col_strength_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_strength_menu); gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( col_strength_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_strength_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "4"); col_strength_bar_menu = gtk_check_menu_item_new_with_label ("Strength Bar"); gtk_widget_show (col_strength_bar_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_strength_bar_menu); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( col_strength_bar_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_strength_bar_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "5"); col_packet_count_menu = gtk_check_menu_item_new_with_label ("Packet Count"); gtk_widget_show (col_packet_count_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_packet_count_menu); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM( col_packet_count_menu ), TRUE); gtk_signal_connect (GTK_OBJECT (col_packet_count_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "6"); col_active_menu = gtk_check_menu_item_new_with_label ("Active Light"); gtk_widget_show (col_active_menu); gtk_container_add (GTK_CONTAINER (fields_menu), col_active_menu); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( col_active_menu ), TRUE ); gtk_signal_connect (GTK_OBJECT (col_active_menu), "activate", GTK_SIGNAL_FUNC (toggle_column), (gpointer) "7"); /* Setup the help menu */ help_menu_container = gtk_menu_item_new_with_mnemonic ("_Help"); gtk_widget_show (help_menu_container); gtk_container_add (GTK_CONTAINER (main_menu_bar), help_menu_container); help_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_menu_container), help_menu); about_image = gtk_image_new_from_file("/usr/share/pixmaps/airfart/about_menu.png"); about = gtk_image_menu_item_new_with_mnemonic ("_About"); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(about), GTK_WIDGET(about_image)); gtk_widget_show (about); gtk_container_add (GTK_CONTAINER (help_menu), about); gtk_signal_connect_object(GTK_OBJECT(about), "activate", GTK_SIGNAL_FUNC(show_about), NULL); scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolledwindow2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); gtk_widget_show (scrolledwindow2); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow2, TRUE, TRUE, 0); datamodel = create_model(); /* create tree view */ treeview = gtk_tree_view_new_with_model (datamodel); #ifdef DEBUG_INTERFACE printf("i just set up my treeview\n"); #endif gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE); g_object_unref (G_OBJECT (datamodel)); gtk_container_add (GTK_CONTAINER (scrolledwindow2), treeview); add_columns(); /* finish & show */ gtk_signal_connect_object(GTK_OBJECT(main_window), "destroy", GTK_SIGNAL_FUNC(destroy), NULL); gtk_signal_connect_object(GTK_OBJECT(main_window), "delete_event", GTK_SIGNAL_FUNC(destroy), NULL); gtk_window_set_default_size (GTK_WINDOW (main_window), 820, 300); statusbar = gtk_statusbar_new (); gtk_widget_show (statusbar); gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0); gtk_window_add_accel_group (GTK_WINDOW (main_window), accel_group); if (!GTK_WIDGET_VISIBLE (main_window)) gtk_widget_show_all (main_window); else { gtk_widget_destroy (main_window); main_window = NULL; } return main_window;}void destroy( GtkWidget *widget, gpointer data ){ gtk_main_quit ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -