コード例 #1
0
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]);
}
コード例 #2
0
ファイル: sfedit.c プロジェクト: LightSys/centrallix
/*** sfeRebuildUI_r - recursively build the new treeview display of the
 *** parsed structure file representation.
 ***/
int
sfeRebuildUI_r(pStructInf data, GtkTreeItem *subitem)
    {
    int i;
    pStructInf subinf;
    GtkWidget *subtreeitem, *subsubtree;
    GtkWidget *subtree = NULL;

	/** Loop through the subinfs, and add items/subtrees for each. **/
	for(i=0;i<data->nSubInf;i++) if (stStructType(data->SubInf[i]) == ST_T_SUBGROUP)
	    {
	    subinf = data->SubInf[i];

	    /** Only add the subtree once, and only if we need a subtree.  This
	     ** is why we do this in here instead of outside the loop.
	     **/
	    if (!subtree)
		{
		subtree = gtk_tree_new();
		gtk_tree_item_set_subtree(GTK_TREE_ITEM(subitem), subtree);
		gtk_tree_set_view_mode(GTK_TREE(subtree), GTK_TREE_VIEW_ITEM);
		}

	    /** Add the item to the subtree **/
	    subtreeitem = sfeBuildTreeItemWithImage(subinf);
	    gtk_tree_append(GTK_TREE(subtree), subtreeitem);
	    gtk_widget_show(subtreeitem);
	    sfeRebuildUI_r(subinf, GTK_TREE_ITEM(subtreeitem));
	    }
    
    return 0;
    }
コード例 #3
0
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]);
}
コード例 #4
0
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;
}
コード例 #5
0
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]);
}
コード例 #6
0
ファイル: tree.c プロジェクト: amery/clip-itk
/* Sets the 'viewmode' for the GtkTree in tree.
The 'viewmode' defines how the tree looks when an item is selected.
mode can be one of:
    GTK_TREE_VIEW_LINE : When an item is selected the entire GtkTreeItem is highlighted.
    GTK_TREE_VIEW_ITEM : When an item is selected only the selected item's child widget is highlighted.
The default mode is GTK_TREE_VIEW_LINE. */
int
clip_GTK_TREESETVIEWMODE(ClipMachine * cm)
{
	C_widget  *ctree = _fetch_cw_arg(cm);
        GtkTreeViewMode mode = _clip_parni(cm,2);

        CHECKCWID(ctree,GTK_IS_TREE);
        CHECKOPT(2,NUMERIC_t);

	gtk_tree_set_view_mode(GTK_TREE(ctree->widget), mode);
	return 0;
err:
	return 1;
}
コード例 #7
0
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]);
}
コード例 #8
0
ファイル: sfedit.c プロジェクト: LightSys/centrallix
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();
    }
コード例 #9
0
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]);
}
コード例 #10
0
ファイル: tree.c プロジェクト: jimiszm/peos
GtkWidget * create_task_tree(int n) {
  int i; /*n=Process #*/
  char *strr;
  char *str;
  counting_action = 0;
  
  GtkWidget *tree, *subtree;
  GtkWidget *treename;
  GtkWidget *box;
   
  tree = gtk_tree_new();

  strr = (char *) malloc (sizeof(char) * (strlen(xmlGetProp (table[n].process, "model")))
				+ strlen (" Pid: ")+ strlen (xmlGetProp(table[n].process, "pid")) + 256);
  strcat (strcat (strcpy (strr, xmlGetProp (table[n].process, "model")), " Pid: "), xmlGetProp(table[n].process, "pid"));
  
  treename = gtk_tree_item_new();

  box = setpixmap (strr, NULL);
  gtk_container_add (GTK_CONTAINER (treename), box);
  gtk_tree_append (GTK_TREE (tree), treename);
  free (strr);
  strr = NULL;
  
  subtree = gtk_tree_new();
  gtk_tree_item_set_subtree(GTK_TREE_ITEM(treename), subtree);
  gtk_tree_item_expand (GTK_TREE_ITEM(treename));
  linklist[n][counting_action].prev = NULL; 
  for (i = 0; i < table[n].list.count; i++) {
	GtkWidget *item, *itersubtree;
	GtkWidget *box;
  	if (!xmlStrcmp ((table[n].list.action[i])->name, (const xmlChar *) "action")) {
		item = gtk_tree_item_new(); 
  		str = (char *) malloc (sizeof(char) * (2+ strlen (xmlGetProp (table[n].list.action[i], "name"))));
		strcpy (str, xmlGetProp (table[n].list.action[i], "name"));
  		box = setpixmap (str, table[n].list.action[i]);
		gtk_container_add (GTK_CONTAINER (item), box);
  		gtk_tree_append (GTK_TREE(subtree), item);
  		free (str);
  		str = NULL;
		linklist[n][counting_action-1].next = table[n].list.action[i]; 
		linklist[n][counting_action].cur = table[n].list.action[i]; 
		linklist[n][counting_action].item = item;
		linklist[n][counting_action+1].prev = table[n].list.action[i]; 
		counting_action++;
  	}  else if ( xmlStrcmp (table[n].list.action[i]->name, (const xmlChar *) "action")) {
  		str = (char *) malloc (sizeof(char) * (2 +strlen(table[n].list.action[i]->name)));
		item = gtk_tree_item_new();
		strcpy (str, table[n].list.action[i]->name);
  		box = setpixmap (str, table[n].list.action[i]);
		gtk_container_add (GTK_CONTAINER (item), box);
  		free (str);
  		str = NULL;
 		itersubtree = create_subtree(table[n].list.iterptr, n);
  		gtk_tree_append (GTK_TREE(subtree), item);
  		gtk_tree_set_view_mode (GTK_TREE (itersubtree), GTK_TREE_VIEW_LINE);
		gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), itersubtree);
		gtk_tree_item_expand (GTK_TREE_ITEM(item));
  		gtk_widget_show(itersubtree);
        } 

  gtk_signal_connect (GTK_OBJECT(item), "select", GTK_SIGNAL_FUNC(tree_select), table[n].list.action[i]);
  gtk_signal_connect (GTK_OBJECT(item), "deselect", GTK_SIGNAL_FUNC(tree_deselect), NULL);
  gtk_signal_connect (GTK_OBJECT(item), "toggle", GTK_SIGNAL_FUNC(tree_toggle), NULL);
  gtk_signal_connect (GTK_OBJECT(item), "expand", GTK_SIGNAL_FUNC(tree_expand), NULL);
  gtk_signal_connect (GTK_OBJECT(item), "collapse", GTK_SIGNAL_FUNC(tree_collapse), NULL);
  
  gtk_widget_show (item);
  }
  linklist[n][counting_action-1].next = NULL; 

  gtk_widget_show(subtree);
  gtk_widget_show(treename);
  gtk_widget_show(tree);
  return tree;
}