[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