The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

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


ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Оформить подписку на год


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList