GTK+ Reference Manual |
||||
---|---|---|---|---|
GtkTreeSelectionGtkTreeSelection Объект выбора для 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 на уже выбранной строке).
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 : |
|
model : |
GtkTreeModel которая рассматривается |
path : |
GtkTreePath запрашиваемой строки |
path_currently_selected : |
TRUE, если путь это текущеме выделение |
data : |
Пользовательские данные |
Возвращает : |
TRUE, если состояние выбора строки может быть переключено |
void (*GtkTreeSelectionForeachFunc) (GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
gpointer data);
Функция используемая gtk_tree_selection_selected_foreach() для отображения всех выделенных строк. Она вызывается для каждой выделенной строки в поле просмотра.
model : |
Рассматриваемая GtkTreeModel |
path : |
GtkTreePath выбранной строки |
iter : |
GtkTreeIter указатель на выбранную строку |
data : |
Пользовательские данные |
void gtk_tree_selection_set_mode (GtkTreeSelection *selection,
GtkSelectionMode type);
Устанавливает режим выбора selection. Если первичный тип был GTK_SELECTION_MULTIPLE, то когда якорь сохраняется выделенным, если он предварительно был выделен.
selection : |
|
type : |
Режим выделения |
GtkSelectionMode gtk_tree_selection_get_mode
(GtkTreeSelection *selection);
Выдаёт режим выделения для selection. Смотрите gtk_tree_selection_set_mode().
selection : |
|
Возвращает : |
Текущий режим выделения |
void gtk_tree_selection_set_select_function
(GtkTreeSelection *selection,
GtkTreeSelectionFunc func,
gpointer data,
GtkDestroyNotify destroy);
Устанавливает функцию выделения. Если установлена, эта функция вызывается перед выделением или снятием выделения любого элемента, создавая некоторый контроль выделения. Функция выбора должна возвращать TRUE если состояние элемента может быть переключено, а FALSE если состояние элемента должно быть выставлено неизменяемым.
selection : |
|
func : |
Функция выделения. |
data : |
Данные функции выделения. |
destroy : |
Разрушающая функция для пользовательских данных. Может быть NULL. |
gpointer gtk_tree_selection_get_user_data
(GtkTreeSelection *selection);
Возвращает пользовательские данные для функции выбора.
selection : |
|
Возвращает : |
Пользовательские данные. |
GtkTreeView* gtk_tree_selection_get_tree_view
(GtkTreeSelection *selection);
Возвращает дерево просмотра связанное с selection.
selection : |
|
Возвращает : |
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. |
iter : |
GtkTreeIter, или NULL. |
Возвращает : |
TRUE, если есть выбранные элементы. |
void gtk_tree_selection_selected_foreach
(GtkTreeSelection *selection,
GtkTreeSelectionForeachFunc func,
gpointer data);
Взывает функцию для каждого выбранного элемента. Помните что вы не можете модифицировать дерево или выделение внутри этой функции. Как результат, gtk_tree_selection_get_selected_rows() может быть более полезна.
selection : |
|
func : |
Функция вызываемая для каждого выбранного элемента. |
data : |
Пользовательские данные помещаемые в функцию. |
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 : |
|
model : |
Указатель на установленную GtkTreeModel, или NULL. |
Возвращает : |
GList содержащий GtkTreePath для каждой выбранной строки. |
Начиная с версии 2.2
gint gtk_tree_selection_count_selected_rows
(GtkTreeSelection *selection);
Возвращает число строк выделенных в дереве tree.
selection : |
|
Возвращает : |
Число выбранных строк. |
Начиная с версии 2.2
void gtk_tree_selection_select_path (GtkTreeSelection *selection,
GtkTreePath *path);
Выделяет строку указанную в path.
selection : |
|
path : |
GtkTreePath для выделения. |
void gtk_tree_selection_unselect_path
(GtkTreeSelection *selection,
GtkTreePath *path);
Снимает выделение строки указанной в path.
selection : |
|
path : |
GtkTreePath для отмены выделения. |
gboolean gtk_tree_selection_path_is_selected
(GtkTreeSelection *selection,
GtkTreePath *path);
Возвращает TRUE если строка указанная в path является выделенной. Если path указывает на не допустимое положение, возвращается FALSE.
selection : |
|
path : |
GtkTreePath для проверки выделения. |
Возвращает : |
TRUE если path это текущеме выделение. |
void gtk_tree_selection_select_iter (GtkTreeSelection *selection,
GtkTreeIter *iter);
Выделяет определенный итератор.
selection : |
|
iter : |
GtkTreeIter для выделения. |
void gtk_tree_selection_unselect_iter
(GtkTreeSelection *selection,
GtkTreeIter *iter);
Отменяет выделение определенного итератора.
selection : |
|
iter : |
GtkTreeIter для отмены выделения. |
gboolean gtk_tree_selection_iter_is_selected
(GtkTreeSelection *selection,
GtkTreeIter *iter);
Возвращает TRUE если строка iter является текущим выделением.
selection : |
|
iter : |
Допустимый GtkTreeIter |
Возвращает : |
TRUE, если iter это текущеме выделение. |
void gtk_tree_selection_select_all (GtkTreeSelection *selection);Выделяет все элементы. selection должно быть установлено в режим GTK_SELECTION_MULTIPLE.
selection : |
void gtk_tree_selection_unselect_all (GtkTreeSelection *selection);Отменяет выделение всех элементов.
selection : |
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 : |
Конец диапазона элементов. |
void gtk_tree_selection_unselect_range
(GtkTreeSelection *selection,
GtkTreePath *start_path,
GtkTreePath *end_path);
Снимает выделение диапазона элементов, определенного между start_path и end_path.
selection : |
|
start_path : |
Начала диапазона элементов. |
end_path : |
Конец диапазона элементов. |
Начиная с версии 2.2
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