Reusing GtkTreeView
- From: "Divya yadav" <divyayadav gtk gmail com>
- To: gtk-app-devel-list gnome org
- Subject: Reusing GtkTreeView
- Date: Tue, 13 Nov 2007 15:55:15 +0530
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]