SortListModel#
Superclasses: Object
Implemented Interfaces: ListModel
, SectionModel
A GListModel
that sorts the elements of an underlying model
according to a GtkSorter
.
The model is a stable sort. If two items compare equal according
to the sorter, the one that appears first in the original model will
also appear first after sorting.
Note that if you change the sorter, the previous order will have no
influence on the new order. If you want that, consider using a
GtkMultiSorter
and appending the previous sorter to it.
The model can be set up to do incremental sorting, so that
sorting long lists doesn’t block the UI. See
set_incremental
for details.
GtkSortListModel
is a generic model and because of that it
cannot take advantage of any external knowledge when sorting.
If you run into performance issues with GtkSortListModel
,
it is strongly recommended that you write your own sorting list
model.
GtkSortListModel
allows sorting the items into sections. It
implements GtkSectionModel
and when section_sorter
is set, it will sort all items with that sorter and items comparing
equal with it will be put into the same section.
The sorter
will then be used to sort items
inside their sections.
Constructors#
Methods#
- class SortListModel
- get_incremental() bool #
Returns whether incremental sorting is enabled.
See
set_incremental
.
- get_pending() int #
Estimates progress of an ongoing sorting operation.
The estimate is the number of items that would still need to be sorted to finish the sorting operation if this was a linear algorithm. So this number is not related to how many items are already correctly sorted.
If you want to estimate the progress, you can use code like this:
pending = gtk_sort_list_model_get_pending (self); model = gtk_sort_list_model_get_model (self); progress = 1.0 - pending / (double) MAX (1, g_list_model_get_n_items (model));
If no sort operation is ongoing - in particular when
incremental
isFalse
- this function returns 0.
- get_section_sorter() Sorter | None #
Gets the section sorter that is used to sort items of
self
into sections.Added in version 4.12.
- set_incremental(incremental: bool) None #
Sets the sort model to do an incremental sort.
When incremental sorting is enabled, the
GtkSortListModel
will not do a complete sort immediately, but will instead queue an idle handler that incrementally sorts the items towards their correct position. This of course means that items do not instantly appear in the right place. It also means that the total sorting time is a lot slower.When your filter blocks the UI while sorting, you might consider turning this on. Depending on your model and sorters, this may become interesting around 10,000 to 100,000 items.
By default, incremental sorting is disabled.
See
get_pending
for progress information about an ongoing incremental sorting operation.- Parameters:
incremental –
True
to sort incrementally
- set_model(model: ListModel | None = None) None #
Sets the model to be sorted.
The
model
’s item type must conform to the item type ofself
.- Parameters:
model – The model to be sorted
Properties#
- class SortListModel