[Debtags-commits] [svn] r2047 - in debtags-edit/1.2: . src
Enrico Zini
enrico at alioth.debian.org
Wed Nov 1 14:34:19 CET 2006
Author: enrico
Date: Wed Nov 1 14:34:18 2006
New Revision: 2047
Modified:
debtags-edit/1.2/ (props changed)
debtags-edit/1.2/src/FilterPanel.cc
debtags-edit/1.2/src/FilterPanel.h
Log:
r3599 at viaza: enrico | 2006-11-01 14:33:43 +0100
Huge speedup in filling in the FilterPanel package list
Modified: debtags-edit/1.2/src/FilterPanel.cc
==============================================================================
--- debtags-edit/1.2/src/FilterPanel.cc (original)
+++ debtags-edit/1.2/src/FilterPanel.cc Wed Nov 1 14:34:18 2006
@@ -130,6 +130,7 @@
itemListModel = Gtk::ListStore::create(itemListModelColumns);
sortedModel = Gtk::TreeModelSort::create(itemListModel);
+ noModel = itemList.get_model();
itemList.set_model(sortedModel);
// Add the view columns
@@ -138,14 +139,20 @@
count = itemList.append_column("Name", itemListModelColumns.name);
column = itemList.get_column(count - 1);
+ column->set_sizing(Gtk::TREE_VIEW_COLUMN_FIXED);
+ column->set_fixed_width(85);
column->set_resizable(true);
column->set_sort_column(itemListModelColumns.name);
count = itemList.append_column("Description", itemListModelColumns.desc);
column = itemList.get_column(count - 1);
+ column->set_sizing(Gtk::TREE_VIEW_COLUMN_FIXED);
+ //column->set_fixed_width(40);
column->set_resizable(true);
column->set_sort_column(itemListModelColumns.desc);
+ itemList.set_fixed_height_mode(true);
+
Glib::RefPtr<Gtk::TreeSelection> itemListSelection = itemList.get_selection();
itemListSelection->set_mode(Gtk::SELECTION_SINGLE);
@@ -600,9 +607,6 @@
static const unsigned int max_pkg = MAX_VISIBLE_PKG;
#endif
printf("UPDATELIST start\n");
- doc.subCollection.clear();
-
- typedef Package Package;
bool filters = false;
@@ -688,11 +692,15 @@
*/
}
+ printf("UPDATELIST built filter\n");
+
if (filters)
doc.setFilter(p);
else
doc.resetFilter();
+ printf("UPDATELIST created subcoll\n");
+
/*
if (specialID != 0)
{
@@ -760,11 +768,26 @@
#endif
foundStats.set_text(state.str());
- //pkgs.sort();
+ // To make things faster when inserting a large number of items, I create a
+ // new ListStore and fill it up while it's not connected to anything.
+ // Then, when the data is there, I finally attach it to a new TreeModelSort
+ // and to the TreeView.
+
+ int sortColumnID;
+ Gtk::SortType sortOrder;
+ sortedModel->get_sort_column_id(sortColumnID, sortOrder);
+
+ itemList.set_model(noModel);
- itemListModel->clear();
+ itemListModel = Gtk::ListStore::create(itemListModelColumns);
doc.subCollection.output(tagcoll::coll::inserter(*this));
+ printf("UPDATELIST filled up model\n");
+
+ sortedModel = Gtk::TreeModelSort::create(itemListModel);
+ sortedModel->set_sort_column(sortColumnID, sortOrder);
+ itemList.set_model(sortedModel);
+
printf("UPDATELIST end\n");
submitButton.set_sensitive(false);
Modified: debtags-edit/1.2/src/FilterPanel.h
==============================================================================
--- debtags-edit/1.2/src/FilterPanel.h (original)
+++ debtags-edit/1.2/src/FilterPanel.h Wed Nov 1 14:34:18 2006
@@ -63,6 +63,7 @@
Gtk::ScrolledWindow scrolledItemList;
Glib::RefPtr<Gtk::ListStore> itemListModel;
Glib::RefPtr<Gtk::TreeModelSort> sortedModel;
+ Glib::RefPtr<Gtk::TreeModel> noModel;
TagSelector tagSelector;
int specialID;
More information about the Debtags-commits
mailing list