void append_ether_tree() { GtkWidget *subtree; gint i = 0; item[1] = gtk_tree_item_new_with_label(ether_buf.title); gtk_tree_append(GTK_TREE(tree),item[1]); subtree = gtk_tree_new(); gtk_tree_set_selection_mode (GTK_TREE(subtree),GTK_SELECTION_SINGLE); gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree (GTK_TREE_ITEM(item[1]), subtree); GtkWidget *subitem; subitem = gtk_tree_item_new_with_label (ether_buf.dst_mac); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ether_buf.src_mac); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ether_buf.protocol); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); gtk_widget_show (item[1]); }
void append_udp_tree() { GtkWidget *subtree; gint i = 0; item[3] = gtk_tree_item_new_with_label(udp_buf.title); gtk_tree_append(GTK_TREE(tree),item[3]); subtree = gtk_tree_new(); gtk_tree_set_selection_mode (GTK_TREE(subtree),GTK_SELECTION_SINGLE); gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree (GTK_TREE_ITEM(item[3]), subtree); GtkWidget *subitem; subitem = gtk_tree_item_new_with_label (udp_buf.source); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (udp_buf.dest); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (udp_buf.length); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (udp_buf.check); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); gtk_widget_show (item[3]); }
void ShowMain(int run_vegastrike) { GtkWidget *button; /* A generic scrolled window */ scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_usize (scrolled_win, 150, 200); gtk_container_add (GTK_CONTAINER(main_hbox), scrolled_win); gtk_widget_show (scrolled_win); /* Create the root tree */ tree = gtk_tree_new(); /* connect all GtkTree:: signals */ gtk_signal_connect (GTK_OBJECT(tree), "select_child", GTK_SIGNAL_FUNC(cb_select_child), tree); gtk_signal_connect (GTK_OBJECT(tree), "unselect_child", GTK_SIGNAL_FUNC(cb_unselect_child), tree); gtk_signal_connect (GTK_OBJECT(tree), "selection_changed", GTK_SIGNAL_FUNC(cb_selection_changed), tree); /* Add it to the scrolled window */ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win), tree); /* Set the selection mode */ gtk_tree_set_selection_mode (GTK_TREE(tree), GTK_SELECTION_SINGLE); /* Show it */ gtk_widget_show (tree); AddMainLabels(); AddMissionsToTree(DIR_MISSION, tree, 1); button = gtk_button_new_with_label("Run Mission"); gtk_signal_connect(GTK_OBJECT(button), "clicked", RunMission, NULL); gtk_container_add(GTK_CONTAINER(main_vbox), button); gtk_widget_show(button); }
void AddMissionsToTree(char *path, GtkWidget *tree, int is_parent) { glob_t *search; unsigned int length; int count, max; char *file, *filename; GtkWidget *subtree, *item; // First we check for sub directories. stick them at the top // For some reason, glob(,,GLOB_ONLYDIR,) doesn't seem to only match directories, // so FindDirs() currently returns everything. Check the last char for a / // That will be the directory. search = FindDirs(path); max = search->gl_pathc - 1; // search->gl_pathc is a uint. If there's no files, it's 0. for (count = 0; count <= max; count++) { file = search->gl_pathv[count]; length = strlen(file); if (file[length-1] != SEPERATOR) { continue; } // Verify it's a directory and not a file filename = strdup(file); filename = StripPath(filename); if (strcmp("CVS", filename) == 0) { continue; } // Don't need to display this directory item = AddItem(tree, filename, "dir"); subtree = gtk_tree_new(); gtk_signal_connect(GTK_OBJECT(subtree), "select_child", GTK_SIGNAL_FUNC(cb_select_child), subtree); gtk_signal_connect(GTK_OBJECT(subtree), "unselect_child", GTK_SIGNAL_FUNC(cb_unselect_child), subtree); gtk_tree_set_selection_mode(GTK_TREE(subtree), GTK_SELECTION_SINGLE); gtk_tree_set_view_mode(GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), subtree); AddMissionsToTree(file, subtree, 0); } search = FindFiles(path, EXT_MISSION); max = search->gl_pathc - 1; for (count = 0; count <= max; count++) { file = search->gl_pathv[count]; length = strlen(file); if (file[length-1] == SEPERATOR) { continue; } filename = strdup(file); filename = StripPath(filename); StripExtension(filename); AddItem(tree, filename, file); } return; }
void append_arp_tree() { GtkWidget *subtree; item[2] = gtk_tree_item_new_with_label(arp_buf.title); gtk_tree_append(GTK_TREE(tree),item[2]); subtree = gtk_tree_new(); gtk_tree_set_selection_mode (GTK_TREE(subtree),GTK_SELECTION_SINGLE); gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree (GTK_TREE_ITEM(item[2]), subtree); GtkWidget *subitem; subitem = gtk_tree_item_new_with_label (arp_buf.ar_hrd); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.ar_pro); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.ar_hln); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.ar_pln); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.ar_op); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.src_mac); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.src_ip); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.dst_mac); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (arp_buf.dst_ip); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); gtk_widget_show (item[2]); }
/* Sets the selection mode for the GtkTree tree. mode can be one of GTK_SELECTION_SINGLE for when only one item can be selected at a time. GTK_SELECTION_BROWSE for when one item must be selected. GTK_SELECTION_MULTIPLE for when many items can be selected at once. GTK_SELECTION_EXTENDED Reserved for later use. The selection mode is only defined for a root tree, as the root tree "owns" the selection. The default mode is GTK_SELECTION_SINGLE. */ int clip_GTK_TREESETSELECTIONMODE(ClipMachine * cm) { C_widget *ctree = _fetch_cw_arg(cm); GtkSelectionMode mode = _clip_parni(cm,2); CHECKCWID(ctree,GTK_IS_TREE); CHECKOPT(2,NUMERIC_t); gtk_tree_set_selection_mode(GTK_TREE(ctree->widget), mode); return 0; err: return 1; }
void append_data_tree() { GtkWidget *subtree; item[4] = gtk_tree_item_new_with_label(data_buf.title); gtk_tree_append(GTK_TREE(tree),item[4]); subtree = gtk_tree_new(); gtk_tree_set_selection_mode (GTK_TREE(subtree),GTK_SELECTION_SINGLE); gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree (GTK_TREE_ITEM(item[4]), subtree); GtkWidget *subitem; subitem = gtk_tree_item_new_with_label (data_buf.data); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); gtk_widget_show (item[4]); }
void start(void* v) { GtkWidget *scrolled_win, *tree, *hpanes, *vbox, *menu, *list; /*static gchar *itemnames[] = {"One", "Two", "Three", "Four", "Five"};*/ GtkItemFactory *item_factory; GtkAccelGroup *accel_group; gint nmenu_items; gint i; GtkWidget *table; GtkWidget *name_label, *info_vbox; GtkWidget *type_label; GtkWidget *annot_label, *annot_hbox, *annot_vscroll; GtkWidget *sep1; GtkWidget *props_hbox, *props_scrollwin; GtkWidget *menu_item; gtk_init (&SFE_Globals.ArgC, &SFE_Globals.ArgV); SFE_Globals.Data = stCreateStruct("new","x-unknown/x-unknown"); SFE_Globals.Modified = 0; SFE_Globals.HideColTitles = 0; /* a generic toplevel window */ SFE_Globals.Window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(SFE_Globals.Window), "Centrallix Structure File Editor"); gtk_signal_connect (GTK_OBJECT(SFE_Globals.Window), "delete_event", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); gtk_widget_set_usize(SFE_Globals.Window, 600, 350); /** Build the Open File... dialog box **/ SFE_Globals.OpenDialog = gtk_file_selection_new("Open File..."); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(SFE_Globals.OpenDialog)->cancel_button), "clicked", (GtkSignalFunc)sfe_ui_FileOpenCancel, GTK_OBJECT(SFE_Globals.OpenDialog)); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(SFE_Globals.OpenDialog)->ok_button), "clicked", (GtkSignalFunc)sfe_ui_FileOpenOk, GTK_OBJECT(SFE_Globals.OpenDialog)); /* vertical box organizing the menu vs. rest of app */ vbox = gtk_vbox_new(FALSE,1); gtk_container_add(GTK_CONTAINER(SFE_Globals.Window), vbox); gtk_widget_show(vbox); /* menu */ nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); accel_group = gtk_accel_group_new(); item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL); gtk_window_add_accel_group(GTK_WINDOW(SFE_Globals.Window), accel_group); menu = gtk_item_factory_get_widget(item_factory, "<main>"); gtk_box_pack_start(GTK_BOX(vbox), menu, FALSE, TRUE, 0); /*menu_item = gtk_item_factory_get_widget(GTK_ITEM_FACTORY(item_factory),"/View/Column Titles"); gtk_menu_item_activate(GTK_MENU_ITEM(menu_item));*/ gtk_widget_show(menu); /* horizontal layout box organizing the treeview and the data view pane */ hpanes = gtk_hpaned_new(); gtk_container_add(GTK_CONTAINER(vbox), hpanes); gtk_container_set_border_width (GTK_CONTAINER(hpanes), 5); gtk_paned_set_gutter_size(GTK_PANED(hpanes), 16); gtk_widget_show(hpanes); /* A generic scrolled window - for the treeview. */ scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_usize (scrolled_win, 150, 200); gtk_container_add (GTK_CONTAINER(hpanes), scrolled_win); gtk_widget_show (scrolled_win); /* Create the root tree and add it to the scrolled window */ tree = gtk_tree_new(); gtk_signal_connect (GTK_OBJECT(tree), "select_child", GTK_SIGNAL_FUNC(cb_select_child), tree); gtk_signal_connect (GTK_OBJECT(tree), "unselect_child", GTK_SIGNAL_FUNC(cb_unselect_child), tree); gtk_signal_connect (GTK_OBJECT(tree), "selection_changed", GTK_SIGNAL_FUNC(sfe_ui_TreeSelectionChanged), tree); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_win), tree); gtk_tree_set_selection_mode (GTK_TREE(tree), GTK_SELECTION_SINGLE); gtk_tree_set_view_mode(GTK_TREE(tree), GTK_TREE_VIEW_ITEM); gtk_widget_show (tree); SFE_Globals.TreeView = tree; /** build the item name section **/ info_vbox = gtk_vbox_new(FALSE,1); gtk_container_add(GTK_CONTAINER(hpanes), info_vbox); gtk_widget_show(info_vbox); table = gtk_table_new(3,2,FALSE); gtk_box_pack_start(GTK_BOX(info_vbox), table, FALSE, TRUE, 0); gtk_widget_show(table); name_label = gtk_label_new("Name:"); gtk_label_set_justify(GTK_LABEL(name_label), GTK_JUSTIFY_LEFT); gtk_table_attach(GTK_TABLE(table), name_label, 0, 1, 0, 1, 0, 0, 0, 0); gtk_widget_show(name_label); SFE_Globals.NameEdit = gtk_entry_new_with_max_length(63); gtk_table_attach(GTK_TABLE(table), SFE_Globals.NameEdit, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0, 0); gtk_widget_show(SFE_Globals.NameEdit); /** Item type **/ type_label = gtk_label_new("Type:"); gtk_label_set_justify(GTK_LABEL(type_label), GTK_JUSTIFY_LEFT); gtk_table_attach(GTK_TABLE(table), type_label, 0, 1, 1, 2, 0, 0, 0, 0); gtk_widget_show(type_label); SFE_Globals.TypeCombo = gtk_combo_new(); gtk_table_attach(GTK_TABLE(table), SFE_Globals.TypeCombo, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0, 8); gtk_widget_show(SFE_Globals.TypeCombo); /** Annotation/description/comments section **/ annot_label = gtk_label_new("Desc:"); gtk_label_set_justify(GTK_LABEL(annot_label), GTK_JUSTIFY_LEFT); gtk_table_attach(GTK_TABLE(table), annot_label, 0, 1, 2, 3, 0, 0, 0, 0); gtk_widget_show(annot_label); annot_hbox = gtk_hbox_new(FALSE,1); gtk_table_attach(GTK_TABLE(table), annot_hbox, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0, 0); gtk_widget_show(annot_hbox); SFE_Globals.AnnotText = gtk_text_new(NULL,NULL); gtk_text_set_editable(GTK_TEXT(SFE_Globals.AnnotText), TRUE); gtk_widget_set_usize(SFE_Globals.AnnotText, 100, 48); gtk_container_add(GTK_CONTAINER(annot_hbox), SFE_Globals.AnnotText); gtk_widget_show(SFE_Globals.AnnotText); annot_vscroll = gtk_vscrollbar_new(GTK_TEXT(SFE_Globals.AnnotText)->vadj); gtk_box_pack_end(GTK_BOX(annot_hbox), annot_vscroll, FALSE, TRUE, 0); gtk_widget_show(annot_vscroll); sep1 = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(info_vbox), sep1, FALSE, TRUE, 8); gtk_widget_show(sep1); /** Add a columnar list box for the attributes **/ props_scrollwin = gtk_scrolled_window_new(NULL,NULL); gtk_container_add(GTK_CONTAINER(info_vbox), props_scrollwin); gtk_widget_show(props_scrollwin); SFE_Globals.AttrsCList = gtk_clist_new_with_titles(2, props_clist_titles); gtk_clist_set_selection_mode(GTK_CLIST(SFE_Globals.AttrsCList), GTK_SELECTION_SINGLE); gtk_container_add(GTK_CONTAINER(props_scrollwin), SFE_Globals.AttrsCList); gtk_widget_show(SFE_Globals.AttrsCList); gtk_signal_connect (GTK_OBJECT(SFE_Globals.AttrsCList), "select_row", GTK_SIGNAL_FUNC(sfe_ui_CListAttrSelected), SFE_Globals.AttrsCList); #if 0 /** Put some cruft in the treeview **/ for (i = 0; i < 5; i++) { GtkWidget *subtree, *item; gint j; /* Create a tree item */ item = gtk_tree_item_new_with_label (itemnames[i]); /* Add it to the parent tree */ gtk_tree_append (GTK_TREE(tree), item); gtk_widget_show (item); subtree = gtk_tree_new(); /* This is still necessary if you want these signals to be called * for the subtree's children. Note that selection_change will be * signalled for the root tree regardless. */ gtk_signal_connect (GTK_OBJECT(subtree), "select_child", GTK_SIGNAL_FUNC(cb_select_child), subtree); gtk_signal_connect (GTK_OBJECT(subtree), "unselect_child", GTK_SIGNAL_FUNC(cb_unselect_child), subtree); /* Set this item's subtree - note that you cannot do this until * AFTER the item has been added to its parent tree! */ gtk_tree_item_set_subtree (GTK_TREE_ITEM(item), subtree); for (j = 0; j < 5; j++) { GtkWidget *subitem; /* Create a subtree item, in much the same way */ subitem = gtk_tree_item_new_with_label (itemnames[j]); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); } } #endif /** Open the main window **/ gtk_widget_show (SFE_Globals.Window); /** Load any file specified on the command line **/ if (SFE_Globals.ArgC == 2 && SFE_Globals.ArgV[1]) sfeLoadFile(SFE_Globals.ArgV[1]); else sfeRebuildUI(SFE_Globals.Data, GTK_TREE(tree)); /** Create the attribute editing window **/ SFE_Globals.AttrEditWindow = sfe_ui_CreateAttrDialog(); /** Enter the event loop for GTK **/ gtk_main(); thExit(); }
void selection_made( GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data ) { gchar *text; gint i = 0; /* 取得存储在被选中的行和列的单元格上的文本 * 当鼠标点击时,我们用text参数接收一个指针 */ gtk_clist_get_text(GTK_CLIST(clist), row, column, &text); #if 0 /*打印一些关于选中了哪一行的信息 */ g_print("You selected row %d. More specifically you clicked in " "column %d, and the text in this cell is %s\n\n", row, column, text); #endif //tree = gtk_tree_new(); for (i = 0;i < 5;i++) { if (item[i]) { gtk_tree_item_remove_subtree((GtkTreeItem *)item[i]); gtk_container_remove (GTK_CONTAINER(tree), item[i]); item[i] = NULL; } } #if 0 tree = gtk_tree_new(); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win),tree); gtk_tree_set_selection_mode (GTK_TREE(tree),GTK_SELECTION_MULTIPLE); #endif read_record(row); pcap_parser((uint8_t *)pcap_packet_buf,&pcaphdr); append_frame_tree(); append_ether_tree(); switch (proto_type) { case IPPROTO_TCP: { append_ip_tree(); append_tcp_tree(); if (app_len != 0) { append_data_tree(); app_len = 0; } } break; case IPPROTO_UDP: { append_ip_tree(); append_udp_tree(); if (app_len != 0) { append_data_tree(); app_len = 0; } } break; case ARP: { append_arp_tree(); } break; default: break; } display_contents(); return; }
void append_ip_tree() { GtkWidget *subtree; gint i = 0; item[2] = gtk_tree_item_new_with_label(ip_buf.title); gtk_tree_append(GTK_TREE(tree),item[2]); subtree = gtk_tree_new(); gtk_tree_set_selection_mode (GTK_TREE(subtree),GTK_SELECTION_SINGLE); gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); gtk_tree_item_set_subtree (GTK_TREE_ITEM(item[2]), subtree); GtkWidget *subitem; subitem = gtk_tree_item_new_with_label (ip_buf.version); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.headlen); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.tos); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.tot_len); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.id); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.df); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.mf); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.offset); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.ttl); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.checksum); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.protocol); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.src_ip); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); subitem = gtk_tree_item_new_with_label (ip_buf.dst_ip); gtk_tree_append (GTK_TREE(subtree), subitem); gtk_widget_show (subitem); gtk_widget_show (item[2]); }