| |
GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | | Known Derived Interfaces | Known Implementations | Signals |
GtkTreeModelGtkTreeModel Древовидный интерфейс используемый GtkTreeView |
#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
это ссылка на определённую ветвь в
определенной модели. Это основная
структура с целыми числами и тремя
основными указателями. Они заполняют
модель способом определенным моделью.
Можно преобразовать путь в итератор
вызвав gtk_tree_model_get_iter()
.
Эти итераторы первичный способ доступа
к модели и похожи на итераторы используемые
в GtkTextBuffer. Они в основном
статично расположены в стеке и используются
только в течении короткого времени.
Интерфейс модели определяет ряд операций
используемых для управления моделью.
Ожидается что модели заполняются итераторами с закрытыми данными. Например, 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); }
Это второй пример показывающий быстрый
способ выполнить итерацию через список
и получить строку и целое число из каждой
линии. Функция populate_model
используемая
ниже не показана, так как она определена
в GtkListStore. Для информации
как написать такую функцию, смотрите
документацию GtkListStore.
Пример 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); } }
typedef struct _GtkTreeModel GtkTreeModel;
typedef struct {
gint stamp;
gpointer user_data;
gpointer user_data2;
gpointer user_data3;
} GtkTreeIter;
GtkTreeIter первичная структура доступа к
структуре. Ожидается что модели поместят
уникальное целое число в элемент stamp
,
и поместят определенные моделью данные
в три элемента user_data
.
gint |
Уникальный штамп перехватывающий недопустимые итераторы |
gpointer |
Данные определенные моделью |
gpointer |
Данные определенные моделью |
gpointer |
Данные определенные моделью |
typedef struct _GtkTreePath GtkTreePath;
typedef struct _GtkTreeRowReference GtkTreeRowReference;
typedef 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;
gboolean (*GtkTreeModelForeachFunc) (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data);
|
|
|
|
|
|
|
|
Возвращает : |
typedef enum { GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0, GTK_TREE_MODEL_LIST_ONLY = 1 << 1 } GtkTreeModelFlags;
Эти флаги указывают различные свойства
GtkTreeModel.
Они возвращаются функцией
gtk_tree_model_get_flags()
,
и должны быть статичны в течении
существования объекта. Более полное
описание GTK_TREE_MODEL_ITERS_PERSIST
может быть найдено в кратком описании
этого раздела.
Итераторы переживающие все сигналы издаваемые деревом. |
|
Модель только список, без дочерних элементов |
GtkTreePath* gtk_tree_path_new (void);
Создаёт новый GtkTreePath. Это структура ссылок для строк.
Возвращает : |
Вновь созданный GtkTreePath. |
GtkTreePath* gtk_tree_path_new_from_string (const gchar *path);
Создаёт новый GtkTreePath
инициализируемый path
. path
должен быть списком чисел разделённых
двоеточиями. Например, строка "10:4:0"
указывает путь глубиной в три указателя
для 11-той дочерней ветки от корня, 5-ой
дочерней ветки от 11-ой и 1-ой дочерней
от 5-ой. Если передана строка недопустимого
пути, возвращается NULL
.
|
строка представляющая путь. |
Возвращает : |
Вновь созданный GtkTreePath,
или |
GtkTreePath* gtk_tree_path_new_from_indices (gint first_index, ...);
Создаёт новый путь с first_index
и varargs
как перечень.
|
Первое целое |
|
Список целых заканчивающийся -1 |
Возвращает : |
Вновь созданный GtkTreePath. |
Начиная с версии 2.2
gchar* gtk_tree_path_to_string (GtkTreePath *path);
Создаёт строку представляющую путь. Это список чисел разделённых ':'. Например, "4:10:0:3" было бы допустимым значением для этой строки.
|
|
Возвращает : |
Вновь размещаемая строка. Должна
освобождаться с помощью |
GtkTreePath* gtk_tree_path_new_first (void);
Создаёт новый GtkTreePath. Представление строки этого пути равно "0"
Возвращает : |
Новый GtkTreePath. |
#define gtk_tree_path_new_root() gtk_tree_path_new_first()
gtk_tree_path_new_root
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте gtk_tree_path_new_first()
.
Альтернативное имя для
gtk_tree_path_new_first()
,
используется только для совместимости.
Возвращает : |
Новый GtkTreePath. |
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);
Возвращает текущую глубину path
.
|
|
Возвращает : |
глубина |
gint* gtk_tree_path_get_indices (GtkTreePath *path);
Возвращает текущий индекс path
.
Это массив целых чисел, каждое из которых
представляет ветвь дерева. Это значение
не должно освобождаться.
|
|
Возвращает : |
Текущий индекс, или |
void gtk_tree_path_free (GtkTreePath *path);
Освобождает path
.
|
GtkTreePath* gtk_tree_path_copy (const GtkTreePath *path);
Создаёт новый GtkTreePath как
копию path
.
|
|
Возвращает : |
Новый GtkTreePath. |
gint gtk_tree_path_compare (const GtkTreePath *a, const GtkTreePath *b);
Сравнивает два пути. Если a
появляется в дереве перед b
,
то возвращает -1. Если b
появляется в дереве раньше a
,
то возвращает 1. Если обе ветви эквивалентны,
возвращает 0.
|
|
|
GtkTreePath с которым сравнивается. |
Возвращает : |
Относительная позиция |
void gtk_tree_path_next (GtkTreePath *path);
Перемещает path
в точку
следующей ветки текущемй глубины.
|
gboolean gtk_tree_path_prev (GtkTreePath *path);
Перемещает path
в точку
предыдущей ветки текущемй глубины, если
возможно.
|
|
Возвращает : |
|
gboolean gtk_tree_path_up (GtkTreePath *path);
Перемещает path
в точку его
родительской ветви, если он имеет
родителя.
|
|
Возвращает : |
|
void gtk_tree_path_down (GtkTreePath *path);
Перемещает path
в точку первого
дочернего пункта текущемго пути.
|
gboolean gtk_tree_path_is_ancestor (GtkTreePath *path, GtkTreePath *descendant);
Возвращает TRUE
если descendant
потомок path
.
|
|
|
другой GtkTreePath |
Возвращает : |
|
gboolean gtk_tree_path_is_descendant (GtkTreePath *path, GtkTreePath *ancestor);
Возвращает TRUE
если path
потомок ancestor
.
|
|
|
другой GtkTreePath |
Возвращает : |
|
GtkTreeRowReference* gtk_tree_row_reference_new (GtkTreeModel *model, GtkTreePath *path);
Создаёт строковую ссылку, основанную
на path
. Эта ссылка будет
указывать на ветвь на которую указывает
path
, пока он существует. Она
слушает все сигналы издаваемые model
,
и соответственно обновляет путь. Если
path
не допустимый путь в
model
, то когда возвращается
NULL
.
|
|
|
Допустимый GtkTreePath для контроля |
Возвращает : |
Вновь размещаемый GtkTreeRowReference,
или |
GtkTreeRowReference* gtk_tree_row_reference_new_proxy (GObject *proxy, GtkTreeModel *model, GtkTreePath *path);
Вам не нужно использовать эту функцию.
Создаёт ссылку строки основанную на
path
. Эта ссылка будет указывать
на ветвь на которую указывает path
,
пока он существует. Если path
не
допустимый путь в model
, то когда
возвращается NULL
.
Однако, в отличии от ссылки созданной
с помощью gtk_tree_row_reference_new()
,
эта не слушает модель для изменений.
Создающий ссылку должен сделать это
явно используя gtk_tree_row_reference_inserted()
,
gtk_tree_row_reference_deleted()
,
gtk_tree_row_reference_reordered()
.
Эти функции должны быть вызваны точно
за соответствующим сигналом изданным
моделью. Этот единственный вызов должен
обновить все ссылки строки для этого
полномочия. Так как созданные в GTK+
объекты, такие как GtkTreeView
уже используют этот механизм внутренне,
использование его как полномочного
объекта приведет к непредсказуемым
результатам. Дальше больше, помещение
некоторого объекта как model
и proxy
не работает по причине
внутренней реализации.
Этот тип строковых ссылок прежде всего предназначен структурам, которые должны тщательно контролировать самостоятельное обновление строковых ссылок и в основном не нужны большинству приложений.
|
полномочный GObject |
|
|
|
Допустимый GtkTreePath для контроля |
Возвращает : |
Вновь созданный GtkTreeRowReference,
или |
GtkTreeModel* gtk_tree_row_reference_get_model (GtkTreeRowReference *reference);
Возвращает модель которую контролирует строковая ссылка.
|
|
Возвращает : |
модель |
Начиная с версии 2.8
GtkTreePath* gtk_tree_row_reference_get_path (GtkTreeRowReference *reference);
Возвращает путь который указывает в
текущий момент строковая ссылка, или
NULL
если указанный путь больше не действителен.
|
|
Возвращает : |
Текущий путь, или |
gboolean gtk_tree_row_reference_valid (GtkTreeRowReference *reference);
Возвращает TRUE
если reference
не-NULL
и ссылается на допустимый в текущий
момент путь.
|
GtkTreeRowReference, или
|
Возвращает : |
|
void gtk_tree_row_reference_free (GtkTreeRowReference *reference);
Освобождает reference
. reference
может быть NULL
.
|
GtkTreeRowReference, или
|
GtkTreeRowReference* gtk_tree_row_reference_copy (GtkTreeRowReference *reference);
Копирует GtkTreeRowReference.
|
|
Возвращает : |
копия |
Начиная с версии 2.2
void gtk_tree_row_reference_inserted (GObject *proxy, GtkTreePath *path);
Позволяет установить строковую ссылку
созданную gtk_tree_row_reference_new_proxy()
, узнав что модель издала сигнал
"row_inserted".
|
|
|
Позиция вставляемой строки |
void gtk_tree_row_reference_deleted (GObject *proxy, GtkTreePath *path);
Позволяет удалить строковую ссылку
созданную с помощью
gtk_tree_row_reference_new_proxy()
,
узнав что модель издала сигнал
"row_deleted".
|
|
|
Позиция пути для удаления |
void gtk_tree_row_reference_reordered (GObject *proxy, GtkTreePath *path, GtkTreeIter *iter, gint *new_order);
Позволяет установить строковую ссылку
созданную gtk_tree_row_reference_new_proxy()
, узнав что модель издала сигнал
"rows_reordered".
|
|
|
Родительский путь сигнала перестроения |
|
Итератор указывающий на родителя перестраиваемого |
|
Новый порядок строк |
GtkTreeIter* gtk_tree_iter_copy (GtkTreeIter *iter);
Создаёт динамически размещаемый итератор
дерева как копию iter
. Эта
функция не предназначена для использования
приложениями, потому что вы просто можете
скопировать структурные значения
(GtkTreeIter new_iter = iter;
). Вы должны
освобождать этот итератор с помощью
gtk_tree_iter_free()
.
|
|
Возвращает : |
Вновь созданная копия |
void gtk_tree_iter_free (GtkTreeIter *iter);
Освобождает итератор который был размещен в динамической памяти. Эта функция предназначена для использования в языковых привязках.
|
Динамически размещаемый итератор дерева. |
GtkTreeModelFlags gtk_tree_model_get_flags (GtkTreeModel *tree_model);
Возвращает установки флагов поддерживаемых
этим интерфейсом. Флаги являются
логической комбинацией GtkTreeModelFlags.
Поддерживаемые флаги не должны
меняться в течении жизненного цикла
tree_model
.
|
|
Возвращает : |
Флаги которые поддерживает этот интерфейс. |
gint gtk_tree_model_get_n_columns (GtkTreeModel *tree_model);
Возвращает число колонок поддерживаемых
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);
Устанавливает iter
в доступный
итератор указывающий path
.
|
|
|
Неинициализированный GtkTreeIter. |
|
|
Возвращает : |
|
gboolean gtk_tree_model_get_iter_from_string (GtkTreeModel *tree_model, GtkTreeIter *iter, const gchar *path_string);
Устанавливает iter
в допустимый
итератор указывающий path_string
,
если существует. Иначе, iter
сбрасывается и возвращается FALSE
.
|
|
|
Неинициализированный GtkTreeIter. |
|
Строка представляющая GtkTreePath. |
Возвращает : |
|
gboolean gtk_tree_model_get_iter_first (GtkTreeModel *tree_model, GtkTreeIter *iter);
Инициализирует iter
с первым
итератором в дереве (у которого путь
"0") и возвращает TRUE
.
Возвращает FALSE
если дерево пустое.
|
|
|
Неинициализированный GtkTreeIter. |
Возвращает : |
|
#define gtk_tree_model_get_iter_root(tree_model, iter) gtk_tree_model_get_iter_first(tree_model, iter)
gtk_tree_model_get_iter_root
устарела и не должна использоваться во
вновь создаваемом коде.
Альтернативное имя для
gtk_tree_model_get_iter_first()
,
обеспечивает совместимость; этот макрос
будет удалён в следующих версиях GTK+.
|
|
|
Неинициализированный GtkTreeIter. |
Возвращает : |
|
GtkTreePath* gtk_tree_model_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter);
Возвращает вновь созданный GtkTreePath,
на который указывает iter
.
Этот путь должен освобождаться с помощью
gtk_tree_path_free()
.
|
|
|
|
Возвращает : |
Вновь созданный GtkTreePath. |
void gtk_tree_model_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value);
Устанавливает инициализацию и value
для этой column
. Когда выполнено
с value
, g_value_unset()
нужно вызвать для освобождения любой
распределенной памяти.
|
|
|
|
|
Колонка для поиска значения. |
|
Пустой GValue для установки. |
gboolean gtk_tree_model_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter);
Устанавливает iter
указывающий
на следующую ветвь текущемго уровня.
Если нет следующего iter
,
возвращается FALSE
и iter
становится недоступным.
|
|
|
|
Возвращает : |
|
gboolean gtk_tree_model_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent);
Устанавливает iter
указывающий
на первый дочерний пункт parent
.
Если parent
не имеет дочерних
пунктов, FALSE
возвращается и iter
становится
не доступным. parent
остаётся
доступной ветвью после вызова этой
функции.
Если parent
равен NULL
возвращается первая ветвь, эквивалентно
gtk_tree_model_get_iter_first (tree_model, iter);
|
|
|
Новый GtkTreeIter устанавливаемый для дочернего пункта. |
|
GtkTreeIter, или |
Возвращает : |
|
gboolean gtk_tree_model_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter);
Возвращает TRUE
если iter
имеет дочерний
пункт, иначе FALSE
.
|
|
|
GtkTreeIter для проверки дочернего пункта. |
Возвращает : |
|
gint gtk_tree_model_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter);
Возвращает количество дочерних пунктов
которые имеет iter
. В особом
случае, если iter
равен NULL
,
то когда возвращается число ветвей
верхнего уровня.
|
|
|
GtkTreeIter, или |
Возвращает : |
Число дочерних пунктов |
gboolean gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent, gint n);
Устанавливает iter
для дочерних
пунктов parent
, используя
данный индекс. Первичный индекс 0. Если
n
слишком большое, или parent
не имеет дочерних пунктов, iter
становится недоступным и возвращается
FALSE
.
parent
будет действительной
ветвью после вызова этой функции. В
особом случае, если parent
равен NULL
,
то когда n-ный
корневой узел
устанавливается.
|
|
|
GtkTreeIter для установки в n-ный дочерний пункт. |
|
GtkTreeIter из которого
получается дочерний пункт, или |
|
Номер желательного дочернего пункта. |
Возвращает : |
|
gboolean gtk_tree_model_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child);
Устанавливает iter
для родителя
child
. Если child
верхний уровень и не имеет родителя, то
когда iter
становится не
доступным итератором и возвращается
FALSE
.
child
будет доступным элементом
после вызова этой функции.
|
|
|
Новый GtkTreeIter для установки для родителя. |
|
|
Возвращает : |
|
gchar* gtk_tree_model_get_string_from_iter (GtkTreeModel *tree_model, GtkTreeIter *iter);
Генерирует строку представляющую итератор. Это список чисел разделенных ':'. Например, "4:10:0:3" было бы допустимым значением этой строки.
|
|
|
|
Возвращает : |
Вновь созданная строка. Должна
освобождаться с помощью |
Начиная с версии 2.2
void gtk_tree_model_ref_node (GtkTreeModel *tree_model, GtkTreeIter *iter);
Позволяет дереву ссылаться на ветвь. Это дополнительный метод реализации моделей. Для большей определенности, модели могут игнорировать этот вызов, так как он существует прежде всего для причин выполнения.
Эта функция прежде всего предназначена для просмотра позволяя кэшируемым моделям знать когда отображать элементы (и следовательно, кэшировать или нет этот элемент.) Например, модель основанная на файловой системе не хотела бы хранить в памяти всю иерархию файлов, а только разделы которые в текущий момент отображаются каждым текущим представлением (current view).
Модель должна быть приспособлена для получения итератора не зависимо от состояния.
|
|
|
void gtk_tree_model_unref_node (GtkTreeModel *tree_model, GtkTreeIter *iter);
Позволяет дереву освобождать элементы. Это дополнительный метод реализации моделей. Для большей определенности, модели могут игнорировать этот вызов, так как он существует прежде всего для причин выполнения.
Для получения большей информации
смотрите gtk_tree_model_ref_node()
.
Пожалуйста отметьте, что удаленные
элементы это не освобожденные элементы.
|
|
|
void gtk_tree_model_get (GtkTreeModel *tree_model, GtkTreeIter *iter, ...);
Получает значение одной или более ячеек
в строке на которую ссылается iter
.
Переменный список параметров должен
содержать целочисленные номера колонок,
каждый номер колонки сопровождается
местом для хранения получаемого значения.
Список заканчивается -1. Например, для
получения значения из колонки 0 с типом
G_TYPE_STRING
,
вы должны написать: gtk_tree_model_get (model,
iter, 0, &place_string_here, -1)
, где place_string_here
это gchar* для заполнения строкой. Если
соответствует, возвращаемые значения
должны быть освобождены или не ссылаемы.
|
|
|
Строки в |
|
Пары номер колонки и значение возвращаемого расположения, завершает -1 |
void gtk_tree_model_get_valist (GtkTreeModel *tree_model, GtkTreeIter *iter, va_list var_args);
Смотрите gtk_tree_model_get()
,
эта версия берет va_list для использования
в языковых привязках.
|
|
|
Строки в |
|
Список (va_list) пар столбец/возвращаемое расположение |
void gtk_tree_model_foreach (GtkTreeModel *model, GtkTreeModelForeachFunc func, gpointer user_data);
Вызывает функцию func
на каждом элементе модели. Если func
возвращает TRUE
,
то проходы по дереву прекращаются, и
gtk_tree_model_foreach()
возвращает TRUE
.
|
|
|
Функция вызываемая для каждого элемента |
|
Пользовательские данные помещаемые в функцию func. |
void gtk_tree_model_row_changed (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter);
Издаёт сигнал "row_changed" в tree_model
.
|
|
|
GtkTreePath указатель для измененной строки |
|
Допустимый GtkTreeIter указатель для измененной строки |
void gtk_tree_model_row_inserted (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter);
Издаёт сигнал "row_inserted" в tree_model
|
|
|
GtkTreePath указатель для измененной строки |
|
Допустимый GtkTreeIter указатель для вставляемой строки |
void gtk_tree_model_row_has_child_toggled (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter);
Издаёт сигнал "row_has_child_toggled" в
tree_model
. Она вызывается моделью
после того, как изменится состояние
дочернего элмента.
|
|
|
GtkTreePath указатель для измененной строки |
|
Допустимый GtkTreeIter указатель для измененной строки |
void gtk_tree_model_row_deleted (GtkTreeModel *tree_model, GtkTreePath *path);
Издаёт сигнал "row_deleted" в tree_model
.
Должна вызываться моделью после удаления
строк. Положение на которое указывает
path
должно быть положением
строки перед удалением. В последствии
оно может быть недопустимым положением.
|
|
|
GtkTreePath указатель для измененной строки |
void gtk_tree_model_rows_reordered (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gint *new_order);
Издаёт сигнал "rows_reordered" в tree_model
.
Вызывается моделью когда её строки
перестраиваются.
|
|
|
GtkTreePath указатель элемента дерева где перестраиваются дочерние элементы |
|
Допустимый GtkTreeIter
указатель для элемента где перестроены
дочерние элементы, или |
|
Массив целочисленных указывающих
текущую позицию каждого дочернего
элемента относительно его старой
позиции перед переупорядочением, то
есть |
void user_function (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) : Run last
Этот сигнал издаётся когда в модели изменяется строка.
|
GtkTreeModel который издал сигнал |
|
GtkTreePath идентифицирующий изменяемую строку |
|
Допустимый GtkTreeIter указатель для измененной строки |
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkTreeModel *tree_model, GtkTreePath *path, gpointer user_data) : Run first
Этот сигнал издаётся когда строка удаляется.
Помните что никакой итератор не передаётся для обработчика сигнала, та как строка уже удалена.
|
GtkTreeModel который издал сигнал |
|
GtkTreePath идентифицирующий строку |
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) : Run last
Издаётся когда строка получила первую дочернюю строку или потеряна её последняя строка.
|
GtkTreeModel который издал сигнал |
|
GtkTreePath идентифицирующий строку |
|
Допустимый GtkTreeIter указатель для строки |
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) : Run first
Издаётся когда новая строка вставлена в модель.
Помните что строка в этой точке может быть ещё пустой, так как это обычный шаблон для вставки первой пустой строки, а затем заполнения нужными значениями.
|
GtkTreeModel который издал сигнал |
|
GtkTreePath идентифицирующий новую строку |
|
Допустимый GtkTreeIter указатель для новой строки |
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer arg3, gpointer user_data) : Run first
Издаётся когда дочерние элементы в GtkTreeModel перестраиваются.
Помните, этот сигнал не издаётся когда строки перестраиваются с помощью DND, так как при этом осуществляется удаление и последующая вставка строки.
|
GtkTreeModel который издал сигнал |
|
GtkTreePath идентифицирующий дерево элементов в котором дочерние элементы были перестроены |
|
Допустимый GtkTreeIter указывающий на элемент |
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
GtkTreeView, GtkTreeStore, GtkListStore, GtkTreeDnd, GtkTreeSortable
[4] iter сокращение для iterator
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |