class Gtk::MapListModel

Overview

A Gtk::MapListModel maps the items in a list model to different items.

Gtk::MapListModel uses a Gtk::MapListModelMapFunc.

Example: Create a list of Gtk::EventControllers

WARNING ⚠️ The following code is in c ⚠️

static gpointer
map_to_controllers (gpointer widget,
                    gpointer data)
{
  gpointer result = gtk_widget_observe_controllers (widget);
  g_object_unref (widget);
  return result;
}

widgets = gtk_widget_observe_children (widget);

controllers = gtk_map_list_model_new (widgets,
                                      map_to_controllers,
                                      NULL, NULL);

model = gtk_flatten_list_model_new (GTK_TYPE_EVENT_CONTROLLER,
                                    controllers);

Gtk::MapListModel will attempt to discard the mapped objects as soon as they are no longer needed and recreate them if necessary.

Included Modules

Defined in:

lib/gi-crystal/src/auto/gtk-4.0/map_list_model.cr

Constructors

Class Method Summary

Instance Method Summary

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) : Nil
items_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

def self.new(model : Gio::ListModel | Nil, map_func : Gtk::MapListModelMapFunc | Nil) : self #

Creates a new Gtk::MapListModel for the given arguments.


[View source]
def self.new #

Initialize a new MapListModel.


[View source]
def self.new(*, has_map : Bool | Nil = nil, model : Gio::ListModel | Nil = nil) #

[View source]

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


[View source]

Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.


def has_map : Bool #

Checks if a map function is currently set on self.


[View source]
def has_map? : Bool #

[View source]
def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def map_func=(map_func : Gtk::MapListModelMapFunc | Nil) : Nil #

Sets the function used to map items.

The function will be called whenever an item needs to be mapped and must return the item to use for the given input item.

Note that Gtk::MapListModel may call this function multiple times on the same item, because it may delete items it doesn't need anymore.

GTK makes no effort to ensure that map_func conforms to the item type of self. It assumes that the caller knows what they are doing and the map function returns items of the appropriate type.


[View source]
def model : Gio::ListModel | Nil #

Gets the model that is currently being mapped or nil if none.


[View source]
def model=(model : Gio::ListModel | Nil) : Nil #

Sets the model to be mapped.

GTK makes no effort to ensure that model conforms to the item type expected by the map function. It assumes that the caller knows what they are doing and have set up an appropriate map function.


[View source]