[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Reusing GtkTreeView



Hello...

This code works fine for some time.... but crashes anytime with the
following log....

Gtk-CRITICAL **: gtk_list_store_get_value: assertion `VALID_ITER
(iter, list_store)' failed

GLib-GObject-CRITICAL **: g_object_set_property: assertion `G_IS_VALUE
(value)' failed

GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed



I am trying to reuse the same GtkTreeView....

code:

	GtkListStore*		list_store;
	GtkTreeModel*		model;
	GObject*			selection;
	GtkTreeViewColumn*		column;
	GtkCellRenderer*		renderer;
	GtkImage*			icon=NULL ;
	GtkTreeIter 		iter;
	bt_int32_t			i ;
	
	bt_app_ui_state_t	*this = (bt_app_ui_state_t*)bt_app_ui_get_state();

	if (!GTK_IS_WIDGET(this->scrolled_window_ftp))
	{
		this->scrolled_window_ftp = gtk_scrolled_window_new(NULL, NULL);
		gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(this->scrolled_window_ftp),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
		list_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF,
G_TYPE_STRING,G_TYPE_STRING,G_TYPE_INT);
		model = GTK_TREE_MODEL(list_store);
		this->ftp_menu_tree =gtk_tree_view_new_with_model (GTK_TREE_MODEL
(list_store));
		gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(this->ftp_menu_tree), FALSE);
		gtk_container_add (GTK_CONTAINER
(this->scrolled_window_ftp),GTK_WIDGET(this->ftp_menu_tree ));
		selection = G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW
(this->ftp_menu_tree)));
		gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
GTK_SELECTION_SINGLE);
		
                                column = gtk_tree_view_column_new();
		renderer = gtk_cell_renderer_pixbuf_new();
		gtk_cell_renderer_set_fixed_size(renderer,66,70);
		gtk_tree_view_column_pack_start(column, renderer, FALSE);
		gtk_tree_view_column_set_attributes(column, renderer,"pixbuf", 0,NULL);
		gtk_tree_view_append_column(GTK_TREE_VIEW(this->ftp_menu_tree), column);
		column = gtk_tree_view_column_new();
		renderer = gtk_cell_renderer_text_new();
		gtk_tree_view_column_pack_start(column, renderer, TRUE);
		gtk_tree_view_column_set_attributes(column, renderer,"text", 1,NULL);
		gtk_tree_view_append_column(GTK_TREE_VIEW(this->ftp_menu_tree), column);
		column = gtk_tree_view_column_new();
		renderer = gtk_cell_renderer_text_new();
		gtk_tree_view_column_pack_start(column, renderer, TRUE);
		gtk_tree_view_column_set_attributes(column, renderer,"text", 2,NULL);
		gtk_tree_view_append_column(GTK_TREE_VIEW(this->ftp_menu_tree), column);
		column = gtk_tree_view_column_new();
		renderer = gtk_cell_renderer_text_new();
		gtk_tree_view_column_pack_start(column, renderer, TRUE);
		gtk_tree_view_column_set_attributes(column, renderer,"text", 3,NULL);
		gtk_tree_view_append_column(GTK_TREE_VIEW(this->ftp_menu_tree), column);
		gtk_tree_view_column_set_visible(column, FALSE);
		gtk_tree_view_insert_column (GTK_TREE_VIEW(this->ftp_menu_tree), column, -1);
		gtk_signal_connect(GTK_OBJECT(this->ftp_menu_tree),
"clicked",GTK_SIGNAL_FUNC(__bt_app_ui_ftp_browse_list_click_cb),view);
		gtk_container_add(GTK_CONTAINER(this->ftp_browse_list_form),this->scrolled_window_ftp);
		bt_log_print(BT_APP,"One time............ \n");
	}
	else
	{
		bt_log_print(BT_APP,"Second Time onwards............ \n");
		if(gtk_tree_view_clear_all_item(GTK_TREE_VIEW(this->ftp_menu_tree)))
			bt_log_print(BT_APP,"Ftp Tree menu cleared............ \n");
		else
			bt_log_print(BT_APP,"Ftp Tree menu NOT cleared............. \n");
	}
		
		
	
	
	bt_log_print(BT_APP,"Folder Count %d
\n",ftp_browse_info->folder_count + ftp_browse_info->file_count);
	
	for (i = 0; i < (ftp_browse_info->folder_count +
ftp_browse_info->file_count);  i++)
	{
		if (i < ftp_browse_info->folder_count)
		{
			if(NULL!=icon)
			{
				gtk_widget_destroy(GTK_WIDGET(icon));
				icon=NULL;
			}
			icon = GTK_IMAGE(bt_app_ui_img_load (IDB_BT_FOLDER));
			bt_log_print(BT_APP,"Folder Image set \n");
			model = gtk_tree_view_get_model (GTK_TREE_VIEW(this->ftp_menu_tree));
			list_store = GTK_LIST_STORE(model);
			gtk_list_store_append (list_store, &iter);
			
			gtk_list_store_set (list_store, &iter, 0,
gtk_image_get_pixbuf(icon),
1,ftp_browse_info->folder_list[i].attribute,2,"",3,i, -1);
			bt_log_print(BT_APP,"Folder [%s] set
\n",ftp_browse_info->folder_list[i].attribute);
		}
		else
		{
			if(NULL!=icon)
			{
				gtk_widget_destroy(GTK_WIDGET(icon));
				icon=NULL;
			}
			icon = GTK_IMAGE(bt_app_ui_img_load (IDB_BT_FILE));
			bt_log_print(BT_APP,"File Image set \n");
			model = gtk_tree_view_get_model (GTK_TREE_VIEW(this->ftp_menu_tree));
			list_store = GTK_LIST_STORE(model);
			gtk_list_store_append (list_store, &iter);
			size =(ftp_browse_info->file_list[i - ftp_browse_info->folder_count].size);
			
			if(size>999.0)
			{
				bt_log_print(BT_APP,"File size Bytes");
				size=size/1024;
				if(size>999.0)
				{
					bt_log_print(BT_APP,"File size MB");
					size=size/1024.0;
					sprintf(file_size,"%0.2f MB",size);
					bt_log_print("size=[%s]",file_size);
				}
				else
				{
					bt_log_print(BT_APP,"File size KB");
					sprintf(file_size,"%0.2f KB",size);
					bt_log_print("size=[%s]",file_size);
				}
			}
			else
			{
				sprintf(file_size,"%d",(ftp_browse_info->file_list[i -
ftp_browse_info->folder_count].size));
				bt_log_print("size=[%s]",file_size);
			}
			gtk_list_store_set (list_store, &iter, 0,
gtk_image_get_pixbuf(icon), 1,ftp_browse_info->file_list[i -
ftp_browse_info->folder_count].attribute,2,file_size,3,i, -1);
			bt_log_print(BT_APP,"Folder [%s] set
\n",ftp_browse_info->file_list[i -
ftp_browse_info->folder_count].attribute);
		}	
	}
	bt_log_print(BT_APP,"Updating list complete 1\n");

	bt_log_print(BT_APP,"Updating list complete 2\n");
	gtk_widget_show(GTK_WIDGET(this->ftp_menu_tree));
	bt_log_print(BT_APP,"Updating list complete 3\n");
	
	bt_log_print(BT_APP,"Updating list complete 4\n");
	gtk_widget_show(this->scrolled_window_ftp);
	bt_log_print(BT_APP,"Updating list complete 5\n");
	return TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]