краткое описание#include <gtk/gtk.h> gtktreemodel; gtktreeiter; gtktreepath; gtktreerowreference; gtktreemodeliface; gboolean (*gtktreemodelforeachfunc) (gtktreemodel *model, gtktreepath *path, gtktreeiter *iter, gpointer data); enum gtktreemodelflags; gtktreepath* gtk_tree_path_new (void); gtktreepath* gtk_tree_path_new_from_string (const gchar *path); gtktreepath* gtk_tree_path_new_from_indices (gint first_index, ...); gchar* gtk_tree_path_to_string (gtktreepath *path); gtktreepath* gtk_tree_path_new_first (void); #define gtk_tree_path_new_root () void gtk_tree_path_append_index (gtktreepath *path, gint index_); void gtk_tree_path_prepend_index (gtktreepath *path, gint index_); gint gtk_tree_path_get_depth (gtktreepath *path); gint* gtk_tree_path_get_indices (gtktreepath *path); void gtk_tree_path_free (gtktreepath *path); gtktreepath* gtk_tree_path_copy (const gtktreepath *path); gint gtk_tree_path_compare (const gtktreepath *a, const gtktreepath *b); void gtk_tree_path_next (gtktreepath *path); gboolean gtk_tree_path_prev (gtktreepath *path); gboolean gtk_tree_path_up (gtktreepath *path); void gtk_tree_path_down (gtktreepath *path); gboolean gtk_tree_path_is_ancestor (gtktreepath *path, gtktreepath *descendant); gboolean gtk_tree_path_is_descendant (gtktreepath *path, gtktreepath *ancestor); gtktreerowreference* gtk_tree_row_reference_new (gtktreemodel *model, gtktreepath *path); gtktreerowreference* gtk_tree_row_reference_new_proxy (gobject *proxy, gtktreemodel *model, gtktreepath *path); gtktreemodel* gtk_tree_row_reference_get_model (gtktreerowreference *reference); gtktreepath* gtk_tree_row_reference_get_path (gtktreerowreference *reference); gboolean gtk_tree_row_reference_valid (gtktreerowreference *reference); void gtk_tree_row_reference_free (gtktreerowreference *reference); gtktreerowreference* gtk_tree_row_reference_copy (gtktreerowreference *reference); void gtk_tree_row_reference_inserted (gobject *proxy, gtktreepath *path); void gtk_tree_row_reference_deleted (gobject *proxy, gtktreepath *path); void gtk_tree_row_reference_reordered (gobject *proxy, gtktreepath *path, gtktreeiter *iter, gint *new_order); gtktreeiter* gtk_tree_iter_copy (gtktreeiter *iter); void gtk_tree_iter_free (gtktreeiter *iter); gtktreemodelflags gtk_tree_model_get_flags (gtktreemodel *tree_model); gint gtk_tree_model_get_n_columns (gtktreemodel *tree_model); gtype gtk_tree_model_get_column_type (gtktreemodel *tree_model, gint index_); gboolean gtk_tree_model_get_iter (gtktreemodel *tree_model, gtktreeiter *iter, gtktreepath *path); gboolean gtk_tree_model_get_iter_from_string (gtktreemodel *tree_model, gtktreeiter *iter, const gchar *path_string); gboolean gtk_tree_model_get_iter_first (gtktreemodel *tree_model, gtktreeiter *iter); #define gtk_tree_model_get_iter_root (tree_model, iter) gtktreepath* gtk_tree_model_get_path (gtktreemodel *tree_model, gtktreeiter *iter); void gtk_tree_model_get_value (gtktreemodel *tree_model, gtktreeiter *iter, gint column, gvalue *value); gboolean gtk_tree_model_iter_next (gtktreemodel *tree_model, gtktreeiter *iter); gboolean gtk_tree_model_iter_children (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *parent); gboolean gtk_tree_model_iter_has_child (gtktreemodel *tree_model, gtktreeiter *iter); gint gtk_tree_model_iter_n_children (gtktreemodel *tree_model, gtktreeiter *iter); gboolean gtk_tree_model_iter_nth_child (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *parent, gint n); gboolean gtk_tree_model_iter_parent (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *child); gchar* gtk_tree_model_get_string_from_iter (gtktreemodel *tree_model, gtktreeiter *iter); void gtk_tree_model_ref_node (gtktreemodel *tree_model, gtktreeiter *iter); void gtk_tree_model_unref_node (gtktreemodel *tree_model, gtktreeiter *iter); void gtk_tree_model_get (gtktreemodel *tree_model, gtktreeiter *iter, ...); void gtk_tree_model_get_valist (gtktreemodel *tree_model, gtktreeiter *iter, va_list var_args); void gtk_tree_model_foreach (gtktreemodel *model, gtktreemodelforeachfunc func, gpointer user_data); void gtk_tree_model_row_changed (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter); void gtk_tree_model_row_inserted (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter); void gtk_tree_model_row_has_child_toggled (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter); void gtk_tree_model_row_deleted (gtktreemodel *tree_model, gtktreepath *path); void gtk_tree_model_rows_reordered (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gint *new_order); иерархия объектовginterface +----gtktreemodel предпосылкиgtktreemodel нуждается в gobject. известные наследуемые интерфейсыgtktreemodel необходим gtktreesortable. известные реализацииgtktreemodel осуществляет gtktreemodelsort, gtktreestore, gtkliststore и gtktreemodelfilter. сигналы"row-changed" void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run last "row-deleted" void user_function (gtktreemodel *tree_model, gtktreepath *path, gpointer user_data) : run first "row-has-child-toggled" void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run last "row-inserted" void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run first "rows-reordered" void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer arg3, gpointer user_data) : run first описаниеgtktreemodel интерфейс в основном определяет древовидный интерфейс для использования с виджетом gtktreeview. это абстрактный интерфейс и спроектирован для использования с любой соответствующей структурой данных. программист просто реализует этот интерфейс для своего типа данных чтобы их можно было просматривать в виджете gtktreeview. модель представляет строго типизированную древовидную иерархию колоннообразных данных. другими словами, модель может рассматриваться как дерево где каждая ветвь имеет различные значения, в зависимости от которых делается запрос столбца. тип данных находящихся в столбце определяется с помощью системы gtype (то есть g_type_int, gtk_type_button, g_type_pointer, и т.д.). типы однородны вдоль столбца через все ветви. важно отметить, что этот интерфейс обеспечивает только способ проверки модели и наблюдения за изменениями. реализация каждой отдельной модели решает как и сделаны ли изменения. чтобы облегчить жизнь программистам, которые не нуждаются в написании собственных специфических моделей, две основные модели обеспечивают — gtktreestore и gtkliststore. для их использования, разработчик просто помещает свои данные в них по мере необходимости. эти модели обеспечивают структуру данных также как все соответствующие древовидные интерфейсы. как результат, реализация drag and drop, сортировка и тривиальное хранение данных. для большинства списков и деревьев, эти две модели будут вполне достаточны. доступ к моделям детализируется уровнем ветвь/колонка. можно запросить значение модели в определенной ветке и определенной колонке на этой ветке. есть две структуры используемые для ссылки на специфическую ветвь в модели. это gtktreepath и gtktreeiter .[4] большинство интерфейсов состоят из операций с gtktreeiter. путь – это по существу потенциальная ветвь. это положение на модели которое может или не может фактически соответствовать ветви для специфической модели. структура gtktreepath может быть преобразована в массив целых чисел или в строку. форма строки – это список чисел разделённых двоеточием. каждое число относится к смещению на этом уровне. таким образом, путь “0” ссылается на корневую ветвь, а путь “2:4” ссылается на пятый пункт третьей ветви. в отличии от этого, gtktreeiter
это ссылка на определённую ветвь в
определенной модели. это основная
структура с целыми числами и тремя
основными указателями. они заполняют
модель способом определенным моделью.
можно преобразовать путь в итератор
вызвав ожидается что модели заполняются итераторами с закрытыми данными. например, gtkliststore модель, которая внутренне является простым связанным списком, хранит список ветвей в одном из указателей. gtktreemodelsort хранит массив и смещение в двух указателях. дополнительно, есть целочисленная область. эта область в основном заполняется уникальным штампом согласно модели. это штамп для перехвата ошибок в результате использования недопустимых итераторов модели. жизненный цикл итераторов может быть немного запутанным сначала. итераторы всегда доступны пока модель не изменяется (и не издают сигналы). модель владеет всеми невыполненными итераторами и ничего не нужно делать для их освобождения, с точки зрения пользователя. в дополнение, некоторые модели гарантируют что итераторы доступны пока ветвь к которой он обращается доступна ( gtktreestore и gtkliststore). хотя в основном не интересно, так как каждый всегда должен учитывать случай, где итераторы не сохраняются вне границ сигнала, некоторые очень важные расширения были сделаны в сортировке модели. как результат, gtk_tree_model_iters_persist флаг был добавлен для указания этого поведения. ниже приводятся некоторые примеры, для демонстрации некоторых основных операций модели. первый пример показывает три способа получения итератора в позиции “3:2:5”. в то время как первый метод отображения прост, второй более обычен, так как вы часто получаете пути из callback-функций. пример 1. получение gtktreeiter /* три способа получить итератор указывающий расположение */ { gtktreepath *path; gtktreeiter iter; gtktreeiter parent_iter; /* получаем итератор из строки */ gtk_tree_model_get_iter_from_string (model, &iter, "3:2:5"); /* получаем итератор из пути */ path = gtk_tree_path_new_from_string ("3:2:5"); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_path_free (path); /* проходим по дереву в поиске итератора */ gtk_tree_model_iter_nth_child (model, &iter, null, 3); parent_iter = iter; gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 2); parent_iter = iter; gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 5); }
это второй пример показывающий быстрый
способ выполнить итерацию через список
и получить строку и целое число из каждой
линии. функция пример 2. чтение данных из gtktreemodel enum { string_column, int_column, n_columns }; { gtktreemodel *list_store; gtktreeiter iter; gboolean valid; gint row_count = 0; /* создаём новый list_store */ list_store = gtk_list_store_new (n_columns, g_type_string, g_type_int); /* заполняем список хранения данных */ populate_model (list_store); /* получаем первый итератор в списке */ valid = gtk_tree_model_get_iter_first (list_store, &iter); while (valid) { /* проходим через список, читаем каждую строку */ gchar *str_data; gint int_data; /* удостоверьтесь что вы закончили вызов gtk_tree_model_get() * значением '-1' */ gtk_tree_model_get (list_store, &iter, string_column, &str_data, int_column, &int_data, -1); /* делаем кое-что с данными */ g_print ("row %d: (%s,%d)\n", row_count, str_data, int_data); g_free (str_data); row_count ++; valid = gtk_tree_model_iter_next (list_store, &iter); } } деталиgtktreemodeltypedef struct _gtktreemodel gtktreemodel; gtktreeitertypedef struct {
gint stamp;
gpointer user_data;
gpointer user_data2;
gpointer user_data3;
} gtktreeiter;
gtktreeiter первичная структура доступа к
структуре. ожидается что модели поместят
уникальное целое число в элемент
gtktreepathtypedef struct _gtktreepath gtktreepath; gtktreerowreferencetypedef struct _gtktreerowreference gtktreerowreference; gtktreemodelifacetypedef struct {
gtypeinterface g_iface;
/* сигналы */
void (* row_changed) (gtktreemodel *tree_model,
gtktreepath *path,
gtktreeiter *iter);
void (* row_inserted) (gtktreemodel *tree_model,
gtktreepath *path,
gtktreeiter *iter);
void (* row_has_child_toggled) (gtktreemodel *tree_model,
gtktreepath *path,
gtktreeiter *iter);
void (* row_deleted) (gtktreemodel *tree_model,
gtktreepath *path);
void (* rows_reordered) (gtktreemodel *tree_model,
gtktreepath *path,
gtktreeiter *iter,
gint *new_order);
/* виртуальная таблица */
gtktreemodelflags (* get_flags) (gtktreemodel *tree_model);
gint (* get_n_columns) (gtktreemodel *tree_model);
gtype (* get_column_type) (gtktreemodel *tree_model,
gint index_);
gboolean (* get_iter) (gtktreemodel *tree_model,
gtktreeiter *iter,
gtktreepath *path);
gtktreepath *(* get_path) (gtktreemodel *tree_model,
gtktreeiter *iter);
void (* get_value) (gtktreemodel *tree_model,
gtktreeiter *iter,
gint column,
gvalue *value);
gboolean (* iter_next) (gtktreemodel *tree_model,
gtktreeiter *iter);
gboolean (* iter_children) (gtktreemodel *tree_model,
gtktreeiter *iter,
gtktreeiter *parent);
gboolean (* iter_has_child) (gtktreemodel *tree_model,
gtktreeiter *iter);
gint (* iter_n_children) (gtktreemodel *tree_model,
gtktreeiter *iter);
gboolean (* iter_nth_child) (gtktreemodel *tree_model,
gtktreeiter *iter,
gtktreeiter *parent,
gint n);
gboolean (* iter_parent) (gtktreemodel *tree_model,
gtktreeiter *iter,
gtktreeiter *child);
void (* ref_node) (gtktreemodel *tree_model,
gtktreeiter *iter);
void (* unref_node) (gtktreemodel *tree_model,
gtktreeiter *iter);
} gtktreemodeliface;
gtktreemodelforeachfunc ()gboolean (*gtktreemodelforeachfunc) (gtktreemodel *model, gtktreepath *path, gtktreeiter *iter, gpointer data);
enum gtktreemodelflagstypedef enum { gtk_tree_model_iters_persist = 1 << 0, gtk_tree_model_list_only = 1 << 1 } gtktreemodelflags;
эти флаги указывают различные свойства
gtktreemodel.
они возвращаются функцией
gtk_tree_path_new ()gtktreepath* gtk_tree_path_new (void); создаёт новый gtktreepath. это структура ссылок для строк.
gtk_tree_path_new_from_string ()gtktreepath* gtk_tree_path_new_from_string (const gchar *path);
создаёт новый gtktreepath
инициализируемый
gtk_tree_path_new_from_indices ()gtktreepath* gtk_tree_path_new_from_indices (gint first_index, ...);
создаёт новый путь с
начиная с версии 2.2 gtk_tree_path_to_string ()gchar* gtk_tree_path_to_string (gtktreepath *path); создаёт строку представляющую путь. это список чисел разделённых ':'. например, "4:10:0:3" было бы допустимым значением для этой строки.
gtk_tree_path_new_first ()gtktreepath* gtk_tree_path_new_first (void); создаёт новый gtktreepath. представление строки этого пути равно "0"
gtk_tree_path_new_root()#define gtk_tree_path_new_root() gtk_tree_path_new_first() внимание
альтернативное имя для
gtk_tree_path_append_index ()void gtk_tree_path_append_index (gtktreepath *path, gint index_); добавляет новый индекс в конец пути. как результат, глубина пути увеличивается.
gtk_tree_path_prepend_index ()void gtk_tree_path_prepend_index (gtktreepath *path, gint index_); добавляет новый индекс в начало пути. как результат, глубина пути увеличивается.
gtk_tree_path_get_depth ()gint gtk_tree_path_get_depth (gtktreepath *path);
возвращает текущую глубину
gtk_tree_path_get_indices ()gint* gtk_tree_path_get_indices (gtktreepath *path);
возвращает текущий индекс
gtk_tree_path_free ()void gtk_tree_path_free (gtktreepath *path);
освобождает
gtk_tree_path_copy ()gtktreepath* gtk_tree_path_copy (const gtktreepath *path);
создаёт новый gtktreepath как
копию
gtk_tree_path_compare ()gint gtk_tree_path_compare (const gtktreepath *a, const gtktreepath *b);
сравнивает два пути. если
gtk_tree_path_next ()void gtk_tree_path_next (gtktreepath *path);
перемещает
gtk_tree_path_prev ()gboolean gtk_tree_path_prev (gtktreepath *path);
перемещает
gtk_tree_path_up ()gboolean gtk_tree_path_up (gtktreepath *path);
перемещает
gtk_tree_path_down ()void gtk_tree_path_down (gtktreepath *path);
перемещает
gtk_tree_path_is_ancestor ()gboolean gtk_tree_path_is_ancestor (gtktreepath *path, gtktreepath *descendant);
возвращает
gtk_tree_path_is_descendant ()gboolean gtk_tree_path_is_descendant (gtktreepath *path, gtktreepath *ancestor);
возвращает
gtk_tree_row_reference_new ()gtktreerowreference* gtk_tree_row_reference_new (gtktreemodel *model, gtktreepath *path);
создаёт строковую ссылку, основанную
на
gtk_tree_row_reference_new_proxy ()gtktreerowreference* gtk_tree_row_reference_new_proxy (gobject *proxy, gtktreemodel *model, gtktreepath *path);
вам не нужно использовать эту функцию.
создаёт ссылку строки основанную на
эти функции должны быть вызваны точно
за соответствующим сигналом изданным
моделью. этот единственный вызов должен
обновить все ссылки строки для этого
полномочия. так как созданные в gtk+
объекты, такие как gtktreeview
уже используют этот механизм внутренне,
использование его как полномочного
объекта приведет к непредсказуемым
результатам. дальше больше, помещение
некоторого объекта как этот тип строковых ссылок прежде всего предназначен структурам, которые должны тщательно контролировать самостоятельное обновление строковых ссылок и в основном не нужны большинству приложений.
gtk_tree_row_reference_get_model ()gtktreemodel* gtk_tree_row_reference_get_model (gtktreerowreference *reference); возвращает модель которую контролирует строковая ссылка.
начиная с версии 2.8 gtk_tree_row_reference_get_path ()gtktreepath* gtk_tree_row_reference_get_path (gtktreerowreference *reference);
возвращает путь который указывает в
текущий момент строковая ссылка, или
gtk_tree_row_reference_valid ()gboolean gtk_tree_row_reference_valid (gtktreerowreference *reference);
возвращает
gtk_tree_row_reference_free ()void gtk_tree_row_reference_free (gtktreerowreference *reference);
освобождает
gtk_tree_row_reference_copy ()gtktreerowreference* gtk_tree_row_reference_copy (gtktreerowreference *reference); копирует gtktreerowreference.
начиная с версии 2.2 gtk_tree_row_reference_inserted ()void gtk_tree_row_reference_inserted (gobject *proxy, gtktreepath *path);
позволяет установить строковую ссылку
созданную
gtk_tree_row_reference_deleted ()void gtk_tree_row_reference_deleted (gobject *proxy, gtktreepath *path);
позволяет удалить строковую ссылку
созданную с помощью
gtk_tree_row_reference_reordered ()void gtk_tree_row_reference_reordered (gobject *proxy, gtktreepath *path, gtktreeiter *iter, gint *new_order);
позволяет установить строковую ссылку
созданную
gtk_tree_iter_copy ()gtktreeiter* gtk_tree_iter_copy (gtktreeiter *iter);
создаёт динамически размещаемый итератор
дерева как копию
gtk_tree_iter_free ()void gtk_tree_iter_free (gtktreeiter *iter); освобождает итератор который был размещен в динамической памяти. эта функция предназначена для использования в языковых привязках.
gtk_tree_model_get_flags ()gtktreemodelflags gtk_tree_model_get_flags (gtktreemodel *tree_model);
возвращает установки флагов поддерживаемых
этим интерфейсом. флаги являются
логической комбинацией gtktreemodelflags.
поддерживаемые флаги не должны
меняться в течении жизненного цикла
gtk_tree_model_get_n_columns ()gint gtk_tree_model_get_n_columns (gtktreemodel *tree_model);
возвращает число колонок поддерживаемых
gtk_tree_model_get_column_type ()gtype gtk_tree_model_get_column_type (gtktreemodel *tree_model, gint index_); возвращает тип колонки.
gtk_tree_model_get_iter ()gboolean gtk_tree_model_get_iter (gtktreemodel *tree_model, gtktreeiter *iter, gtktreepath *path);
устанавливает
gtk_tree_model_get_iter_from_string ()gboolean gtk_tree_model_get_iter_from_string (gtktreemodel *tree_model, gtktreeiter *iter, const gchar *path_string);
устанавливает
gtk_tree_model_get_iter_first ()gboolean gtk_tree_model_get_iter_first (gtktreemodel *tree_model, gtktreeiter *iter);
инициализирует
gtk_tree_model_get_iter_root()#define gtk_tree_model_get_iter_root(tree_model, iter) gtk_tree_model_get_iter_first(tree_model, iter) внимание
альтернативное имя для
gtk_tree_model_get_path ()gtktreepath* gtk_tree_model_get_path (gtktreemodel *tree_model, gtktreeiter *iter);
возвращает вновь созданный gtktreepath,
на который указывает
gtk_tree_model_get_value ()void gtk_tree_model_get_value (gtktreemodel *tree_model, gtktreeiter *iter, gint column, gvalue *value);
устанавливает инициализацию и
gtk_tree_model_iter_next ()gboolean gtk_tree_model_iter_next (gtktreemodel *tree_model, gtktreeiter *iter);
устанавливает
gtk_tree_model_iter_children ()gboolean gtk_tree_model_iter_children (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *parent);
устанавливает если
gtk_tree_model_iter_has_child ()gboolean gtk_tree_model_iter_has_child (gtktreemodel *tree_model, gtktreeiter *iter);
возвращает
gtk_tree_model_iter_n_children ()gint gtk_tree_model_iter_n_children (gtktreemodel *tree_model, gtktreeiter *iter);
возвращает количество дочерних пунктов
которые имеет
gtk_tree_model_iter_nth_child ()gboolean gtk_tree_model_iter_nth_child (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *parent, gint n);
устанавливает
gtk_tree_model_iter_parent ()gboolean gtk_tree_model_iter_parent (gtktreemodel *tree_model, gtktreeiter *iter, gtktreeiter *child);
устанавливает
gtk_tree_model_get_string_from_iter ()gchar* gtk_tree_model_get_string_from_iter (gtktreemodel *tree_model, gtktreeiter *iter); генерирует строку представляющую итератор. это список чисел разделенных ':'. например, "4:10:0:3" было бы допустимым значением этой строки.
начиная с версии 2.2 gtk_tree_model_ref_node ()void gtk_tree_model_ref_node (gtktreemodel *tree_model, gtktreeiter *iter); позволяет дереву ссылаться на ветвь. это дополнительный метод реализации моделей. для большей определенности, модели могут игнорировать этот вызов, так как он существует прежде всего для причин выполнения. эта функция прежде всего предназначена для просмотра позволяя кэшируемым моделям знать когда отображать элементы (и следовательно, кэшировать или нет этот элемент.) например, модель основанная на файловой системе не хотела бы хранить в памяти всю иерархию файлов, а только разделы которые в текущий момент отображаются каждым текущим представлением (current view). модель должна быть приспособлена для получения итератора не зависимо от состояния.
gtk_tree_model_unref_node ()void gtk_tree_model_unref_node (gtktreemodel *tree_model, gtktreeiter *iter); позволяет дереву освобождать элементы. это дополнительный метод реализации моделей. для большей определенности, модели могут игнорировать этот вызов, так как он существует прежде всего для причин выполнения. для получения большей информации
смотрите
gtk_tree_model_get ()void gtk_tree_model_get (gtktreemodel *tree_model, gtktreeiter *iter, ...);
получает значение одной или более ячеек
в строке на которую ссылается
gtk_tree_model_get_valist ()void gtk_tree_model_get_valist (gtktreemodel *tree_model, gtktreeiter *iter, va_list var_args);
смотрите
gtk_tree_model_foreach ()void gtk_tree_model_foreach (gtktreemodel *model, gtktreemodelforeachfunc func, gpointer user_data);
вызывает функцию func
на каждом элементе модели. если
gtk_tree_model_row_changed ()void gtk_tree_model_row_changed (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter);
издаёт сигнал "row_changed" в
gtk_tree_model_row_inserted ()void gtk_tree_model_row_inserted (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter);
издаёт сигнал "row_inserted" в
gtk_tree_model_row_has_child_toggled ()void gtk_tree_model_row_has_child_toggled (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter);
издаёт сигнал "row_has_child_toggled" в
gtk_tree_model_row_deleted ()void gtk_tree_model_row_deleted (gtktreemodel *tree_model, gtktreepath *path);
издаёт сигнал "row_deleted" в
gtk_tree_model_rows_reordered ()void gtk_tree_model_rows_reordered (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gint *new_order);
издаёт сигнал "rows_reordered" в
детали сигналовсигнал "row-changed"void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run last этот сигнал издаётся когда в модели изменяется строка.
сигнал "row-deleted"void user_function (gtktreemodel *tree_model, gtktreepath *path, gpointer user_data) : run first этот сигнал издаётся когда строка удаляется. помните что никакой итератор не передаётся для обработчика сигнала, та как строка уже удалена.
сигнал "row-has-child-toggled"void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run last издаётся когда строка получила первую дочернюю строку или потеряна её последняя строка.
сигнал "row-inserted"void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer user_data) : run first издаётся когда новая строка вставлена в модель. помните что строка в этой точке может быть ещё пустой, так как это обычный шаблон для вставки первой пустой строки, а затем заполнения нужными значениями.
сигнал "rows-reordered"void user_function (gtktreemodel *tree_model, gtktreepath *path, gtktreeiter *iter, gpointer arg3, gpointer user_data) : run first издаётся когда дочерние элементы в gtktreemodel перестраиваются. помните, этот сигнал не издаётся когда строки перестраиваются с помощью dnd, так как при этом осуществляется удаление и последующая вставка строки.
смотрите такжеgtktreeview, gtktreestore, gtkliststore, gtktreednd, gtktreesortable
[4] iter сокращение для “iterator” |