Spec-Zone.ru › GTK 3.22

GtkTreeStore

GtkTreeStore — Деревовидная структура данных, которая может быть использована с виджетом GtkTreeView

Функции

GtkTreeStore * gtk_tree_store_new ()
GtkTreeStore * gtk_tree_store_newv ()
void gtk_tree_store_set_column_types ()
void gtk_tree_store_set_value ()
void gtk_tree_store_set ()
void gtk_tree_store_set_valist ()
void gtk_tree_store_set_valuesv ()
gboolean gtk_tree_store_remove ()
void gtk_tree_store_insert ()
void gtk_tree_store_insert_before ()
void gtk_tree_store_insert_after ()
void gtk_tree_store_insert_with_values ()
void gtk_tree_store_insert_with_valuesv ()
void gtk_tree_store_prepend ()
void gtk_tree_store_append ()
gboolean gtk_tree_store_is_ancestor ()
gint gtk_tree_store_iter_depth ()
void gtk_tree_store_clear ()
gboolean gtk_tree_store_iter_is_valid ()
void gtk_tree_store_reorder ()
void gtk_tree_store_swap ()
void gtk_tree_store_move_before ()
void gtk_tree_store_move_after ()

Типы и значения

struct GtkTreeStore

Иерархия объектов

    GObject
    ╰── GtkTreeStore

Реализованные интерфейсы

GtkTreeStore реализует GtkTreeModel, GtkTreeDragSource, GtkTreeDragDest, GtkTreeSortable и GtkBuildable.

Файлы заголовков

#include <gtk/gtk.h>

Описание

Объект GtkTreeStore — это модель списка для использования с виджетом GtkTreeView. Он реализует интерфейс GtkTreeModel и, следовательно, может использовать все доступные там методы. Он также реализует интерфейс GtkTreeSortable, чтобы его можно было сортировать с помощью представления. В конечном счёте, он также реализует интерфейсы перемещения с помощью drag-and-drop.

GtkTreeStore как GtkBuildable

Реализация GtkTreeStore интерфейса GtkBuildable позволяет указывать столбцы модели с помощью элемента <columns>, который может содержать несколько элементов <column>, каждый из которых указывает один столбец модели. Атрибут “type” задаёт тип данных для столбца.

Пример фрагмента определения пользовательского интерфейса для хранилища дерева:

Функции

gtk_tree_store_new ()

GtkTreeStore *
gtk_tree_store_new (gint n_columns,
                    ...);

Создаёт новую структуру данных типа дерево со столбцами, заданными переданными типами. Обратите внимание, что поддерживаются только типы, производные от стандартных фундаментальных типов GObject.

Например, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); создаст новую GtkTreeStore с тремя столбцами типа gint, gchararray и GdkPixbuf соответственно.

Параметры

n_columns

количество столбцов в структуре данных типа дерево

...

все типы GType для столбцов, от первого до последнего

Возвращаемое значение

новая GtkTreeStore

gtk_tree_store_newv ()

GtkTreeStore *
gtk_tree_store_newv (gint n_columns,
                     GType *types);

Функция создания без использования переменного числа аргументов. Используется в основном для языковых библиотек.

[rename-to gtk_tree_store_new]

Параметры

n_columns

количество столбцов в структуре данных типа дерево

types

массив типов GType для столбцов, от первого до последнего.

[array length=n_columns]

Возвращаемое значение

новая GtkTreeStore.

[transfer full]

gtk_tree_store_set_column_types ()

void
gtk_tree_store_set_column_types (GtkTreeStore *tree_store,
                                 gint n_columns,
                                 GType *types);

Эта функция предназначена в первую очередь для GObjects, унаследованных от GtkTreeStore, и должна использоваться только при создании новой GtkTreeStore. Она не будет работать после добавления строки или вызова метода интерфейса GtkTreeModel.

Параметры

tree_store

GtkTreeStore

n_columns

Количество столбцов для структуры данных типа дерево

types

Массив типов GType, по одному для каждого столбца.

[array length=n_columns]

gtk_tree_store_set_value ()

void
gtk_tree_store_set_value (GtkTreeStore *tree_store,
                          GtkTreeIter *iter,
                          gint column,
                          GValue *value);

Устанавливает данные в ячейке, указанной iter и column. Тип value должен быть преобразуем в тип столбца.

Параметры

tree_store

GtkTreeStore

iter

Допустимый GtkTreeIter для строки, которая изменяется

column

номер изменяемого столбца

value

новое значение для ячейки

gtk_tree_store_set ()

void
gtk_tree_store_set (GtkTreeStore *tree_store,
                    GtkTreeIter *iter,
                    ...);

Устанавливает значение одной или нескольких ячеек в строке, на которую ссылается iter. Список аргументов должен содержать целочисленные номера столбцов, каждый номер столбца, за которым следует значение, которое нужно установить. Список завершается значением -1. Например, чтобы установить столбец 0 с типом G_TYPE_STRING на «Foo», вы бы написали gtk_tree_store_set (store, iter, 0, "Foo", -1).

Значение будет ссылаться на хранилище, если это G_TYPE_OBJECT, и будет скопировано, если это G_TYPE_STRING или G_TYPE_BOXED.

Параметры

tree_store

A GtkTreeStore

iter

Допустимый GtkTreeIter для строки, которая изменяется

...

пары номера столбца и значения, завершаемые -1

gtk_tree_store_set_valist ()

void
gtk_tree_store_set_valist (GtkTreeStore *tree_store,
                           GtkTreeIter *iter,
                           va_list var_args);

См. gtk_tree_store_set(); этот вариант принимает va_list для использования языковыми библиотеками.

Параметры

tree_store

A GtkTreeStore

iter

Допустимый GtkTreeIter для строки, которая изменяется

var_args

va_list пар столбец/значение

gtk_tree_store_set_valuesv ()

void
gtk_tree_store_set_valuesv (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            gint *columns,
                            GValue *values,
                            gint n_values);

Вариант gtk_tree_store_set_valist(), который принимает столбцы и значения в виде двух массивов вместо varargs. Эта функция в основном предназначена для языковых библиотек или в случае, если количество изменяемых столбцов неизвестно до выполнения.

[rename-to gtk_tree_store_set]

Параметры

tree_store

A GtkTreeStore

iter

Допустимый GtkTreeIter для строки, которая изменяется

columns

массив номеров столбцов.

[array length=n_values]

values

массив GValues.

[array length=n_values]

n_values

длина массивов columns и values

С момента: 2.12

gtk_tree_store_remove ()

gboolean
gtk_tree_store_remove (GtkTreeStore *tree_store,
                       GtkTreeIter *iter);

Удаляет iter из tree_store. После удаления iter устанавливается на следующую корректную строку на том же уровне или становится некорректной, если она ранее указывала на последнюю строку.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter

Возвращаемое значение

TRUE, если iter всё ещё корректна, FALSE — в противном случае.

gtk_tree_store_insert ()

void
gtk_tree_store_insert (GtkTreeStore *tree_store,
                       GtkTreeIter *iter,
                       GtkTreeIter *parent,
                       gint position);

Создаёт новую строку в position. Если родитель не NULL, то строка станет дочерней для parent. В противном случае строка будет создана на верхнем уровне. Если position равно -1 или больше, чем количество строк на этом уровне, новая строка будет вставлена в конец списка. iter будет изменено на указание на эту новую строку. Строка будет пустой после вызова этой функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter, который будет установлен на новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

position

Позиция вставки новой строки, или -1 для последней.

gtk_tree_store_insert_before ()

void
gtk_tree_store_insert_before (GtkTreeStore *tree_store,
                              GtkTreeIter *iter,
                              GtkTreeIter *parent,
                              GtkTreeIter *sibling);

Вставляет новую строку перед sibling. Если sibling равен NULL, то строка будет добавленна к дочерним элементам parent. Если parent и sibling равны NULL, то строка будет добавлена на верхний уровень. Если оба sibling и parent заданы, parent должен быть родителем sibling. Когда sibling установлен, parent необязательно.

iter будет изменено на указание на эту новую строку. Строка будет пустой после вызова этой функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter, который будет установлен на новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

sibling

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_insert_after ()

void
gtk_tree_store_insert_after (GtkTreeStore *tree_store,
                             GtkTreeIter *iter,
                             GtkTreeIter *parent,
                             GtkTreeIter *sibling);

Вставляет новую строку после sibling. Если sibling равен NULL, то строка будет добавлена к началу дочерних элементов parent. Если parent и sibling равны NULL, то строка будет добавлена к началу верхнего уровня. Если оба sibling и parent заданы, parent должен быть родителем sibling. Когда sibling установлен, parent необязательно.

iter будет изменено на указание на эту новую строку. Строка будет пустой после вызова этой функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter, который будет установлен на новую строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

sibling

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_insert_with_values ()

void
gtk_tree_store_insert_with_values (GtkTreeStore *tree_store,
                                   GtkTreeIter *iter,
                                   GtkTreeIter *parent,
                                   gint position,
                                   ...);

Создаёт новую строку по адресу position. iter будет изменено для указания на эту новую строку. Если position равно -1 или больше количества строк в списке, то новая строка будет добавлена в конец списка. Строка будет заполнена значениями, переданными в эту функцию.

Вызов gtk_tree_store_insert_with_values (tree_store, iter, position, ...) имеет тот же эффект, что и вызов

<object class="GtkTreeStore">
  <columns>
    <column type="gchararray"/>
    <column type="gchararray"/>
    <column type="gint"/>
  </columns>
</object>

за исключением того, что первый вызов будет излучать только сигнал row_inserted, в то время как второй вызов — row_inserted, row_changed и, если дерево упорядочено, rows_reordered. Поскольку многократное излучение сигнала rows_reordered может повлиять на производительность программы, gtk_tree_store_insert_with_values() обычно следует предпочесть при добавлении строк в упорядоченное дерево.

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки новой строки или NULL.

[out][allow-none]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

position

позиция для вставки новой строки, или -1 для добавления в конец

...

пары номера колонки и значения, завершаемые -1

С: 2.10

gtk_tree_store_insert_with_valuesv ()

void
gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store,
                                    GtkTreeIter *iter,
                                    GtkTreeIter *parent,
                                    gint position,
                                    gint *columns,
                                    GValue *values,
                                    gint n_values);

Вариант gtk_tree_store_insert_with_values(), принимающий массивы столбцов и значений вместо аргументов по умолчанию. Эта функция в основном предназначена для языковых библиотек.

[rename-to gtk_tree_store_insert_with_values]

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки новой строки или NULL.

[out][allow-none]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

position

позиция для вставки новой строки, или -1 для последней

columns

массив номеров колонок.

[array length=n_values]

values

массив GValues.

[array length=n_values]

n_values

длина массивов columns и values

С: 2.10

gtk_tree_store_prepend ()

void
gtk_tree_store_prepend (GtkTreeStore *tree_store,
                        GtkTreeIter *iter,
                        GtkTreeIter *parent);

Вставляет новую строку в начало tree_store. Если parent не NULL, то новая строка будет вставлена перед первым дочерним элементом parent, в противном случае — в корень. iter будет изменено для указания на эту новую строку. Строка будет пустой после вызова функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки в добавленную строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_append ()

void
gtk_tree_store_append (GtkTreeStore *tree_store,
                       GtkTreeIter *iter,
                       GtkTreeIter *parent);

Добавляет новую строку в конец tree_store. Если parent не NULL, то новая строка будет добавлена после последнего дочернего элемента parent, в противном случае — в корень. iter будет изменено для указания на эту новую строку. Строка будет пустой после вызова функции. Для заполнения значений необходимо вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

Параметры

tree_store

A GtkTreeStore

iter

Неинициализированный GtkTreeIter для установки в добавленную строку.

[out]

parent

Действительный GtkTreeIter или NULL.

[allow-none]

gtk_tree_store_is_ancestor ()

gboolean
gtk_tree_store_is_ancestor (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            GtkTreeIter *descendant);

Возвращает TRUE, если iter является предком descendant. То есть, iter является родителем (или прародителем, или прапрародителем) descendant.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter

descendant

Действительный GtkTreeIter

Возвращаемое значение

TRUE, если iter является предком descendant

gtk_tree_store_iter_depth ()

gint
gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
                           GtkTreeIter *iter);

Возвращает глубину iter. Будет 0 для элементов на корневом уровне, 1 для элементов на уровень ниже и т. д.

Параметры

tree_store

A GtkTreeStore

iter

Действительный GtkTreeIter

Возвращаемое значение

Глубина iter

gtk_tree_store_clear ()

void
gtk_tree_store_clear (GtkTreeStore *tree_store);

Удаляет все строки из tree_store

Параметры

tree_store

a GtkTreeStore

gtk_tree_store_iter_is_valid ()

gboolean
gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store,
                              GtkTreeIter *iter);

ПРЕДУПРЕЖДЕНИЕ: Эта функция медленная. Используйте её только для отладки и/или тестирования.

Проверяет, является ли данный итератор допустимым для этого GtkTreeStore.

Параметры

tree_store

A GtkTreeStore.

iter

A GtkTreeIter.

Возвращаемое значение

TRUE, если итератор действителен, FALSE, если итератор недействителен.

Since: 2.2

gtk_tree_store_reorder ()

void
gtk_tree_store_reorder (GtkTreeStore *tree_store,
                        GtkTreeIter *parent,
                        gint *new_order);

Переупорядочивает потомков parent в tree_store, следуя порядку, указанному в new_order. Обратите внимание, что эта функция работает только с несортированными хранилищами.

[skip]

Параметры

tree_store

A GtkTreeStore

parent

A GtkTreeIter или NULL.

[nullable]

new_order

Массив целых чисел, сопоставляющий новое положение каждого потомка со старым положением до переупорядочивания, то есть new_order [newpos] = oldpos.

[array]

Since: 2.2

gtk_tree_store_swap ()

void
gtk_tree_store_swap (GtkTreeStore *tree_store,
                     GtkTreeIter *a,
                     GtkTreeIter *b);

Меняет местами a и b на одном уровне tree_store. Обратите внимание, что эта функция работает только с несортированными хранилищами.

Параметры

tree_store

A GtkTreeStore.

a

A GtkTreeIter.

b

Другой GtkTreeIter.

Since: 2.2

gtk_tree_store_move_before ()

void
gtk_tree_store_move_before (GtkTreeStore *tree_store,
                            GtkTreeIter *iter,
                            GtkTreeIter *position);

Перемещает iter в tree_store перед position. iter и position должны быть на одном уровне. Если position равно NULL, iter будет перемещено в конец уровня.

Параметры

tree_store

A GtkTreeStore.

iter

A GtkTreeIter.

position

A GtkTreeIter или NULL.

[allow-none]

Since: 2.2

gtk_tree_store_move_after ()

void
gtk_tree_store_move_after (GtkTreeStore *tree_store,
                           GtkTreeIter *iter,
                           GtkTreeIter *position);

Перемещает iter в tree_store после position. iter и position должны быть на одном уровне. Если position равно NULL, iter будет перемещено в начало уровня.

Параметры

tree_store

A GtkTreeStore.

iter

A GtkTreeIter.

position

A GtkTreeIter.

[allow-none]

Since: 2.2

Типы и значения

Структура GtkTreeStore

struct GtkTreeStore;

См. также

GtkTreeModel

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/GtkTreeStore.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API