class Gtk::FilterListModel
- Gtk::FilterListModel
- GObject::Object
- Reference
- Object
Overview
Gtk::FilterListModel
is a list model that filters the elements of
the underlying model according to a Gtk::Filter
.
It hides some elements from the other model according to
criteria given by a Gtk::Filter
.
The model can be set up to do incremental searching, so that
filtering long lists doesn't block the UI. See
Gtk::FilterListModel#incremental=
for details.
Included Modules
Defined in:
lib/gi-crystal/src/auto/gtk-4.0/filter_list_model.crConstructors
-
.new(model : Gio::ListModel | Nil, filter : Gtk::Filter | Nil) : self
Creates a new
Gtk::FilterListModel
that will filter model using the given filter. -
.new
Initialize a new
FilterListModel
. - .new(*, filter : Gtk::Filter | Nil = nil, incremental : Bool | Nil = nil, model : Gio::ListModel | Nil = nil, pending : UInt32 | Nil = nil)
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#==(other : self)
Returns
true
if this reference is the same as other. -
#filter : Gtk::Filter | Nil
Gets the
Gtk::Filter
currently set on self. -
#filter=(filter : Gtk::Filter | Nil) : Nil
Sets the filter used to filter items.
-
#hash(hasher)
See
Object#hash(hasher)
-
#incremental : Bool
Returns whether incremental filtering is enabled.
-
#incremental=(incremental : Bool) : Nil
Sets the filter model to do an incremental sort.
- #incremental? : Bool
-
#model : Gio::ListModel | Nil
Gets the model currently filtered or
nil
if none. -
#model=(model : Gio::ListModel | Nil) : Nil
Sets the model to be filtered.
-
#pending : UInt32
Returns the number of items that have not been filtered yet.
Instance methods inherited from module Gio::ListModel
item(position : UInt32) : GObject::Object | Nil
item,
item_type : UInt64
item_type,
items_changed(position : UInt32, removed : UInt32, added : UInt32) : Nilitems_changed(position : Int, removed : Int, added : Int) : Nil items_changed, items_changed_signal items_changed_signal, n_items : UInt32 n_items, to_unsafe to_unsafe
Constructor methods inherited from module Gio::ListModel
cast(obj : GObject::Object) : self
cast
Class methods inherited from module Gio::ListModel
cast?(obj : GObject::Object) : self | Nil
cast?,
g_type : UInt64
g_type
Instance methods inherited from class GObject::Object
==(other : self)
==,
bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding
bind_property,
bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding
bind_property_full,
data(key : String) : Pointer(Void) | Nil
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
hash(hasher)
hash,
notify(property_name : String) : Nil
notify,
notify_by_pspec(pspec : GObject::ParamSpec) : Nil
notify_by_pspec,
notify_signal
notify_signal,
property(property_name : String, value : _) : Nil
property,
qdata(quark : UInt32) : Pointer(Void) | Nil
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void) | Nil) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void) | Nil
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void) | Nil
steal_qdata,
thaw_notify : Nil
thaw_notify,
to_unsafe : Pointer(Void)
to_unsafe,
watch_closure(closure : GObject::Closure) : Nil
watch_closure
Constructor methods inherited from class GObject::Object
cast(obj : GObject::Object) : self
cast,
new(pointer : Pointer(Void), transfer : GICrystal::Transfer)new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv
Class methods inherited from class GObject::Object
cast?(obj : GObject::Object) : self | Nil
cast?,
compat_control(what : UInt64, data : Pointer(Void) | Nil) : UInt64
compat_control,
g_type : UInt64
g_type,
interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec
interface_find_property,
interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec)
interface_list_properties
Macros inherited from class GObject::Object
previous_vfunc(*args)
previous_vfunc,
previous_vfunc!(*args)
previous_vfunc!,
signal(signature)
signal
Constructor Detail
Creates a new Gtk::FilterListModel
that will filter model using the given filter.
Class Method Detail
Returns the type id (GType) registered in GLib type system.
Instance Method Detail
Returns true
if this reference is the same as other. Invokes same?
.
Returns whether incremental filtering is enabled.
Sets the filter model to do an incremental sort.
When incremental filtering is enabled, the Gtk::FilterListModel
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 Gtk::FilterListModel#pending
for progress information
about an ongoing incremental filtering operation.
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.
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:
WARNING ⚠️ The following code is in c ⚠️
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
Gtk::FilterListModel#incremental
is false
- this
function returns 0.