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]