| Top |
EVirtualTreeModelEVirtualTreeModel — Interface for providing row data to EVirtualTree |
| guint | e_virtual_tree_model_get_row_count () |
| GPtrArray * | e_virtual_tree_model_dup_rows () |
| GObject * | e_virtual_tree_model_dup_row () |
| guint | e_virtual_tree_model_get_depth () |
| gboolean | e_virtual_tree_model_is_expandable () |
| gboolean | e_virtual_tree_model_get_expanded () |
| void | e_virtual_tree_model_set_expanded () |
| gconstpointer | e_virtual_tree_model_get_row_key () |
| EVirtualTreeKeyType | e_virtual_tree_model_get_key_type () |
| guint | e_virtual_tree_model_find_row_by_key () |
| void | e_virtual_tree_model_emit_before_rebuild () |
| void | e_virtual_tree_model_emit_after_rebuild () |
| void | e_virtual_tree_model_emit_rows_changed () |
| void | e_virtual_tree_model_emit_rows_inserted () |
| void | e_virtual_tree_model_emit_rows_removed () |
| void | e_virtual_tree_model_emit_row_count_changed () |
| void | e_virtual_tree_model_notify_row_changed () |
| void | after-rebuild | Run Last |
| void | before-rebuild | Run Last |
| void | row-count-changed | Run Last |
| void | rows-changed | Run Last |
| void | rows-inserted | Run Last |
| void | rows-removed | Run Last |
EVirtualTreeModel is an interface that supplies row objects and tree-structure metadata to an EVirtualTree widget. Implementors provide the total row count, row retrieval, depth/expand state, and an opaque key system used for selection tracking.
The key system is defined by two vfuncs:
get_row_key() returns a transfer-none pointer that uniquely identifies a row object. The pointer must remain valid while the row object is alive.
get_key_type() returns an EVirtualTreeKeyType struct that supplies hash, equal, copy, and free functions for the keys. The defaults use pointer identity (g_direct_hash / g_direct_equal, no copy/free).
Models notify the tree of data changes via
e_virtual_tree_model_emit_before_rebuild(),
e_virtual_tree_model_emit_after_rebuild(),
e_virtual_tree_model_emit_rows_changed(),
e_virtual_tree_model_emit_rows_inserted(),
e_virtual_tree_model_emit_rows_removed(), and
e_virtual_tree_model_emit_row_count_changed().
guint
e_virtual_tree_model_get_row_count (EVirtualTreeModel *self);
Returns the total number of visible rows in the model.
Since: 3.64
GPtrArray * e_virtual_tree_model_dup_rows (EVirtualTreeModel *self,guint first_row,guint last_row,gboolean include_collapsed);
Returns a GPtrArray of GObject row objects for the given range.
Each element has its reference count incremented; the caller must
release each element with g_object_unref() and the array with
g_ptr_array_unref().
self |
||
first_row |
zero-based index of the first row to retrieve |
|
last_row |
zero-based index of the last row to retrieve (inclusive) |
|
include_collapsed |
whether to include rows inside collapsed nodes |
Since: 3.64
GObject * e_virtual_tree_model_dup_row (EVirtualTreeModel *self,guint row_index);
Returns the row object at row_index
with an added reference.
The caller must release the reference with g_object_unref() when done.
The default implementation delegates to e_virtual_tree_model_dup_rows().
Since: 3.64
guint e_virtual_tree_model_get_depth (EVirtualTreeModel *self,GObject *row_object);
Returns the nesting depth of row_object
. Top-level rows have depth 0.
Since: 3.64
gboolean e_virtual_tree_model_is_expandable (EVirtualTreeModel *self,GObject *row_object);
Returns whether row_object
can be expanded to show children.
Since: 3.64
gboolean e_virtual_tree_model_get_expanded (EVirtualTreeModel *self,GObject *row_object);
Returns whether row_object
is currently expanded.
Since: 3.64
void e_virtual_tree_model_set_expanded (EVirtualTreeModel *self,GObject *row_object,gboolean expanded);
Sets the expanded state of row_object
.
Since: 3.64
gconstpointer e_virtual_tree_model_get_row_key (EVirtualTreeModel *self,GObject *row_object);
Returns an opaque key that uniquely identifies row_object
for
selection tracking. The returned pointer is owned by row_object
and remains valid only while row_object
is alive; callers must
not free it.
The default implementation returns row_object
itself (pointer identity).
Since: 3.64
EVirtualTreeKeyType
e_virtual_tree_model_get_key_type (EVirtualTreeModel *self);
Returns an EVirtualTreeKeyType describing how to hash, compare,
copy, and free the keys returned by e_virtual_tree_model_get_row_key().
The default returns g_direct_hash/g_direct_equal with NULL copy
and free functions (pointer identity, no allocation).
Since: 3.64
guint e_virtual_tree_model_find_row_by_key (EVirtualTreeModel *self,gconstpointer key);
Searches the model for a row whose key (as returned by
e_virtual_tree_model_get_row_key()) equals key
according to the
model's key type equal function.
The default implementation performs a linear scan.
Since: 3.64
void
e_virtual_tree_model_emit_before_rebuild
(EVirtualTreeModel *self);
Emits the “before-rebuild” signal. Model
implementations should call this before bulk data changes that
invalidate all existing row indices. Call
e_virtual_tree_model_emit_after_rebuild() when done.
Since: 3.64
void
e_virtual_tree_model_emit_after_rebuild
(EVirtualTreeModel *self);
Emits the “after-rebuild” signal. Finishes
a rebuild previously announced with
e_virtual_tree_model_emit_before_rebuild(), so the tree can
re-query row data.
Since: 3.64
void e_virtual_tree_model_emit_rows_changed (EVirtualTreeModel *self,guint first_row,guint last_row);
Emits the “rows-changed” signal to notify the
tree that existing rows in the range [first_row
, last_row
] have
new data and need to be re-rendered.
self |
||
first_row |
zero-based index of the first changed row |
|
last_row |
zero-based index of the last changed row (inclusive) |
Since: 3.64
void e_virtual_tree_model_emit_rows_inserted (EVirtualTreeModel *self,guint first_row,guint last_row);
Emits the “rows-inserted” signal to notify the
tree that new rows have been inserted at indices [first_row
, last_row
].
self |
||
first_row |
zero-based index of the first inserted row |
|
last_row |
zero-based index of the last inserted row (inclusive) |
Since: 3.64
void e_virtual_tree_model_emit_rows_removed (EVirtualTreeModel *self,guint first_row,guint last_row);
Emits the “rows-removed” signal to notify the
tree that rows at indices [first_row
, last_row
] have been removed.
self |
||
first_row |
zero-based index of the first removed row |
|
last_row |
zero-based index of the last removed row (inclusive) |
Since: 3.64
void
e_virtual_tree_model_emit_row_count_changed
(EVirtualTreeModel *self);
Emits the “row-count-changed” signal to notify the tree that the total number of rows has changed.
Since: 3.64
void e_virtual_tree_model_notify_row_changed (EVirtualTreeModel *self,gconstpointer key,gboolean is_added);
Notifies the tree that a single row identified by key
was added or
changed, without the caller having to know its current row index.
The index is resolved via e_virtual_tree_model_find_row_by_key() at
the time the notification is actually emitted, which is throttled to
a few times per second per model instance, so bursts of many calls
(e.g. from a bulk data load) coalesce instead of each one triggering
a full tree refill.
self |
||
key |
the row key of the added/changed row, as returned by |
|
is_added |
|
Since: 3.64
typedef struct {
GHashFunc hash_func;
GEqualFunc equal_func;
GBoxedCopyFunc copy_func;
GDestroyNotify free_func;
} EVirtualTreeKeyType;
struct EVirtualTreeModelInterface {
GTypeInterface parent_interface;
guint (*get_row_count) (EVirtualTreeModel *self);
GPtrArray * (*dup_rows) (EVirtualTreeModel *self,
guint first_row,
guint last_row,
gboolean include_collapsed);
GObject * (*dup_row) (EVirtualTreeModel *self,
guint row_index);
guint (*get_depth) (EVirtualTreeModel *self,
GObject *row_object);
gboolean (*is_expandable) (EVirtualTreeModel *self,
GObject *row_object);
gboolean (*get_expanded) (EVirtualTreeModel *self,
GObject *row_object);
void (*set_expanded) (EVirtualTreeModel *self,
GObject *row_object,
gboolean expanded);
gconstpointer (*get_row_key) (EVirtualTreeModel *self,
GObject *row_object);
EVirtualTreeKeyType (*get_key_type) (EVirtualTreeModel *self);
guint (*find_row_by_key) (EVirtualTreeModel *self,
gconstpointer key);
/* Signals */
void (*before_rebuild) (EVirtualTreeModel *self);
void (*after_rebuild) (EVirtualTreeModel *self);
void (*rows_changed) (EVirtualTreeModel *self,
guint first_row,
guint last_row);
void (*rows_inserted) (EVirtualTreeModel *self,
guint first_row,
guint last_row);
void (*rows_removed) (EVirtualTreeModel *self,
guint first_row,
guint last_row);
void (*row_count_changed) (EVirtualTreeModel *self);
};
“after-rebuild” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, gpointer user_data)
Flags: Run Last
“before-rebuild” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, gpointer user_data)
Flags: Run Last
“row-count-changed” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, gpointer user_data)
Flags: Run Last
“rows-changed” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, guint arg1, guint arg2, gpointer user_data)
Flags: Run Last
“rows-inserted” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, guint arg1, guint arg2, gpointer user_data)
Flags: Run Last
“rows-removed” signalvoid user_function (EVirtualTreeModel *evirtualtreemodel, guint arg1, guint arg2, gpointer user_data)
Flags: Run Last