class Gio::ListStore

Overview

#GListStore is a simple implementation of #GListModel that stores all items in memory.

It provides insertions, deletions, and lookups in logarithmic time with a fast path for the common case of iterating the list linearly.

Included Modules

Defined in:

lib/gi-crystal/src/auto/gio-2.0/list_store.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(item_type : UInt64) : self #

Creates a new #GListStore with items of type item_type. item_type must be a subclass of #GObject.


[View source]
def self.new #

Initialize a new ListStore.


[View source]
def self.new(*, item_type : UInt64 | 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 append(item : GObject::Object) : Nil #

Appends item to store. item must be of type #GListStore:item-type.

This function takes a ref on item.

Use g_list_store_splice() to append multiple items at the same time efficiently.


[View source]
def find(item : GObject::Object) : Bool #

Looks up the given item in the list store by looping over the items until the first occurrence of item. If item was not found, then position will not be set, and this method will return false.

If you need to compare the two items with a custom comparison function, use g_list_store_find_with_equal_func() with a custom #GEqualFunc instead.


[View source]
def find_with_equal_func(item : GObject::Object, equal_func : GLib::EqualFunc) : Bool #

Looks up the given item in the list store by looping over the items and comparing them with compare_func until the first occurrence of item which matches. If item was not found, then position will not be set, and this method will return false.


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

See Object#hash(hasher)


def insert(position : UInt32, item : GObject::Object) : Nil #

Inserts item into store at position. item must be of type #GListStore:item-type or derived from it. position must be smaller than the length of the list, or equal to it to append.

This function takes a ref on item.

Use g_list_store_splice() to insert multiple items at the same time efficiently.


[View source]
def insert_sorted(item : GObject::Object, compare_func : GLib::CompareDataFunc, user_data : Pointer(Void) | Nil) : UInt32 #

Inserts item into store at a position to be determined by the compare_func.

The list must already be sorted before calling this function or the result is undefined. Usually you would approach this by only ever inserting items by way of this function.

This function takes a ref on item.


[View source]
def item_type : UInt64 #

[View source]
def item_type=(value : UInt64) : UInt64 #

[View source]
def remove(position : UInt32) : Nil #

Removes the item from store that is at position. position must be smaller than the current length of the list.

Use g_list_store_splice() to remove multiple items at the same time efficiently.


[View source]
def remove_all : Nil #

Removes all items from store.


[View source]
def sort(compare_func : GLib::CompareDataFunc, user_data : Pointer(Void) | Nil) : Nil #

Sort the items in store according to compare_func.


[View source]
def splice(position : UInt32, n_removals : UInt32, additions : Enumerable(GObject::Object)) : Nil #

Changes store by removing n_removals items and adding n_additions items to it. additions must contain n_additions items of type #GListStore:item-type. nil is not permitted.

This function is more efficient than g_list_store_insert() and g_list_store_remove(), because it only emits #GListModel::items-changed once for the change.

This function takes a ref on each item in additions.

The parameters position and n_removals must be correct (ie: position + n_removals must be less than or equal to the length of the list at the time this function is called).


[View source]