Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Signals

GtkTreeSelection

GtkTreeSelection Объект выбора для GtkTreeView

Краткое описание

#include <gtk/gtk.h> GtkTreeSelection; gboolean (*GtkTreeSelectionFunc) (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data); void (*GtkTreeSelectionForeachFunc) (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data); void gtk_tree_selection_set_mode (GtkTreeSelection *selection, GtkSelectionMode type); GtkSelectionMode gtk_tree_selection_get_mode (GtkTreeSelection *selection); void gtk_tree_selection_set_select_function (GtkTreeSelection *selection, GtkTreeSelectionFunc func, gpointer data, GtkDestroyNotify destroy); gpointer gtk_tree_selection_get_user_data (GtkTreeSelection *selection); GtkTreeView* gtk_tree_selection_get_tree_view (GtkTreeSelection *selection); gboolean gtk_tree_selection_get_selected (GtkTreeSelection *selection, GtkTreeModel **model, GtkTreeIter *iter); void gtk_tree_selection_selected_foreach (GtkTreeSelection *selection, GtkTreeSelectionForeachFunc func, gpointer data); GList* gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection, GtkTreeModel **model); gint gtk_tree_selection_count_selected_rows (GtkTreeSelection *selection); void gtk_tree_selection_select_path (GtkTreeSelection *selection, GtkTreePath *path); void gtk_tree_selection_unselect_path (GtkTreeSelection *selection, GtkTreePath *path); gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection, GtkTreePath *path); void gtk_tree_selection_select_iter (GtkTreeSelection *selection, GtkTreeIter *iter); void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection, GtkTreeIter *iter); gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection, GtkTreeIter *iter); void gtk_tree_selection_select_all (GtkTreeSelection *selection); void gtk_tree_selection_unselect_all (GtkTreeSelection *selection); void gtk_tree_selection_select_range (GtkTreeSelection *selection, GtkTreePath *start_path, GtkTreePath *end_path); void gtk_tree_selection_unselect_range (GtkTreeSelection *selection, GtkTreePath *start_path, GtkTreePath *end_path);

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

GObject +----GtkTreeSelection

Сигналы

"changed" void user_function (GtkTreeSelection *treeselection, gpointer user_data) : Run first

Описание

GtkTreeSelection объект это вспомогательный объект для управления выбором в GtkTreeView виджете. GtkTreeSelection объект создаётся автоматически при создании нового GtkTreeView виджета и не существует независимо от этого виджета. Первопричина существования объекта GtkTreeSelection это чистота кода и API. То есть, нет концептуального основания, все эти функции не могут быть методами в GtkTreeView виджете вместо отдельной функции.

GtkTreeSelection объект получается из GtkTreeView вызовом gtk_tree_view_get_selection(). Им можно управлять для проверки статуса выбора в дереве, так же как выделить или снять выделение с отдельной строки. Выделение происходит полностью на стороне просмотра (view). Как результат, множество полей просмотра одной и той же модели могут иметь полностью отличающиеся выделения. Дополнительно вы можете изменить выделение строк в модели которая в данный момент не отображается для просмотра и не расширяя предварительно её родителей.

Важно помнить что сигнал "changed" является подсказкой при контроле выбора в поле просмотра. Может издаться только один сигнал когда выбран диапазон строк. Дополнительно в некоторых случаях может издаться сигнал "changed" когда ничего не происходило (в основном как результат запрограммированного вызова select_row на уже выбранной строке).

Детали

GtkTreeSelection

typedef struct _GtkTreeSelection GtkTreeSelection;

GtkTreeSelectionFunc ()

gboolean (*GtkTreeSelectionFunc) (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data);

Функция используемая gtk_tree_selection_set_select_function() для определения может ли строка быть выбрана. Она вызывается каждый раз когда изменяется состояние строки. Возвращаемое значение TRUE указывает для selection что изменение выбора выполнено.

selection :

GtkTreeSelection

model :

GtkTreeModel которая рассматривается

path :

GtkTreePath запрашиваемой строки

path_currently_selected :

TRUE, если путь это текущеме выделение

data :

Пользовательские данные

Возвращает :

TRUE, если состояние выбора строки может быть переключено


GtkTreeSelectionForeachFunc ()

void (*GtkTreeSelectionForeachFunc) (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data);

Функция используемая gtk_tree_selection_selected_foreach() для отображения всех выделенных строк. Она вызывается для каждой выделенной строки в поле просмотра.

model :

Рассматриваемая GtkTreeModel

path :

GtkTreePath выбранной строки

iter :

GtkTreeIter указатель на выбранную строку

data :

Пользовательские данные


gtk_tree_selection_set_mode ()

void gtk_tree_selection_set_mode (GtkTreeSelection *selection, GtkSelectionMode type);

Устанавливает режим выбора selection. Если первичный тип был GTK_SELECTION_MULTIPLE, то когда якорь сохраняется выделенным, если он предварительно был выделен.

selection :

GtkTreeSelection.

type :

Режим выделения


gtk_tree_selection_get_mode ()

GtkSelectionMode gtk_tree_selection_get_mode (GtkTreeSelection *selection);

Выдаёт режим выделения для selection. Смотрите gtk_tree_selection_set_mode().

selection :

GtkTreeSelection

Возвращает :

Текущий режим выделения


gtk_tree_selection_set_select_function ()

void gtk_tree_selection_set_select_function (GtkTreeSelection *selection, GtkTreeSelectionFunc func, gpointer data, GtkDestroyNotify destroy);

Устанавливает функцию выделения. Если установлена, эта функция вызывается перед выделением или снятием выделения любого элемента, создавая некоторый контроль выделения. Функция выбора должна возвращать TRUE если состояние элемента может быть переключено, а FALSE если состояние элемента должно быть выставлено неизменяемым.

selection :

GtkTreeSelection.

func :

Функция выделения.

data :

Данные функции выделения.

destroy :

Разрушающая функция для пользовательских данных. Может быть NULL.


gtk_tree_selection_get_user_data ()

gpointer gtk_tree_selection_get_user_data (GtkTreeSelection *selection);

Возвращает пользовательские данные для функции выбора.

selection :

GtkTreeSelection.

Возвращает :

Пользовательские данные.


gtk_tree_selection_get_tree_view ()

GtkTreeView* gtk_tree_selection_get_tree_view (GtkTreeSelection *selection);

Возвращает дерево просмотра связанное с selection.

selection :

GtkTreeSelection

Возвращает :

GtkTreeView


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 :

GtkTreeSelection.

model :

Указатель на установленную GtkTreeModel, или NULL.

iter :

GtkTreeIter, или NULL.

Возвращает :

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 :

GtkTreeSelection.

func :

Функция вызываемая для каждого выбранного элемента.

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_foreach (list, gtk_tree_path_free, NULL); g_list_free (list);

selection :

GtkTreeSelection.

model :

Указатель на установленную GtkTreeModel, или NULL.

Возвращает :

GList содержащий GtkTreePath для каждой выбранной строки.

Начиная с версии 2.2


gtk_tree_selection_count_selected_rows ()

gint gtk_tree_selection_count_selected_rows (GtkTreeSelection *selection);

Возвращает число строк выделенных в дереве tree.

selection :

GtkTreeSelection.

Возвращает :

Число выбранных строк.

Начиная с версии 2.2


gtk_tree_selection_select_path ()

void gtk_tree_selection_select_path (GtkTreeSelection *selection, GtkTreePath *path);

Выделяет строку указанную в path.

selection :

GtkTreeSelection.

path :

GtkTreePath для выделения.


gtk_tree_selection_unselect_path ()

void gtk_tree_selection_unselect_path (GtkTreeSelection *selection, GtkTreePath *path);

Снимает выделение строки указанной в path.

selection :

GtkTreeSelection.

path :

GtkTreePath для отмены выделения.


gtk_tree_selection_path_is_selected ()

gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection, GtkTreePath *path);

Возвращает TRUE если строка указанная в path является выделенной. Если path указывает на не допустимое положение, возвращается FALSE.

selection :

GtkTreeSelection.

path :

GtkTreePath для проверки выделения.

Возвращает :

TRUE если path это текущеме выделение.


gtk_tree_selection_select_iter ()

void gtk_tree_selection_select_iter (GtkTreeSelection *selection, GtkTreeIter *iter);

Выделяет определенный итератор.

selection :

GtkTreeSelection.

iter :

GtkTreeIter для выделения.


gtk_tree_selection_unselect_iter ()

void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection, GtkTreeIter *iter);

Отменяет выделение определенного итератора.

selection :

GtkTreeSelection.

iter :

GtkTreeIter для отмены выделения.


gtk_tree_selection_iter_is_selected ()

gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection, GtkTreeIter *iter);

Возвращает TRUE если строка iter является текущим выделением.

selection :

GtkTreeSelection

iter :

Допустимый GtkTreeIter

Возвращает :

TRUE, если iter это текущеме выделение.


gtk_tree_selection_select_all ()

void        gtk_tree_selection_select_all   (GtkTreeSelection *selection);

Выделяет все элементы. selection должно быть установлено в режим GTK_SELECTION_MULTIPLE.

selection :

GtkTreeSelection.


gtk_tree_selection_unselect_all ()

void        gtk_tree_selection_unselect_all (GtkTreeSelection *selection);

Отменяет выделение всех элементов.

selection :

GtkTreeSelection.


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 :

GtkTreeSelection.

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 :

GtkTreeSelection.

start_path :

Начала диапазона элементов.

end_path :

Конец диапазона элементов.

Начиная с версии 2.2

Детали сигнала

Сигнал "changed"

void user_function (GtkTreeSelection *treeselection, gpointer user_data) : Run first

Издаётся каждый раз при изменении выделения. Он может издаться только один раз при выделении диапазона элементов, а может издаться когда ничего не происходит.

treeselection :

Объект получающий сигнал.

user_data :

Пользовательские данные устанавливаемые при подключении обработчика сигнала.

Смотрите также

GtkTreeView, GtkTreeViewColumn, GtkTreeDnd, GtkTreeMode, GtkTreeSortable, GtkTreeModelSort, GtkListStore, GtkTreeStore, GtkCellRenderer, GtkCellEditable, GtkCellRendererPixbuf, GtkCellRendererText, GtkCellRendererToggle