GtkCellArea
GtkCellArea — Абстрактный класс для размещения GtkCellRenderers
Функции
| GtkCellRenderer * | gtk_cell_area_get_focus_cell () |
| void | gtk_cell_area_add_focus_sibling () |
| void | gtk_cell_area_remove_focus_sibling () |
| gboolean | gtk_cell_area_is_focus_sibling () |
| const GList * | gtk_cell_area_get_focus_siblings () |
| GtkCellRenderer * | gtk_cell_area_get_focus_from_sibling () |
| GtkCellRenderer * | gtk_cell_area_get_edited_cell () |
| GtkCellEditable * | gtk_cell_area_get_edit_widget () |
| gboolean | gtk_cell_area_activate_cell () |
| void | gtk_cell_area_stop_editing () |
| void | gtk_cell_area_inner_cell_area () |
| void | gtk_cell_area_request_renderer () |
Свойства
| GtkCellEditable * | edit-widget | Чтение |
| GtkCellRenderer * | edited-cell | Чтение |
| GtkCellRenderer * | focus-cell | Чтение / Запись |
Сигналы
| void | add-editable | Выполняется в первую очередь |
| void | apply-attributes | Выполняется в первую очередь |
| void | focus-changed | Выполняется в первую очередь |
| void | remove-editable | Выполняется в первую очередь |
Типы и Значения
| struct | GtkCellArea |
| struct | GtkCellAreaClass |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkCellArea
╰── GtkCellAreaBox
Реализованные интерфейсы
GtkCellArea реализует GtkCellLayout и GtkBuildable.
Включаемые файлы
#include <gtk/gtk.h>
Описание
Класс GtkCellArea является абстрактным классом для виджетов GtkCellLayout (также называемых «виджетами компоновки»), которые взаимодействуют с произвольным количеством GtkCellRenderers и взаимодействуют с пользователем для заданной строки GtkTreeModel.
Область ячейки обрабатывает события, навигацию фокуса, отрисовку и запросы/распределения размера для заданной строки данных.
Обычно пользователям не нужно взаимодействовать с классом GtkCellArea напрямую, если они не реализуют сами виджеты компоновки ячеек.
Запрос размеров области
Как описано в разделе управления геометрией GtkWidget, GTK+ использует систему управления геометрией «высота для ширины» для вычисления размеров виджетов и пользовательских интерфейсов. GtkCellArea использует те же семантики для расчёта размера области для произвольного количества строк GtkTreeModel.
При запросе размера области ячейки необходимо рассчитать размер для нескольких строк, и это будет сделано по-разному разными виджетами компоновки. Например, GtkTreeViewColumn всегда выстраивает области сверху вниз, в то время как GtkIconView может навязать всем областям одинаковую ширину и располагать их в несколько строк, запрашивая высоту для большего количества областей ячеек при выделении меньшей ширины.
Также важно, чтобы области поддерживали выравнивание ячеек с областями, отрисованными для соседних строк (ячейки могут отображаться «столбцами» внутри области, даже если размеры ячеек в каждой строке отличаются). По этой причине GtkCellArea использует объект GtkCellAreaContext для хранения выравниваний и размеров (а также общего максимального минимального и естественного размера для всех рассчитанных строк с указанным контекстом).
Объект GtkCellAreaContext является неявным объектом, специфичным для GtkCellArea, который его создал (см. gtk_cell_area_create_context()). Владеющий виджет компоновки может создавать любое количество контекстов для расчёта размеров строк, которые должны получать одинаковый размер по крайней мере в одной ориентации (горизонтальной или вертикальной). Однако важно, чтобы тот же GtkCellAreaContext, который использовался для запроса размеров для заданной строки GtkTreeModel, использовался при отрисовке или обработке событий для этой строки.
Для запроса ширины всех строк на уровне корня GtkTreeModel необходимо выполнить следующее:
Обратите внимание, что в этом примере неважно наблюдать возвращаемую минимальную и естественную ширину области для каждой строки, если только объект виджета компоновки не заинтересован в ширине отдельных строк. Однако общая ширина хранится в сопровождающем объекте GtkCellAreaContext и может быть проконсультирована в любое время.
Это может быть полезно, поскольку виджеты GtkCellLayout обычно должны поддерживать запрос и отрисовку строк в древовидных моделях с очень большим количеством строк. В этом случае виджет GtkCellLayout рассчитает требуемую ширину строк в источнике обработки или таймаута (см. g_timeout_add()) и когда виджет запрашивает свою фактическую ширину в GtkWidgetClass.get_preferred_width(), он может просто проконсультироваться с накопленной шириной в объекте GtkCellAreaContext.
Простой пример, где строки отрисовываются сверху вниз и занимают всю ширину виджета компоновки, будет выглядеть так:
В приведённом примере виджет Foo должен убедиться, что некоторые размеры строк были вычислены (количество строк, которое Foo посчитал подходящим для запроса места в одной итерации таймаута), прежде чем просто вернуть количество места, необходимого для области через GtkCellAreaContext.
Запрос высоты для ширины (или ширины для высоты) области аналогичен, за исключением того, что в этом случае GtkCellAreaContext не хранит данные (на самом деле, он не знает, сколько места виджет компоновки планирует выделять для каждой строки. За виджетом компоновки остаётся задача отрисовки каждой строки данных с соответствующей высотой и шириной, которые запросил GtkCellArea).
Для запроса высоты для ширины всех строк на уровне корня GtkTreeModel необходимо выполнить следующее:
Обратите внимание, что в приведённом примере нам нужно кэшировать возвращаемые высоты для каждой строки, чтобы мы знали, какие размеры использовать для отрисовки областей для каждой строки. Однако мы хотим кэшировать высоты только в том случае, если запрос предназначен для реального выделения ресурсов для виджетов компоновки.
В некоторых случаях виджет компоновки запрашивает высоту для произвольной ширины; это специальный случай для виджетов компоновки, которые нуждаются в запросе размера для десятков тысяч строк. В этом случае важно, чтобы виджет компоновки вычислил один достаточно большой фрагмент строк и вернул эту высоту синхронно. Объяснение заключается в том, что любой виджет компоновки, по крайней мере, способен синхронно вычислить достаточно высоты, чтобы заполнить высоту экрана (или высоту окна прокрутки), в ответ на вызов GtkWidgetClass.get_preferred_height_for_width(). Возврат идеальной высоты для ширины, большей, чем область экрана, не имеет значения, так как после того, как виджет компоновки получит выделение от окна прокрутки, он продолжает управлять значениями полосы прокрутки, в то время как требуется всё больше и больше высоты для высот строк, которые вычисляются в фоновом режиме.
Отрисовка областей
После получения размеров областей, по крайней мере, для строк в видимой области виджета компоновки, они могут быть отрисованы в момент GtkWidgetClass.draw().
Грубый пример того, как отрисовать все строки на уровне корня, выполняется следующим образом:
Обратите внимание, что кэшированная высота в этом примере действительно зависит от того, как работает виджет компоновки. Виджет компоновки может решить предоставить каждой строке её минимальную или естественную высоту или, если ожидается, что содержимое модели поместится внутри виджета компоновки без прокрутки, имеет смысл рассчитать выделение для каждой строки в момент «size-allocate» с использованием gtk_distribute_natural_allocation().
Обработка событий и управление фокусом клавиатуры
Передача событий в область такая же простая, как обработка событий любого обычного виджета, а затем их передача в API gtk_cell_area_event() по мере их поступления. Обычно GtkCellArea интересуется только событиями нажатия кнопок, однако могут быть реализованы специализированные производные области, заинтересованные в обработке других событий. Обработка события может вызвать срабатывание сигнала «focus-changed», а также «add-editable» в том случае, если была нажата редактируемая ячейка и необходимо начать редактирование. Вы можете вызвать gtk_cell_area_stop_editing() в любое время, чтобы отменить любое редактирование ячейки, которое в данный момент происходит.
GtkCellArea управляет фокусом клавиатуры от ячейки к ячейке аналогично GtkWidget. Для виджетов компоновки, которые поддерживают предоставление фокуса ячейкам, важно помнить, что для строки, у которой есть фокус, необходимо передать GTK_CELL_RENDERER_FOCUSED функциям области и сообщить области об отрисовке фокуса во время отрисовки.
Виджеты компоновки, которые принимают фокус на ячейках, должны реализовать виртуальный метод GtkWidgetClass.focus(). Виджет компоновки всегда отвечает за знание того, где строки GtkTreeModel отрисовываются внутри виджета, поэтому в момент GtkWidgetClass.focus() виджет компоновки должен использовать методы GtkCellArea для навигации по фокусу внутри области и затем наблюдать за значениями GtkDirectionType для передачи фокуса соседним строкам и областям.
Базовый пример реализации виртуального метода GtkWidgetClass.focus():
GtkTreeIter iter;
gint minimum_width;
gint natural_width;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_get_preferred_width (area, context, widget, NULL, NULL);
valid = gtk_tree_model_iter_next (model, &iter);
}
gtk_cell_area_context_get_preferred_width (context, &minimum_width, &natural_width);Обратите внимание, что виджет компоновки отвечает за сопоставление значений GtkDirectionType с способом расположения своих ячеек.
Свойства ячейки
Класс GtkCellArea вводит свойства ячейки для компонентов отображения ячеек очень похожим образом, как GtkContainer вводит свойства дочерних элементов для GtkWidgets. Это предоставляет общие интерфейсы для определения взаимоотношений между областями ячеек и их содержимым. Например, в GtkCellAreaBox ячейка может «расширяться» и получать дополнительное пространство, когда область выделяется больше, чем её естественный запрос, или ячейка может быть настроена на «выравнивание» с соседними строками, которые были запрошены и отображены с тем же GtkCellAreaContext.
Используйте gtk_cell_area_class_install_cell_property() для установки свойств ячейки для класса области ячейки и gtk_cell_area_class_find_cell_property() или gtk_cell_area_class_list_cell_properties() для получения информации о существующих свойствах ячейки.
Для установки значения свойства ячейки используйте gtk_cell_area_cell_set_property(), gtk_cell_area_cell_set() или gtk_cell_area_cell_set_valist(). Для получения значения свойства ячейки используйте gtk_cell_area_cell_get_property(), gtk_cell_area_cell_get() или gtk_cell_area_cell_get_valist().
Функции
GtkCellCallback ()
gboolean (*GtkCellCallback) (GtkCellRenderer *renderer,gpointer data);
Тип функций обратного вызова, используемых для итерации по компонентам отображения ячеек GtkCellArea, см. gtk_cell_area_foreach().
Параметры
renderer | компонент отображения ячейки, над которым выполняется операция | |
data | данные, предоставленные пользователем. | [closure] |
Возвращаемое значение
TRUE для остановки итерации по ячейкам.
GtkCellAllocCallback ()
gboolean (*GtkCellAllocCallback) (GtkCellRenderer *renderer,const GdkRectangle *cell_area,const GdkRectangle *cell_background,gpointer data);
Тип функций обратного вызова, используемых для итерации по компонентам отображения ячеек и их выделенных областей внутри GtkCellArea, см. gtk_cell_area_foreach_alloc().
Параметры
renderer | компонент отображения ячейки, над которым выполняется операция | |
cell_area | область, выделенная для | |
cell_background | область фона для | |
data | данные, предоставленные пользователем. | [closure] |
Возвращаемое значение
TRUE для остановки итерации по ячейкам.
GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID()
#define GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID(object, property_id, pspec)
Эта макрокоманда должна использоваться для вывода стандартного предупреждения о непредвиденных свойствах в реализациях set_cell_property() и get_cell_property().
Параметры
object | the GObject на котором был вызван | |
property_id | числовой идентификатор свойства | |
pspec | the GParamSpec свойства |
gtk_cell_area_add ()
void gtk_cell_area_add (GtkCellArea *area,GtkCellRenderer *renderer);
Добавляет renderer в area с настройками свойств дочерней ячейки по умолчанию.
Параметры
area | ||
renderer | the GtkCellRenderer добавить в |
Since: 3.0
gtk_cell_area_remove ()
void gtk_cell_area_remove (GtkCellArea *area,GtkCellRenderer *renderer);
Удаляет renderer из area .
Параметры
area | ||
renderer | the GtkCellRenderer удалить из |
Since: 3.0
gtk_cell_area_has_renderer ()
gboolean gtk_cell_area_has_renderer (GtkCellArea *area,GtkCellRenderer *renderer);
Проверяет, содержит ли area renderer .
Параметры
area | ||
renderer | the GtkCellRenderer проверить |
Возвращаемое значение
TRUE если renderer содержится в area .
Since: 3.0
gtk_cell_area_foreach ()
void gtk_cell_area_foreach (GtkCellArea *area,GtkCellCallback callback,gpointer callback_data);
Вызывает callback для каждого GtkCellRenderer в area .
Параметры
area | ||
callback | the GtkCellCallback вызвать. | [scope call] |
callback_data | указатель на данные, предоставленные пользователем |
Since: 3.0
gtk_cell_area_foreach_alloc ()
void gtk_cell_area_foreach_alloc (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,const GdkRectangle *cell_area,const GdkRectangle *background_area,GtkCellAllocCallback callback,gpointer callback_data);
Вызывает callback для каждого GtkCellRenderer в area с выделенной областью внутри cell_area.
Параметры
area | ||
context | контекст GtkCellAreaContext для этой строки данных. | |
widget | the GtkWidget, на который | |
cell_area | относительные координаты и размеры | |
background_area | относительные координаты области фона | |
callback | вызываемая функция GtkCellAllocCallback. | [scope call] |
callback_data | указатель на данные, предоставленные пользователем |
Since: 3.0
gtk_cell_area_event ()
gint gtk_cell_area_event (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,GdkEvent *event,const GdkRectangle *cell_area,GtkCellRendererState flags);
Делегирует обработку событий GtkCellArea.
Параметры
area | ||
context | контекст GtkCellAreaContext для этой строки данных. | |
widget | the GtkWidget, на который | |
event | обрабатываемое событие GdkEvent | |
cell_area | относительные координаты | |
flags | состояние GtkCellRendererState для |
Возвращаемое значение
TRUE , если событие было обработано area .
Since: 3.0
gtk_cell_area_render ()
void gtk_cell_area_render (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,cairo_t *cr,const GdkRectangle *background_area,const GdkRectangle *cell_area,GtkCellRendererState flags,gboolean paint_focus);
Отрисовывает ячейки area по макету area на widget в заданных координатах.
Параметры
area | ||
context | контекст GtkCellAreaContext для этой строки данных. | |
widget | the GtkWidget, на который | |
cr | контекст отрисовки cairo_t | |
background_area | относительные координаты области фона для | |
cell_area | относительные координаты | |
flags | состояние GtkCellRendererState для | |
paint_focus | указывает, нужно ли отрисовывать фокус на выделенных ячейках выделенных строк или нет. |
Since: 3.0
gtk_cell_area_get_cell_allocation ()
void gtk_cell_area_get_cell_allocation (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,GtkCellRenderer *renderer,const GdkRectangle *cell_area,GdkRectangle *allocation);
Определяет выделение renderer внутри area, если area будет отрисовано в cell_area.
Параметры
area | ||
context | контекст GtkCellAreaContext, используемый для хранения размеров | |
widget | the GtkWidget, на котором | |
renderer | the GtkCellRenderer, выделение которого нужно получить | |
cell_area | вся область выделения для | |
allocation | место для хранения выделения | [out] |
Since: 3.0
gtk_cell_area_get_cell_at_position ()
GtkCellRenderer * gtk_cell_area_get_cell_at_position (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,const GdkRectangle *cell_area,gint x,gint y,GdkRectangle *alloc_area);
Получает GtkCellRenderer по координатам x и y внутри area и, необязательно, возвращает полное размещение ячейки внутри cell_area.
Параметры
area | ||
context | контекст GtkCellAreaContext, используемый для хранения размеров для | |
widget | the GtkWidget на котором | |
cell_area | вся выделенная область для | |
x | положение по оси x | |
y | положение по оси y | |
alloc_area | место для хранения внутренней выделенной области возвращаемого объекта GtkCellRenderer, или | [out][allow-none] |
С: 3.0
gtk_cell_area_create_context ()
GtkCellAreaContext *
gtk_cell_area_create_context (GtkCellArea *area); Создаёт GtkCellAreaContext, который используется с area для всех целей. GtkCellAreaContext хранит геометрическую информацию для строк, для которых он был использован. Важно использовать один и тот же контекст для одной и той же строки данных в любое время (т. е. необходимо отрисовывать и обрабатывать события с тем же GtkCellAreaContext, который использовался для запроса размера этих строк данных).
Параметры
area |
С: 3.0
gtk_cell_area_copy_context ()
GtkCellAreaContext * gtk_cell_area_copy_context (GtkCellArea *area,GtkCellAreaContext *context);
Иногда это необходимо для случаев, когда строки должны совместно использовать выравнивание в одном направлении, но могут быть сгруппированы по-разному в противоположном направлении.
Например, GtkIconView создаёт все значки (строки), чтобы иметь одинаковую ширину, а ячейки в них — одинаковое горизонтальное выравнивание. Однако каждая строка значков может иметь отдельную общую высоту. GtkIconView использует это для запроса высот каждой строки на основе контекста, который уже использовался для запроса всех ширины строк, которые должны быть отображены.
Параметры
area | ||
context | the GtkCellAreaContext для копирования |
С: 3.0
gtk_cell_area_get_request_mode ()
GtkSizeRequestMode
gtk_cell_area_get_request_mode (GtkCellArea *area); Получает, предпочитает ли область макет высоты по ширине или ширины по высоте.
Параметры
area |
Возвращаемое значение
значение GtkSizeRequestMode, которое предпочитает area.
С: 3.0
gtk_cell_area_get_preferred_width ()
void gtk_cell_area_get_preferred_width (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,gint *minimum_width,gint *natural_width);
Получает минимальную и естественную ширину области ячеек.
area будет хранить некоторую геометрическую информацию в context по пути; при запросе размеров через произвольное количество строк, важно обращаться к gtk_cell_area_context_get_preferred_width() после серии запросов, а не к minimum_width и natural_width этого вызова.
Параметры
area | ||
context | the GtkCellAreaContext для выполнения этого запроса | |
widget | the GtkWidget, где | |
minimum_width | место для хранения минимальной ширины, или | [out][allow-none] |
natural_width | место для хранения естественной ширины, или | [out][allow-none] |
С: 3.0
gtk_cell_area_get_preferred_height_for_width ()
void gtk_cell_area_get_preferred_height_for_width (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,gint width,gint *minimum_height,gint *natural_height);
Возвращает минимальную и естественную высоту области ячейки, если ей будет задана указанная width.
area хранит некоторую геометрическую информацию в context во время вызова gtk_cell_area_get_preferred_width(). Важно выполнить серию запросов gtk_cell_area_get_preferred_width() с context в первую очередь, а затем вызвать gtk_cell_area_get_preferred_height_for_width() для каждой области ячейки индивидуально, чтобы получить высоту для ширины каждой полностью запрошенной строки.
Если в какой-то момент ширина одной строки изменяется, её следует снова запросить с помощью gtk_cell_area_get_preferred_width(), а затем снова проверить полную ширину запрошенных строк с помощью gtk_cell_area_context_get_preferred_width().
Параметры
area | ||
context | the GtkCellAreaContext, для которого уже запрошены ширины. | |
widget | the GtkWidget, где | |
width | ширина, для которой нужно проверить высоту этой области | |
minimum_height | место для хранения минимальной высоты, или | [out][allow-none] |
natural_height | место для хранения естественной высоты, или | [out][allow-none] |
С: 3.0
gtk_cell_area_get_preferred_height ()
void gtk_cell_area_get_preferred_height (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,gint *minimum_height,gint *natural_height);
Возвращает начальную минимальную и естественную высоту области ячейки.
area будет хранить некоторую геометрическую информацию в context по ходу выполнения; при запросе размеров более произвольного количества строк проверка minimum_height и natural_height данного вызова не важна, а следует обратиться к gtk_cell_area_context_get_preferred_height() после серии запросов.
Параметры
area | ||
context | the GtkCellAreaContext для выполнения этого запроса | |
widget | the GtkWidget, где | |
minimum_height | место для хранения минимальной высоты, или | [out][allow-none] |
natural_height | место для хранения естественной высоты, или | [out][allow-none] |
С: 3.0
gtk_cell_area_get_preferred_width_for_height ()
void gtk_cell_area_get_preferred_width_for_height (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,gint height,gint *minimum_width,gint *natural_width);
Возвращает минимальную и естественную ширину области ячейки, если ей будет задана указанная height.
area хранит некоторую геометрическую информацию в context во время вызова gtk_cell_area_get_preferred_height(). Важно выполнить серию запросов gtk_cell_area_get_preferred_height() с context в первую очередь, а затем вызвать gtk_cell_area_get_preferred_width_for_height() для каждой области ячейки индивидуально, чтобы получить высоту для ширины каждой полностью запрошенной строки.
Если в какой-то момент высота одной строки изменяется, её следует снова запросить с помощью gtk_cell_area_get_preferred_height(), а затем снова проверить полную высоту запрошенных строк с помощью gtk_cell_area_context_get_preferred_height().
Параметры
area | ||
context | the GtkCellAreaContext, для которого уже запрошены ширины. | |
widget | the GtkWidget, где | |
height | высота, для которой нужно проверить ширину этой области | |
minimum_width | место для хранения минимальной ширины, или | [out][allow-none] |
natural_width | место для хранения естественной ширины, или | [out][allow-none] |
С: 3.0
gtk_cell_area_get_current_path_string ()
const gchar *
gtk_cell_area_get_current_path_string (GtkCellArea *area); Получает строковое представление текущего GtkTreePath для текущей применённой GtkTreeIter. Эта информация неявно обновляется при вызове gtk_cell_area_apply_attributes() и может использоваться для взаимодействия с визуализаторами из подклассов GtkCellArea.
Параметры
area | объект GtkCellArea |
Возвращаемое значение
Строковое представление текущего GtkTreePath для текущих применённых атрибутов к area. Эта строка принадлежит области и не должна освобождаться.
С: 3.0
gtk_cell_area_apply_attributes ()
void gtk_cell_area_apply_attributes (GtkCellArea *area,GtkTreeModel *tree_model,GtkTreeIter *iter,gboolean is_expander,gboolean is_expanded);
Применяет подключённые атрибуты к визуализаторам в area, извлекая значения из tree_model.
Параметры
area | объект GtkCellArea | |
tree_model | модель GtkTreeModel для извлечения значений | |
iter | GtkTreeIter в | |
is_expander | является ли | |
is_expanded | расширен ли |
С: 3.0
gtk_cell_area_attribute_connect ()
void gtk_cell_area_attribute_connect (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *attribute,gint column);
Подключает attribute для применения значений из column к используемой GtkTreeModel.
Параметры
area | объект GtkCellArea | |
renderer | визуализатор GtkCellRenderer, для которого подключается атрибут | |
attribute | имя атрибута | |
column | столбец GtkTreeModel для извлечения значений атрибута |
С: 3.0
gtk_cell_area_attribute_disconnect ()
void gtk_cell_area_attribute_disconnect (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *attribute);
Отключает attribute для renderer в area, так что атрибут больше не будет обновляться значениями из модели.
Параметры
area | объект GtkCellArea | |
renderer | визуализатор GtkCellRenderer, для которого отключается атрибут | |
attribute | имя атрибута |
С: 3.0
gtk_cell_area_attribute_get_column ()
gint gtk_cell_area_attribute_get_column (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *attribute);
Возвращает столбец модели, к которому сопоставлен атрибут, или -1, если атрибут не сопоставлен.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer | |
attribute | атрибут визуализатора |
Возвращаемое значение
номер столбца модели, или -1
С: 3.14
gtk_cell_area_class_install_cell_property ()
void gtk_cell_area_class_install_cell_property (GtkCellAreaClass *aclass,guint property_id,GParamSpec *pspec);
Устанавливает свойство ячейки в классе области ячеек.
Параметры
aclass | класс GtkCellAreaClass | |
property_id | идентификатор свойства | |
pspec | объект GParamSpec для свойства |
С: 3.0
gtk_cell_area_class_find_cell_property ()
GParamSpec * gtk_cell_area_class_find_cell_property (GtkCellAreaClass *aclass,const gchar *property_name);
Ищет свойство ячейки по имени в классе области ячеек.
Параметры
aclass | класс GtkCellAreaClass | |
property_name | имя свойства для поиска |
Возвращаемое значение
объект GParamSpec свойства, или NULL если у aclass нет свойства с таким именем.
[transfer none]
С: 3.0
gtk_cell_area_class_list_cell_properties ()
GParamSpec ** gtk_cell_area_class_list_cell_properties (GtkCellAreaClass *aclass,guint *n_properties);
Возвращает все свойства ячеек для класса области ячеек.
Параметры
aclass | класс GtkCellAreaClass | |
n_properties | место для хранения количества найденных свойств ячеек. | [out] |
Возвращаемое значение
новый массив GParamSpec* с нулевым завершением. Массив необходимо освободить с помощью g_free().
[array length=n_properties][transfer container]
С: 3.0
gtk_cell_area_add_with_properties ()
void gtk_cell_area_add_with_properties (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *first_prop_name,...);
Добавляет renderer в area, одновременно задавая свойства ячейки. Подробнее см. gtk_cell_area_add() и gtk_cell_area_cell_set().
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer, который будет размещён внутри | |
first_prop_name | имя первого свойства ячейки для задания | |
... | список имён и значений свойств, завершающийся |
С версии: 3.0
gtk_cell_area_cell_set ()
void gtk_cell_area_cell_set (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *first_prop_name,...);
Устанавливает одно или несколько свойств ячейки для cell в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer, являющийся ячейкой внутри | |
first_prop_name | имя первого свойства ячейки для задания | |
... | список имён и значений свойств, завершающийся |
С версии: 3.0
gtk_cell_area_cell_get ()
void gtk_cell_area_cell_get (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *first_prop_name,...);
Получает значения одного или нескольких свойств ячейки для renderer в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer, который находится внутри | |
first_prop_name | имя первого свойства ячейки для получения | |
... | место для возврата первого свойства ячейки, за которым необязательно следуют пары имя/место возврата, завершающиеся |
С версии: 3.0
gtk_cell_area_cell_set_valist ()
void gtk_cell_area_cell_set_valist (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *first_property_name,va_list var_args);
Устанавливает одно или несколько свойств ячейки для renderer в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer, находящийся внутри | |
first_property_name | имя первого свойства ячейки для задания | |
var_args | список имён и значений свойств, завершающийся |
С версии: 3.0
gtk_cell_area_cell_get_valist ()
void gtk_cell_area_cell_get_valist (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *first_property_name,va_list var_args);
Получает значения одного или нескольких свойств ячейки для renderer в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer внутри | |
first_property_name | имя первого свойства для получения | |
var_args | место для возврата первого свойства, за которым необязательно следуют пары имя/место возврата, завершающиеся |
С версии: 3.0
gtk_cell_area_cell_set_property ()
void gtk_cell_area_cell_set_property (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *property_name,const GValue *value);
Устанавливает свойство ячейки для renderer в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer внутри | |
property_name | имя свойства ячейки для задания | |
value | значение для задания свойства ячейки |
С версии: 3.0
gtk_cell_area_cell_get_property ()
void gtk_cell_area_cell_get_property (GtkCellArea *area,GtkCellRenderer *renderer,const gchar *property_name,GValue *value);
Получает значение свойства ячейки для renderer в area.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer внутри | |
property_name | имя свойства для получения | |
value | место для возврата значения |
С версии: 3.0
gtk_cell_area_is_activatable ()
gboolean
gtk_cell_area_is_activatable (GtkCellArea *area); Возвращает, может ли область выполнить какие-либо действия при активации после применения новых атрибутов к area .
Параметры
area |
Возвращаемое значение
может ли area выполнить какие-либо действия при активации.
С версии: 3.0
gtk_cell_area_activate ()
gboolean gtk_cell_area_activate (GtkCellArea *area,GtkCellAreaContext *context,GtkWidget *widget,const GdkRectangle *cell_area,GtkCellRendererState flags,gboolean edit_only);
Активирует area, обычно активируя текущую ячейку с фокусом, однако некоторые подклассы, которые встраивают виджеты в область, также могут активировать виджет, если он в данный момент имеет фокус.
Параметры
area | ||
context | the GtkCellAreaContext в контексте текущих данных строки | |
widget | the GtkWidget на котором | |
cell_area | размер и расположение | |
flags | флаги состояния GtkCellRendererState для | |
edit_only | если |
Возвращаемое значение
Была ли успешно активирована area.
С версии: 3.0
gtk_cell_area_focus ()
gboolean gtk_cell_area_focus (GtkCellArea *area,GtkDirectionType direction);
Этот метод должен вызываться родительским виджетом макета area при передаче фокуса area или перемещении фокуса внутри area для заданных direction и данных строки.
Реализующие классы GtkCellArea должны реализовать этот метод для получения и управления фокусом своим собственным способом, специфичным для их организации ячеек.
Параметры
area | ||
direction | the GtkDirectionType |
Возвращаемое значение
TRUE если фокус останется внутри area в результате этого вызова.
С версии: 3.0
gtk_cell_area_set_focus_cell ()
void gtk_cell_area_set_focus_cell (GtkCellArea *area,GtkCellRenderer *renderer);
Явно устанавливает текущую ячейку с фокусом на renderer .
Обычно вызывается реализациями GtkCellAreaClass.focus() или GtkCellAreaClass.event(), но также может использоваться для реализации функций, таких как gtk_tree_view_set_cursor_on_cell().
Параметры
area | ||
renderer | the GtkCellRenderer которому нужно предоставить фокус |
С версии: 3.0
gtk_cell_area_get_focus_cell ()
GtkCellRenderer *
gtk_cell_area_get_focus_cell (GtkCellArea *area); Получает текущую ячейку с фокусом для area
Параметры
area |
Возвращаемое значение
текущую ячейку с фокусом в area .
[transfer none]
С версии: 3.0
gtk_cell_area_add_focus_sibling ()
void gtk_cell_area_add_focus_sibling (GtkCellArea *area,GtkCellRenderer *renderer,GtkCellRenderer *sibling);
Добавляет sibling к области фокусировки renderer, фокус будет отображаться вокруг renderer и всех его соседей, если renderer может получить фокус для заданной строки.
Обрабатываемые события фокусных соседей также могут активировать заданный фокусируемый renderer .
Параметры
area | ||
renderer | the GtkCellRenderer ожидающий фокус | |
sibling | the GtkCellRenderer для добавления в область фокуса |
С версии: 3.0
gtk_cell_area_remove_focus-sibling ()
void gtk_cell_area_remove_focus_sibling (GtkCellArea *area,GtkCellRenderer *renderer,GtkCellRenderer *sibling);
Удаляет sibling из списка фокусных соседей renderer (см. gtk_cell_area_add_focus_sibling()).
Параметры
area | ||
renderer | the GtkCellRenderer ожидающий фокус | |
sibling | the GtkCellRenderer для удаления из области фокуса |
С версии: 3.0
gtk_cell_area_is_focus_sibling ()
gboolean gtk_cell_area_is_focus_sibling (GtkCellArea *area,GtkCellRenderer *renderer,GtkCellRenderer *sibling);
Возвращает значение, указывающее, является ли sibling одним из фокусных соседей renderer (см. gtk_cell_area_add_focus_sibling()).
Параметры
area | ||
renderer | the GtkCellRenderer, ожидаемый для получения фокуса | |
sibling | the GtkCellRenderer для проверки против списка соседей |
Возвращает
TRUE если sibling является фокусным соседом renderer
С: 3.0
gtk_cell_area_get_focus_siblings ()
const GList * gtk_cell_area_get_focus_siblings (GtkCellArea *area,GtkCellRenderer *renderer);
Возвращает фокусных соседних элементов рендеринга ячеек для renderer .
Параметры
area | ||
renderer | the GtkCellRenderer ожидаемый для получения фокуса |
Возвращает
Список GList GtkCellRenderers. Возвращаемый список является внутренним и не должен освобождаться.
[element-type GtkCellRenderer][transfer none]
С: 3.0
gtk_cell_area_get_focus_from_sibling ()
GtkCellRenderer * gtk_cell_area_get_focus_from_sibling (GtkCellArea *area,GtkCellRenderer *renderer);
Возвращает GtkCellRenderer, ожидаемый для получения фокуса, для которого renderer является или может быть соседом.
Это полезно для подклассов GtkCellArea при обработке событий, после определения рендера в месте события, он может выбрать активацию ячейки фокуса, для которой ячейка события может быть соседом.
Параметры
area | ||
renderer | the GtkCellRenderer |
Возвращает
the GtkCellRenderer для которого renderer является соседом, или NULL.
[nullable][transfer none]
С: 3.0
gtk_cell_area_get_edited_cell ()
GtkCellRenderer *
gtk_cell_area_get_edited_cell (GtkCellArea *area); Возвращает GtkCellRenderer в area, который в настоящее время редактируется.
Параметры
area |
С: 3.0
gtk_cell_area_get_edit_widget ()
GtkCellEditable *
gtk_cell_area_get_edit_widget (GtkCellArea *area); Возвращает виджет GtkCellEditable, текущий используемый для редактирования текущей ячейки.
Параметры
area |
С: 3.0
gtk_cell_area_activate_cell ()
gboolean gtk_cell_area_activate_cell (GtkCellArea *area,GtkWidget *widget,GtkCellRenderer *renderer,GdkEvent *event,const GdkRectangle *cell_area,GtkCellRendererState flags);
Используется подклассами GtkCellArea при обработке событий для активации ячеек. Базовый класс GtkCellArea активирует ячейки для событий клавиатуры самостоятельно в своем собственном реализации GtkCellArea->activate().
Параметры
area | ||
widget | the GtkWidget, на котором | |
renderer | the GtkCellRenderer in | |
event | the GdkEvent для активации ячейки | |
cell_area | the GdkRectangle in | |
flags | the GtkCellRendererState для |
Возвращает
было ли успешно выполнена активация ячейки
С: 3.0
gtk_cell_area_stop_editing ()
void gtk_cell_area_stop_editing (GtkCellArea *area,gboolean canceled);
Явно останавливает редактирование текущей ячейки.
Если canceled равно TRUE, текущий рендерер ячейки отправит сигнал ::editing-canceled, в противном случае сигнал ::editing-done будет отправлен на текущем виджете редактирования.
См. gtk_cell_area_get_edited_cell() и gtk_cell_area_get_edit_widget().
Параметры
area | объект GtkCellArea | |
canceled | указывает, было ли редактирование отменено. |
С момента: 3.0
gtk_cell_area_inner_cell_area ()
void gtk_cell_area_inner_cell_area (GtkCellArea *area,GtkWidget *widget,const GdkRectangle *cell_area,GdkRectangle *inner_area);
Это вспомогательная функция для реализации GtkCellArea для получения внутренней области, где будет отрисован заданный GtkCellRenderer. Она удаляет любые отступы, добавленные ранее функцией gtk_cell_area_request_renderer().
Параметры
area | объект GtkCellArea | |
widget | объект GtkWidget, на который | |
cell_area | координаты | |
inner_area | место для возвращаемой внутренней области ячейки. | [out] |
С момента: 3.0
gtk_cell_area_request-renderer ()
void gtk_cell_area_request_renderer (GtkCellArea *area,GtkCellRenderer *renderer,GtkOrientation orientation,GtkWidget *widget,gint for_size,gint *minimum_size,gint *natural_size);
Это вспомогательная функция для реализации GtkCellArea для запроса размера для рендереров ячеек. Важно использовать эту функцию для запроса размера, а затем использовать gtk_cell_area_inner_cell_area() во время отрисовки и обработки событий, так как эта функция добавляет отступы вокруг ячейки для отрисовки фокуса.
Параметры
area | объект GtkCellArea | |
renderer | объект GtkCellRenderer для запроса размера | |
orientation | GtkOrientation для запроса размера | |
widget | объект GtkWidget, на который | |
for_size | контекстный размер размещения для запроса, или -1, если нужно вернуть базовый запрос для ориентации. | |
minimum_size | место для хранения минимального размера, или | [out][allow-none] |
natural_size | место для хранения естественного размера, или | [out][allow-none] |
С момента: 3.0
Типы и значения
Структура GtkCellArea
struct GtkCellArea;
Структура GtkCellAreaClass
struct GtkCellAreaClass {
/* Basic methods */
void (* add) (GtkCellArea *area,
GtkCellRenderer *renderer);
void (* remove) (GtkCellArea *area,
GtkCellRenderer *renderer);
void (* foreach) (GtkCellArea *area,
GtkCellCallback callback,
gpointer callback_data);
void (* foreach_alloc) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
const GdkRectangle *cell_area,
const GdkRectangle *background_area,
GtkCellAllocCallback callback,
gpointer callback_data);
gint (* event) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
GdkEvent *event,
const GdkRectangle *cell_area,
GtkCellRendererState flags);
void (* render) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
cairo_t *cr,
const GdkRectangle *background_area,
const GdkRectangle *cell_area,
GtkCellRendererState flags,
gboolean paint_focus);
void (* apply_attributes) (GtkCellArea *area,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gboolean is_expander,
gboolean is_expanded);
/* Geometry */
GtkCellAreaContext *(* create_context) (GtkCellArea *area);
GtkCellAreaContext *(* copy_context) (GtkCellArea *area,
GtkCellAreaContext *context);
GtkSizeRequestMode (* get_request_mode) (GtkCellArea *area);
void (* get_preferred_width) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
gint *minimum_width,
gint *natural_width);
void (* get_preferred_height_for_width) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
gint width,
gint *minimum_height,
gint *natural_height);
void (* get_preferred_height) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
gint *minimum_height,
gint *natural_height);
void (* get_preferred_width_for_height) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
gint height,
gint *minimum_width,
gint *natural_width);
/* Cell Properties */
void (* set_cell_property) (GtkCellArea *area,
GtkCellRenderer *renderer,
guint property_id,
const GValue *value,
GParamSpec *pspec);
void (* get_cell_property) (GtkCellArea *area,
GtkCellRenderer *renderer,
guint property_id,
GValue *value,
GParamSpec *pspec);
/* Focus */
gboolean (* focus) (GtkCellArea *area,
GtkDirectionType direction);
gboolean (* is_activatable) (GtkCellArea *area);
gboolean (* activate) (GtkCellArea *area,
GtkCellAreaContext *context,
GtkWidget *widget,
const GdkRectangle *cell_area,
GtkCellRendererState flags,
gboolean edit_only);
};
Члены
| Добавляет GtkCellRenderer в область. | |
| Удаляет GtkCellRenderer из области. | |
| Вызывает функцию GtkCellCallback для каждого GtkCellRenderer в области с предоставленными пользовательскими данными, пока обратный вызов не вернёт | |
| Вызывает функцию GtkCellAllocCallback для каждого GtkCellRenderer в области с выделенной областью для ячейки и предоставленными пользовательскими данными, пока обратный вызов не вернёт | |
| Обрабатывает событие в области. Обычно используется для активации ячейки в месте события для событий кнопок, но также может использоваться для общего перенаправления событий в GtkWidgets, нарисованные на области. | |
| Отрисовывает ячейки области в указанный прямоугольник, | |
| Применяет атрибуты ячеек к ячейкам. Реализовано как сигнал и, как правило, подклассы GtkCellArea не нуждаются в его реализации, поскольку он обрабатывается базовым классом. | |
| Создаёт и возвращает специфичный для класса GtkCellAreaContext для хранения данных выравнивания и распределения ячеек для указанного класса GtkCellArea. | |
| Создаёт новый GtkCellAreaContext в том же состоянии, что и переданный | |
| Это позволяет области сообщить своему компоновщику, предпочитает ли она выделение в режиме | |
| Вычисляет минимальную и естественную ширину ячеек области с применёнными текущими атрибутами, учитывая особенности компоновки указанной GtkCellArea. Хотя запросы выполняются по рядам, выравнивания и общие минимальные и естественные размеры должны храниться в соответствующем GtkCellAreaContext. | |
| Вычисляет минимальную и естественную высоту области, если переданному | |
| Вычисляет минимальную и естественную высоту ячеек области с применёнными текущими атрибутами. По сути, это то же, что и | |
| Вычисляет минимальную и естественную ширину области, если переданному | |
| Следует реализовать для обработки изменений свойств дочерних ячеек для данного GtkCellRenderer, которые ранее были установлены в GtkCellAreaClass с помощью | |
| Следует реализовать для отчётности о значениях свойств дочерних ячеек для данной дочерней GtkCellRenderer. | |
| Этот виртуальный метод должен быть реализован для перемещения фокуса от ячейки к ячейке внутри GtkCellArea. GtkCellArea должен перемещать фокус от ячейки к ячейке внутри области и возвращать | |
| Возвращает, может ли GtkCellArea реагировать на |
| Это вызывается, когда компонент размещения, отрисовывающий GtkCellArea, активирует ячейку фокуса (см. |
Подробное описание свойств
Свойство “edit-widget”
“edit-widget” GtkCellEditable *
Компонент, который в настоящее время редактирует редактируемую ячейку
Это свойство является только для чтения и изменяется только в результате вызова gtk_cell_area_activate_cell().
Владелец: GtkCellArea
Флаги: Чтение
С версии: 3.0
Свойство “edited-cell”
“edited-cell” GtkCellRenderer *
Ячейка в области, которая в настоящее время редактируется
Это свойство является только для чтения и изменяется только в результате вызова gtk_cell_area_activate_cell().
Владелец: GtkCellArea
Флаги: Чтение
С версии: 3.0
Свойство “focus-cell”
“focus-cell” GtkCellRenderer *
Ячейка в области, которая в настоящее время имеет фокус
Владелец: GtkCellArea
Флаги: Чтение / Запись
С версии: 3.0
Подробное описание сигналов
Сигнал “add-editable”
void user_function (GtkCellArea *area, GtkCellRenderer *renderer, GtkCellEditable *editable, GdkRectangle *cell_area, char *path, gpointer user_data)
Указывает, что редактирование началось в renderer и что editable должно быть добавлено к собственному компоненту компоновки ячеек в cell_area.
Параметры
area | the GtkCellArea где началось редактирование | |
renderer | the GtkCellRenderer который инициировал редактирование | |
editable | компонент GtkCellEditable для добавления | |
cell_area | координаты GdkRectangle относительно GtkWidget, куда следует добавить | |
path | строка GtkTreePath, для которой инициировано это редактирование | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 3.0
Сигнал “apply-attributes”
void user_function (GtkCellArea *area, GtkTreeModel *model, GtkTreeIter *iter, gboolean is_expander, gboolean is_expanded, gpointer user_data)
Этот сигнал генерируется всякий раз, когда применяются атрибуты к area из model
Параметры
area | the GtkCellArea к которому нужно применить атрибуты | |
model | the GtkTreeModel из которого нужно применить атрибуты | |
iter | the GtkTreeIter указывающий на строку, к которой нужно применить атрибуты | |
is_expander | является ли элемент представлением детей в строке | |
is_expanded | отображается ли в представлении содержимое детей этой строки | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 3.0
Сигнал “focus-changed”
void user_function (GtkCellArea *area, GtkCellRenderer *renderer, char *path, gpointer user_data)
Указывает, что фокус изменился на этом area. Этот сигнал генерируется либо в результате обработки фокуса, либо в результате обработки события.
Возможна ситуация, когда сигнал генерируется, даже если рендерер, получивший фокус, не изменился. Это происходит, если фокус переходит к тому же рендереру в той же области ячеек для другой строки данных.
Параметры
area | the GtkCellArea где изменился фокус | |
renderer | the GtkCellRenderer у которого есть фокус | |
path | текущая строка GtkTreePath для | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 3.0
Сигнал “remove-editable”
void user_function (GtkCellArea *area, GtkCellRenderer *renderer, GtkCellEditable *editable, gpointer user_data)
Указывает, что редактирование завершено в renderer и что editable следует удалить из собственного компонента компоновки ячеек.
Параметры
area | the GtkCellArea где закончилось редактирование | |
renderer | the GtkCellRenderer который закончил редактирование | |
editable | the GtkCellEditable компонент для удаления | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 3.0
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkCellArea.html