[Extractor-gtk-cvslog] SF.net SVN: extractor-gtk:[81] trunk/extractor/extractor.c
Extract files from unusual archive formats
Brought to you by:
someone-guy
From: <som...@us...> - 2008-08-22 16:01:46
|
Revision: 81 http://extractor-gtk.svn.sourceforge.net/extractor-gtk/?rev=81&view=rev Author: someone-guy Date: 2008-08-22 16:01:44 +0000 (Fri, 22 Aug 2008) Log Message: ----------- Fix speed problems related to updating the file list. Modified Paths: -------------- trunk/extractor/extractor.c Modified: trunk/extractor/extractor.c =================================================================== --- trunk/extractor/extractor.c 2008-05-23 17:48:15 UTC (rev 80) +++ trunk/extractor/extractor.c 2008-08-22 16:01:44 UTC (rev 81) @@ -58,6 +58,7 @@ GtkWidget *dir_button; GtkListStore *gflist; +GtkWidget *treeview; GtkTreeSelection *selection; FILE *input_file = NULL; file_t *flist = NULL; @@ -99,8 +100,16 @@ g_free(path); } +static void set_treeview_model(GtkTreeView *view, GtkTreeModel *model) { + GtkTreeModel *sort = gtk_tree_model_sort_new_with_model(model); + gtk_tree_view_set_model(view, sort); + g_object_unref(sort); +} + static void clear_treeview() { + gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), NULL); gtk_list_store_clear(gflist); + set_treeview_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(gflist)); } /** @@ -111,14 +120,19 @@ */ static void set_treeview(file_t *list) { GtkTreeIter iter; - clear_treeview(); - if (!list) return; + if (!list) { + clear_treeview(); + return; + } + gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), NULL); + gtk_list_store_clear(gflist); while (list->name) { gtk_list_store_append(gflist, &iter); gtk_list_store_set(gflist, &iter, FNAME_COL, list->name, SIZE_COL, list->len, OFFSET_COL, list->start, COMPR_COL, list->compressed, PTR_COL, list, -1); list++; } + set_treeview_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(gflist)); } static int open_file(const char *fname, const fmt_desc_t *fmt) { @@ -239,11 +253,9 @@ GtkWidget *file_button; GtkWidget *button; GtkWidget *scrollwin; - GtkWidget *treeview; GtkWidget *lbl; GtkTreeViewColumn *column; GtkCellRenderer *renderer; - GtkTreeModel *sort; int row = 0, col = 0; gtk_disable_setlocale(); @@ -268,8 +280,8 @@ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0); gflist = gtk_list_store_new(N_COLS, coltypes[0], coltypes[1], coltypes[2], coltypes[3], coltypes[4]); - sort = gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(gflist)); - treeview = gtk_tree_view_new_with_model(sort); + treeview = gtk_tree_view_new(); + set_treeview_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(gflist)); gtk_tree_view_set_enable_search(GTK_TREE_VIEW(treeview), TRUE); renderer = gtk_cell_renderer_text_new(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |