Gtk.FilterListModel¶
class — extends GObject.Object, Gio.ListModel, SectionModel
A list model that filters the elements of another model.
It hides some elements from the underlying model according to
criteria given by a GtkFilter.
The model can be set up to do incremental filtering, so that
filtering long lists doesn't block the UI. See
FilterListModel.set_incremental for details.
GtkFilterListModel passes through sections from the underlying model.
Constructors¶
new¶
@classmethod
def new(cls, model: Gio.ListModel | None = ..., filter: Filter | None = ...) -> FilterListModel
Creates a new GtkFilterListModel that will filter model using the given
filter.
Parameters:
model— the model to sortfilter— filter
Methods¶
get_filter¶
Gets the GtkFilter currently set on self.
get_incremental¶
Returns whether incremental filtering is enabled.
See FilterListModel.set_incremental.
get_model¶
Gets the model currently filtered or None if none.
get_pending¶
Returns the number of items that have not been filtered yet.
You can use this value to check if self is busy filtering by
comparing the return value to 0 or you can compute the percentage
of the filter remaining by dividing the return value by the total
number of items in the underlying model:
pending = gtk_filter_list_model_get_pending (self);
model = gtk_filter_list_model_get_model (self);
percentage = pending / (double) g_list_model_get_n_items (model);
If no filter operation is ongoing - in particular when
FilterListModel.incremental is False - this
function returns 0.
get_watch_items¶
Returns whether watching items is enabled.
See FilterListModel.set_watch_items.
set_filter¶
Sets the filter used to filter items.
Parameters:
filter— filter to use
set_incremental¶
Sets the filter model to do an incremental sort.
When incremental filtering is enabled, the GtkFilterListModel will not
run filters immediately, but will instead queue an idle handler that
incrementally filters the items and adds them to the list. This of course
means that items are not instantly added to the list, but only appear
incrementally.
When your filter blocks the UI while filtering, you might consider turning this on. Depending on your model and filters, this may become interesting around 10,000 to 100,000 items.
By default, incremental filtering is disabled.
See FilterListModel.get_pending for progress information
about an ongoing incremental filtering operation.
Parameters:
incremental—Trueto enable incremental filtering
set_model¶
Sets the model to be filtered.
Note that GTK makes no effort to ensure that model conforms to
the item type of self. It assumes that the caller knows what they
are doing and have set up an appropriate filter to ensure that item
types match.
Parameters:
model— The model to be filtered
set_watch_items¶
Sets the filter model to monitor properties of its items.
This allows implementations of Filter that support expression
watching to react to property changes. This property has no effect if the
current filter doesn't support watching items.
By default, watching items is disabled.
Parameters:
watch_items—Trueto watch items for property changes
Properties¶
filter¶
The filter for this model.
incremental¶
If the model should filter items incrementally.
item_type¶
The type of items. See Gio.ListModel.get_item_type.
model¶
The model being filtered.
n_items¶
The number of items. See Gio.ListModel.get_n_items.
pending¶
Number of items not yet filtered.
watch_items¶
Monitor the list items for changes. It may impact performance.