| 
 | |
|  | 
| 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 firstGtkTreeModel интерфейс в основном определяет древовидный интерфейс для использования с виджетом 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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |