GtkTreeSelection
GtkTreeSelection — Объект выбора для GtkTreeView
Функции
| gboolean | (*GtkTreeSelectionFunc) () |
| void | (*GtkTreeSelectionForeachFunc) () |
| void | gtk_tree_selection_set_mode () |
| GtkSelectionMode | gtk_tree_selection_get_mode () |
| void | gtk_tree_selection_set_select_function () |
| GtkTreeSelectionFunc | gtk_tree_selection_get_select_function () |
| gpointer | gtk_tree_selection_get_user_data () |
| GtkTreeView * | gtk_tree_selection_get_tree_view () |
| gboolean | gtk_tree_selection_get_selected () |
| void | gtk_tree_selection_selected_foreach () |
| GList * | gtk_tree_selection_get_selected_rows () |
| int | gtk_tree_selection_count_selected_rows () |
| void | gtk_tree_selection_select_path () |
| void | gtk_tree_selection_unselect_path () |
| gboolean | gtk_tree_selection_path-is-selected () |
| void | gtk_tree_selection_select-iter () |
| void | gtk_tree_selection_unselect-iter () |
| gboolean | gtk_tree_selection_iter-is-selected () |
| void | gtk_tree_selection_select_all () |
| void | gtk_tree_selection_unselect_all () |
| void | gtk_tree_selection_select-range () |
| void | gtk_tree_selection_unselect-range () |
Свойства
| GtkSelectionMode | mode | Чтение/Запись |
Сигналы
| void | changed | Выполняется первым |
Типы и значения
Иерархия объектов
GObject
╰── GtkTreeSelection
Файлы
#include <gtk/gtk.h>
Описание
Объект GtkTreeSelection — вспомогательный объект для управления выбором для виджета GtkTreeView. Объект GtkTreeSelection автоматически создаётся при создании нового виджета GtkTreeView и не может существовать независимо от этого виджета. Основная причина существования объектов GtkTreeSelection — чистота кода и API. То есть, нет концептуальных причин, по которым все эти функции не могли бы быть методами виджета GtkTreeView, а не отдельной функции.
Объект GtkTreeSelection извлекается из GtkTreeView с помощью вызова gtk_tree_view_get_selection(). Его можно использовать для проверки состояния выбора в дереве, а также для выбора и отмены выбора отдельных строк. Выбор выполняется полностью на стороне представления. В результате, у нескольких представлений одной и той же модели могут быть совершенно разные выборки. Кроме того, вы не можете изменить выбор строки в модели, которая в данный момент не отображается в представлении, не развернув её родительские элементы сначала.
Важно помнить, что сигнал “changed” в основном является подсказкой. То есть, он может излучать только один сигнал при выборе диапазона строк. Кроме того, он может иногда излучать сигнал “changed”, когда ничего не произошло (в основном из-за того, что программисты вызывают select_row для уже выбранной строки).
Функции
GtkTreeSelectionFunc ()
gboolean (*GtkTreeSelectionFunc) (GtkTreeSelection *selection,GtkTreeModel *model,GtkTreePath *path,gboolean path_currently_selected,gpointer data);
Функция, используемая gtk_tree_selection_set_select_function() для фильтрации возможности выбора строки. Вызывается всякий раз, когда состояние строки может измениться. Значение TRUE указывает selection, что изменение выбора разрешено.
Параметры
selection | ||
model | A GtkTreeModel для просмотра | |
path | The GtkTreePath строки, о которой идёт речь | |
path_currently_selected |
| |
data | данные пользователя. | [closure] |
Возвращает
TRUE, если состояние выбора строки можно переключить
GtkTreeSelectionForeachFunc ()
void (*GtkTreeSelectionForeachFunc) (GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer data);
Функция, используемая gtk_tree_selection_selected_foreach() для отображения всех выделенных строк. Будет вызываться для каждой выделенной строки в представлении.
Параметры
model | The GtkTreeModel для просмотра | |
path | The GtkTreePath выделенной строки | |
iter | A GtkTreeIter указывает на выделенную строку | |
data | данные пользователя. | [closure] |
gtk_tree_selection_set_mode ()
void gtk_tree_selection_set_mode (GtkTreeSelection *selection,GtkSelectionMode type);
Устанавливает режим выбора для selection. Если предыдущий тип был GTK_SELECTION_MULTIPLE, то якорь остаётся выбранным, если он был выбран ранее.
Параметры
selection | ||
type | Режим выбора |
gtk_tree_selection_get_mode ()
GtkSelectionMode
gtk_tree_selection_get_mode (GtkTreeSelection *selection); Получает режим выбора для selection. См. gtk_tree_selection_set_mode().
Параметры
selection |
Возвращает
текущий режим выбора
gtk_tree_selection_set_select_function ()
void gtk_tree_selection_set_select_function (GtkTreeSelection *selection,GtkTreeSelectionFunc func,gpointer data,GDestroyNotify destroy);
Устанавливает функцию выбора.
Если установлена, эта функция вызывается перед выделением или снятием выделения с любого узла, предоставляя некоторый контроль над тем, какие узлы будут выбраны. Функция выбора должна возвращать TRUE если состояние узла может быть переключено и FALSE если состояние узла должно остаться неизменным.
Параметры
selection | ||
func | Функция выбора. Может быть | [nullable] |
data | Данные функции выбора. Могут быть | |
destroy | Функция уничтожения для пользовательских данных. Может быть |
gtk_tree_selection_get_select_function ()
GtkTreeSelectionFunc
gtk_tree_selection_get_select_function
(GtkTreeSelection *selection); Возвращает текущую функцию выбора.
[skip]
Параметры
selection |
Возвращает
Функцию.
gtk_tree_selection_get_user_data ()
gpointer
gtk_tree_selection_get_user_data (GtkTreeSelection *selection); Возвращает пользовательские данные для функции выбора.
[skip]
Параметры
selection |
Возвращает
Пользовательские данные.
gtk_tree_selection_get_tree_view ()
GtkTreeView *
gtk_tree_selection_get_tree_view (GtkTreeSelection *selection); Возвращает связанное с selection дерево представлений.
Параметры
selection |
gtk_tree_selection_get_selected ()
gboolean gtk_tree_selection_get_selected (GtkTreeSelection *selection,GtkTreeModel **model,GtkTreeIter *iter);
Устанавливает iter в текущий выбранный узел, если selection установлено в GTK_SELECTION_SINGLE или GTK_SELECTION_BROWSE. iter может быть NULL, если вы хотите только проверить, содержит ли selection какие-либо выбранные узлы. model заполняется текущей моделью для удобства. Эта функция не будет работать, если вы используете selection равное GTK_SELECTION_MULTIPLE.
Параметры
selection | ||
model | Указатель, который будет установлен на GtkTreeModel, или NULL. | [out][allow-none][transfer none] |
iter | The GtkTreeIter, или NULL. | [out][allow-none] |
Возвращаемое значение
TRUE, если есть выбранный узел.
gtk_tree_selection_selected_foreach ()
void gtk_tree_selection_selected_foreach (GtkTreeSelection *selection,GtkTreeSelectionForeachFunc func,gpointer data);
Вызывает функцию для каждого выбранного узла. Обратите внимание, что вы не можете изменять дерево или выбор из этой функции. В результате, gtk_tree_selection_get_selected_rows() может быть более полезным.
Параметры
selection | ||
func | Функция, которая должна быть вызвана для каждого выбранного узла. | [scope call] |
data | данные пользователя, передаваемые функции. |
gtk_tree_selection_get_selected_rows ()
GList * gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection,GtkTreeModel **model);
Создаёт список путей всех выбранных строк. Кроме того, если вы планируете изменять модель после вызова этой функции, вам может потребоваться преобразовать возвращённый список в список GtkTreeRowReferences. Для этого вы можете использовать gtk_tree_row_reference_new().
Для освобождения возвращаемого значения используйте:
g_list_free_full (list, (GDestroyNotify) gtk_tree_path_free);
Параметры
selection | ||
model | Указатель, который будет установлен на GtkTreeModel, или | [out][allow-none][transfer none] |
Возвращаемое значение
A GList содержащий GtkTreePath для каждой выбранной строки.
[element-type GtkTreePath][transfer full]
gtk_tree_selection_count_selected_rows ()
int
gtk_tree_selection_count_selected_rows
(GtkTreeSelection *selection); Возвращает количество строк, которые были выбраны в tree .
Параметры
selection |
Возвращаемое значение
Количество выбранных строк.
gtk_tree_selection_select_path ()
void gtk_tree_selection_select_path (GtkTreeSelection *selection,GtkTreePath *path);
Выбирает строку по path .
Параметры
selection | ||
path | The GtkTreePath для выбора. |
gtk_tree_selection_unselect_path ()
void gtk_tree_selection_unselect_path (GtkTreeSelection *selection,GtkTreePath *path);
Снимает выбор с строки по path .
Параметры
selection | ||
path | The GtkTreePath для снятия выбора. |
gtk_tree_selection_path_is_selected ()
gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection,GtkTreePath *path);
Возвращает TRUE если строка, на которую указывает path, в настоящее время выбрана. Если path не указывает на допустимое местоположение, возвращается FALSE.
Параметры
selection | ||
path | A GtkTreePath для проверки выбора. |
Возвращаемое значение
TRUE если path выбрано.
gtk_tree_selection_select_iter ()
void gtk_tree_selection_select_iter (GtkTreeSelection *selection,GtkTreeIter *iter);
Выбирает указанный итератор.
Параметры
selection | ||
iter | The GtkTreeIter для выбора. |
gtk_tree_selection_unselect_iter ()
void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection,GtkTreeIter *iter);
Снимает выбор с указанного итератора.
Параметры
selection | ||
iter | The GtkTreeIter для снятия выбора. |
gtk_tree_selection_iter_is_selected ()
gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection,GtkTreeIter *iter);
Возвращает TRUE, если строка по адресу iter в настоящее время выбрана.
Параметры
selection | ||
iter | A valid GtkTreeIter |
Возвращает
TRUE, если iter выбрана
gtk_tree_selection_select_all ()
void
gtk_tree_selection_select_all (GtkTreeSelection *selection); Выбирает все узлы. selection должен быть установлен в режим GTK_SELECTION_MULTIPLE.
Параметры
selection |
gtk_tree_selection_unselect_all ()
void
gtk_tree_selection_unselect_all (GtkTreeSelection *selection); Снимает выбор со всех узлов.
Параметры
selection |
gtk_tree_selection_select_range ()
void gtk_tree_selection_select_range (GtkTreeSelection *selection,GtkTreePath *start_path,GtkTreePath *end_path);
Выбирает диапазон узлов, определяемый start_path и end_path включительно. selection должен быть установлен в режим GTK_SELECTION_MULTIPLE.
Параметры
selection | ||
start_path | Начальный узел диапазона. | |
end_path | Конечный узел диапазона. |
gtk_tree_selection_unselect_range ()
void gtk_tree_selection_unselect_range (GtkTreeSelection *selection,GtkTreePath *start_path,GtkTreePath *end_path);
Снимает выбор с диапазона узлов, определяемого start_path и end_path включительно.
Параметры
selection | ||
start_path | Начальный узел диапазона. | |
end_path | Конечный узел диапазона. |
Типы и значения
GtkTreeSelection
typedef struct _GtkTreeSelection GtkTreeSelection;
Подробное описание свойств
Свойство “mode”
“mode” GtkSelectionMode
Режим выбора. Дополнительную информацию об этом свойстве см. в gtk_tree_selection_set_mode().
Владелец: GtkTreeSelection
Флаги: Чтение / Запись
Значение по умолчанию: GTK_SELECTION_SINGLE
Подробное описание сигналов
Сигнал “changed”
void user_function (GtkTreeSelection *treeselection, gpointer user_data)
Издается всякий раз, когда выбор (возможно) изменился. Обратите внимание, что этот сигнал в основном является подсказкой. Он может быть сгенерирован только один раз при выборе диапазона строк и иногда генерируется, когда ничего не произошло.
Параметры
treeselection | объект, который получил сигнал. | |
user_data | пользовательские данные, установленные при подключении обработчика сигналов. |
Флаги: Run First
См. также
GtkTreeView, GtkTreeViewColumn, GtkTreeModel, GtkTreeSortable, GtkTreeModelSort, GtkListStore, GtkTreeStore, GtkCellRenderer, GtkCellEditable, GtkCellRendererPixbuf, GtkCellRendererText, GtkCellRendererToggle, GtkTreeView drag-and-drop
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkTreeSelection.html