Spec-Zone.ru › GTK 3.22

GtkCellArea

GtkCellArea — Абстрактный класс для выравнивания GtkCellRenderers

Функции

gboolean (*GtkCellCallback) ()
gboolean (*GtkCellAllocCallback) ()
#define GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID()
void gtk_cell_area_add ()
void gtk_cell_area_remove ()
gboolean gtk_cell_area_has_renderer ()
void gtk_cell_area_foreach ()
void gtk_cell_area_foreach_alloc ()
gint gtk_cell_area_event ()
void gtk_cell_area_render ()
void gtk_cell_area_get_cell_allocation ()
GtkCellRenderer * gtk_cell_area_get_cell_at_position ()
GtkCellAreaContext * gtk_cell_area_create_context ()
GtkCellAreaContext * gtk_cell_area_copy_context ()
GtkSizeRequestMode gtk_cell_area_get_request_mode ()
void gtk_cell_area_get_preferred_width ()
void gtk_cell_area_get_preferred_height_for_width ()
void gtk_cell_area_get_preferred_height ()
void gtk_cell_area_get_preferred_width_for_height ()
const gchar * gtk_cell_area_get_current_path_string ()
void gtk_cell_area_apply_attributes ()
void gtk_cell_area_attribute_connect ()
void gtk_cell_area_attribute_disconnect ()
gint gtk_cell_area_attribute_get_column ()
void gtk_cell_area_class_install_cell_property ()
GParamSpec * gtk_cell_area_class_find_cell_property ()
GParamSpec ** gtk_cell_area_class_list_cell_properties ()
void gtk_cell_area_add_with_properties ()
void gtk_cell_area_cell_set ()
void gtk_cell_area_cell_get ()
void gtk_cell_area_cell_set_valist ()
void gtk_cell_area_cell_get_valist ()
void gtk_cell_area_cell_set_property ()
void gtk_cell_area_cell_get_property ()
gboolean gtk_cell_area_is_activatable ()
gboolean gtk_cell_area_activate ()
gboolean gtk_cell_area_focus ()
void gtk_cell_area_set_focus_cell ()
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 вводит свойства ячеек для GtkCellRenderers очень похожим образом, как 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

область, выделенная для renderer внутри прямоугольника, предоставленного в gtk_cell_area_foreach_alloc().

cell_background

область фона для renderer внутри области фона, предоставленной в gtk_cell_area_foreach_alloc().

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

GObject, для которого был вызван set_cell_property() или get_cell_property()

property_id

числовой идентификатор свойства

pspec

GParamSpec свойства

gtk_cell_area_add ()

void
gtk_cell_area_add (GtkCellArea *area,
                   GtkCellRenderer *renderer);

Добавляет renderer в area с типовыми свойствами дочерней ячейки.

Параметры

area

GtkCellArea

renderer

GtkCellRenderer для добавления в area

С: 3.0

gtk_cell_area_remove ()

void
gtk_cell_area_remove (GtkCellArea *area,
                      GtkCellRenderer *renderer);

Удаляет renderer из area .

Параметры

area

GtkCellArea

renderer

GtkCellRenderer для удаления из area

С: 3.0

gtk_cell_area_has_renderer ()

gboolean
gtk_cell_area_has_renderer (GtkCellArea *area,
                            GtkCellRenderer *renderer);

Проверяет, содержит ли area renderer .

Параметры

area

GtkCellArea

renderer

GtkCellRenderer для проверки

Возвращаемое значение

TRUE, если renderer находится в area .

С: 3.0

gtk_cell_area_foreach ()

void
gtk_cell_area_foreach (GtkCellArea *area,
                       GtkCellCallback callback,
                       gpointer callback_data);

Вызывает callback для каждого GtkCellRenderer в area .

Параметры

area

GtkCellArea

callback

обратная функция GtkCellCallback для вызова.

[scope call]

callback_data

указатель на данные, предоставленные пользователем

С: 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

a GtkCellArea

context

the GtkCellAreaContext для этой строки данных.

widget

the GtkWidget, на который area отрисовывает

cell_area

the widget относительные координаты и размер для area

background_area

the widget относительные координаты области фона

callback

the 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

a GtkCellArea

context

the GtkCellAreaContext для этой строки данных.

widget

the GtkWidget, на который area отрисовывает

event

the GdkEvent для обработки

cell_area

the widget относительные координаты для area

flags

the GtkCellRendererState для area в этой строке.

Возвращает

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

a GtkCellArea

context

the GtkCellAreaContext для этой строки данных.

widget

the GtkWidget, на который area отрисовывает

cr

the cairo_t для отрисовки

background_area

the widget относительные координаты фона area

cell_area

the widget относительные координаты для area

flags

the GtkCellRendererState для area в этой строке.

paint_focus

whether area должен ли отрисовывать фокус на выделенных ячейках для выделенных строк или нет.

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

a GtkCellArea

context

the GtkCellAreaContext используемый для хранения размеров для area .

widget

the GtkWidget на котором area отрисовывается

renderer

the GtkCellRenderer для получения выделения

cell_area

вся выделенная область для area в widget для этой строки

allocation

куда сохранить выделение для renderer .

[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

объект GtkCellArea

context

контекст GtkCellAreaContext, используемый для хранения размеров area.

widget

объект GtkWidget, на котором area выполняет отрисовку

cell_area

вся область размещения area в widget для этой строки

x

координата x

y

координата y

alloc_area

место для хранения внутренней области размещения возвращённого GtkCellRenderer, или NULL.

[out][allow-none]

Возвращаемое значение

GtkCellRenderer по координатам x и y.

[transfer none]

С версии: 3.0

gtk_cell_area_create_context ()

GtkCellAreaContext *
gtk_cell_area_create_context (GtkCellArea *area);

Создаёт контекст GtkCellAreaContext, который будет использоваться с area для всех целей. GtkCellAreaContext хранит информацию о геометрии строк, для которых он был создан. Важно использовать один и тот же контекст для одной и той же строки данных в любое время (то есть необходимо выполнять отрисовку и обработку событий с тем же GtkCellAreaContext, который был использован для запроса размера этих строк данных).

Параметры

area

объект GtkCellArea

Возвращаемое значение

новый GtkCellAreaContext, который можно использовать с area.

[transfer full]

С версии: 3.0

gtk_cell_area_copy_context ()

GtkCellAreaContext *
gtk_cell_area_copy_context (GtkCellArea *area,
                            GtkCellAreaContext *context);

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

Например, GtkIconView создаёт все значки (строки) с одинаковой шириной и ячейки в них с одинаковым горизонтальным выравниванием. Однако каждая строка значков может иметь отдельный общий размер по высоте. GtkIconView использует это для запроса высот каждой строки на основе контекста, который уже был использован для запроса всех ширин строк, которые должны быть отображены.

Параметры

area

объект GtkCellArea

context

контекст GtkCellAreaContext для копирования

Возвращаемое значение

новый GtkCellAreaContext - копия context.

[transfer full]

С версии: 3.0

gtk_cell_area_get_request_mode ()

GtkSizeRequestMode
gtk_cell_area_get_request_mode (GtkCellArea *area);

Получает, предпочитает ли область макет высотой для ширины или шириной для высоты.

Параметры

area

объект GtkCellArea

Возвращаемое значение

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 по ходу; при запросе размеров по произвольному количеству строк, неважно проверять minimum_width и natural_width этого вызова, но нужно обратиться к gtk_cell_area_context_get_preferred_width() после серии запросов.

Параметры

area

объект GtkCellArea

context

контекст GtkCellAreaContext для выполнения этого запроса

widget

объект GtkWidget, где area будет выполнять отрисовку

minimum_width

место для хранения минимальной ширины, или NULL.

[out][allow-none]

natural_width

место для хранения естественной ширины, или NULL.

[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

объект GtkCellArea

context

контекст GtkCellAreaContext, для которого уже запрошены ширины.

widget

объект GtkWidget, на котором area будет отображаться

width

ширина, для которой необходимо проверить высоту этой области

minimum_height

место для хранения минимальной высоты или NULL.

[out][allow-none]

natural_height

место для хранения естественной высоты или NULL.

[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

объект GtkCellArea

context

контекст GtkCellAreaContext для выполнения этого запроса

widget

объект GtkWidget, на котором area будет отображаться

minimum_height

место для хранения минимальной высоты или NULL.

[out][allow-none]

natural_height

место для хранения естественной высоты или NULL.

[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

объект GtkCellArea

context

контекст GtkCellAreaContext, для которого уже запрошены ширины.

widget

объект GtkWidget, на котором area будет отображаться

height

высота, для которой необходимо проверить ширину этой области

minimum_width

место для хранения минимальной ширины или NULL.

[out][allow-none]

natural_width

место для хранения естественной ширины или NULL.

[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

a 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

a GtkCellArea

tree_model

the GtkTreeModel для получения значений

iter

the GtkTreeIter в tree_model, для которого применяются значения

is_expander

является ли iter родителем других элементов

is_expanded

расширен ли iter в представлении, и дочерние элементы видны

С: 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

a GtkCellArea

renderer

the 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

a GtkCellArea

renderer

the 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

a GtkCellArea

renderer

a 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

a GtkCellAreaClass

property_id

идентификатор свойства

pspec

the 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

a 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

a GtkCellAreaClass

n_properties

место для возврата количества найденных свойств ячейки.

[out]

Возвращает

новый выделенный массив NULL-завершённый массив 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

a GtkCellArea

renderer

a GtkCellRenderer для размещения внутри area

first_prop_name

имя первого свойства ячейки для задания

...

список свойств и значений, завершаемый NULL, начиная с 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

a GtkCellArea

renderer

a GtkCellRenderer, являющийся ячейкой внутри area

first_prop_name

имя первого свойства ячейки для задания

...

список имен и значений свойств, завершаемый NULL, начиная с 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

a GtkCellArea

renderer

a GtkCellRenderer, находящийся внутри area

first_prop_name

имя первого свойства ячейки для получения

...

место для возврата первого свойства, за которым могут следовать дополнительные пары имя/место возврата, завершаемые NULL

С: 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

a GtkCellArea

renderer

a GtkCellRenderer, находящийся внутри area

first_property_name

имя первого свойства ячейки для задания

var_args

список имен и значений свойств, завершаемый NULL, начиная с first_prop_name

С: 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

a GtkCellArea

renderer

a GtkCellRenderer внутри area

first_property_name

имя первого свойства для получения

var_args

место для возврата первого свойства, за которым могут следовать дополнительные пары имя/место возврата, завершаемые NULL

С: 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

a GtkCellArea

renderer

a GtkCellRenderer внутри area

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

a GtkCellArea

renderer

a GtkCellRenderer внутри area

property_name

имя свойства для получения

value

место для возврата значения

С момента: 3.0

gtk_cell_area_is_activatable ()

gboolean
gtk_cell_area_is_activatable (GtkCellArea *area);

Возвращает, может ли область выполнить какие-либо действия при активации после применения новых атрибутов к area .

Параметры

area

a GtkCellArea

Возвращает

может ли 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

a GtkCellArea

context

контекст GtkCellAreaContext в контексте текущих данных строки

widget

the GtkWidget, на котором area отрисовывает

cell_area

размер и расположение area относительно выделения widget

flags

флаги GtkCellRendererState для area для этой строки данных.

edit_only

если TRUE, то будут активированы только ячейки-рендереры, которые GTK_CELL_RENDERER_MODE_EDITABLE.

Возвращает

Была ли успешно активирована area.

С момента: 3.0

gtk_cell_area_focus ()

gboolean
gtk_cell_area_focus (GtkCellArea *area,
                     GtkDirectionType direction);

Должно вызываться владельцем area виджета макета, когда фокус должен быть передан area, или перемещен внутри area для заданных direction и данных строки.

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

Параметры

area

a GtkCellArea

direction

тип 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

a GtkCellArea

renderer

the GtkCellRenderer, которому нужно передать фокус

С момента: 3.0

gtk_cell_area_get_focus_cell ()

GtkCellRenderer *
gtk_cell_area_get_focus_cell (GtkCellArea *area);

Возвращает текущую ячейку с фокусом для area

Параметры

area

a GtkCellArea

Возвращает

текущую ячейку с фокусом в 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

a GtkCellArea

renderer

the GtkCellRenderer ожидающий фокуса

sibling

the GtkCellRenderer для добавления в область фокуса renderer

С: 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

a GtkCellArea

renderer

the GtkCellRenderer ожидающий фокуса

sibling

the GtkCellRenderer для удаления из области фокуса renderer

С: 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

a GtkCellArea

renderer

the GtkCellRenderer ожидающий фокуса

sibling

the GtkCellRenderer для проверки против списка соседей renderer

Возвращает

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

a GtkCellArea

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

a GtkCellArea

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

a GtkCellArea

Возвращает

Текущий редактируемый GtkCellRenderer.

[transfer none]

С: 3.0

gtk_cell_area_get_edit_widget ()

GtkCellEditable *
gtk_cell_area_get_edit_widget (GtkCellArea *area);

Возвращает GtkCellEditable виджет, который в данный момент используется для редактирования текущей ячейки.

Параметры

area

a GtkCellArea

Возвращает

Текущий активный GtkCellEditable виджет.

[transfer none]

С: 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

a GtkCellArea

widget

the GtkWidget, на который area отображается

renderer

the GtkCellRenderer в area, который требуется активировать

event

the GdkEvent for which cell activation should occur

cell_area

the GdkRectangle в widget, в координатах, относящихся к renderer, для текущей строки.

flags

the GtkCellRendererState for renderer

Возвращаемое значение

успешность активации ячейки

Since: 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

a GtkCellArea

canceled

было ли редактирование отменено.

Since: 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

a GtkCellArea

widget

the GtkWidget, на который area отображается

cell_area

the widget coordinates, relative to the containing area, where one of area’s cells is to be placed

inner_area

место для возвращения внутренней области ячейки.

[out]

Since: 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

a GtkCellArea

renderer

the GtkCellRenderer to request size for

orientation

the GtkOrientation in which to request size

widget

the GtkWidget, on which area is rendered

for_size

the allocation contextual size to request for, or -1 if the base request for the orientation is to be returned.

minimum_size

location to store the minimum size, or NULL.

[out][allow-none]

natural_size

location to store the natural size, or NULL.

[out][allow-none]

Since: 3.0

Типы и значения

struct GtkCellArea

struct GtkCellArea;

struct 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);
};

Члены

add ()

добавляет GtkCellRenderer в область.

remove ()

удаляет GtkCellRenderer из области.

foreach ()

вызывает функцию GtkCellCallback для каждого GtkCellRenderer в области с предоставленными пользовательскими данными до тех пор, пока обратный вызов не вернёт TRUE.

foreach_alloc ()

Вызывает функцию GtkCellAllocCallback для каждого GtkCellRenderer в области с выделенной областью для ячейки и предоставленными пользовательскими данными до тех пор, пока обратный вызов не вернёт TRUE.

event ()

Обрабатывает событие в области, обычно используется для активации ячейки в месте события для событий кнопок, но также может использоваться для общих событий GtkWidgets, нарисованных на области.

render ()

Фактически отрисовывает ячейки области в указанный прямоугольник, background_area должен быть правильно распределён по соответствующим областям фона ячеек.

apply_attributes ()

Применяет атрибуты ячейки к ячейкам. Это реализуется как сигнал и, как правило, подклассы GtkCellArea не нуждаются в его реализации, так как он обрабатывается базовым классом.

create_context ()

Создаёт и возвращает специфичный для класса GtkCellAreaContext для хранения данных о выравнивании и выделении ячеек для указанного класса GtkCellArea.

copy_context ()

Создаёт новый GtkCellAreaContext в том же состоянии, что и переданный context, с сохранёнными данными о выравнивании ячеек и выделениями.

get_request_mode ()

Это позволяет области сообщить её расположительному виджету, предпочитает ли она быть выделенной в режиме GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH или GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT.

get_preferred_width ()

Вычисляет минимальную и естественную ширину ячеек области с применёнными текущими атрибутами, учитывая особенности размещения указанного GtkCellArea. Хотя запросы выполняются по рядам, выравнивания и общие минимальные и естественные размеры должны храниться в соответствующем GtkCellAreaContext.

get_preferred_height_for_width ()

Вычисляет минимальную и естественную высоту области, если переданной context была бы выделена заданная ширина. При реализации этого виртуального метода можно предположить, что context уже сохранила выровненные ширины ячеек для каждой строки GtkTreeModel, для которой context будет выделена, так как эта информация была сохранена в момент вызова GtkCellAreaClass.get_preferred_width(). Этот виртуальный метод также должен сохранить все необходимые выравнивания высот ячеек на случай, если контексту будет выделена высота.

get_preferred_height ()

Вычисляет минимальную и естественную высоту ячеек области с применёнными текущими атрибутами. По сути, это то же самое, что и GtkCellAreaClass.get_preferred_width(), только для областей, которые запрашиваются в режиме GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT.

get_preferred_width_for_height ()

Вычисляет минимальную и естественную ширину области, если переданной context была бы выделена заданная высота. То же, что и GtkCellAreaClass.get_preferred_height_for_width(), только для обработки запросов в режиме GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT.

set_cell_property ()

Это должно быть реализовано для обработки изменений свойств ячеек-потомков для данного GtkCellRenderer, которые ранее были установлены на GtkCellAreaClass с помощью gtk_cell_area_class_install_cell_property().

get_cell_property ()

Это должно быть реализовано для отчёта о значениях свойств ячеек-потомков для заданного GtkCellRenderer-потомка.

focus ()

Этот виртуальный метод должен быть реализован для перемещения фокуса от ячейки к ячейке внутри GtkCellArea. GtkCellArea должен перемещать фокус от ячейки к ячейке внутри области и возвращать FALSE, если фокус логически покидает область, за исключением следующих случаев: Если область не содержит активируемых ячеек, вся область получает фокус. Фокус не должен быть передан ячейкам, которые являются фактически «фокус-сиблингами» других сиблингов ячеек (см. gtk_cell_area_get_focus_from_sibling()). Фокус устанавливается путём вызова gtk_cell_area_set_focus_cell().

is_activatable ()

Возвращает, может ли GtkCellArea реагировать на GtkCellAreaClass.activate(), обычно это не нужно реализовывать, так как базовый класс этим занимается, но может быть расширено, если GtkCellArea-подкласс может обрабатывать активацию другими способами, нежели активация его GtkCellRenderers.

activate ()

Этот метод вызывается, когда компонент размещения, отрисовывающий GtkCellArea, активирует ячейку с фокусом (см. gtk_cell_area_get_focus_cell()).

Подробное описание свойств

Свойство “edit-widget”

  “edit-widget”              GtkCellEditable *

Компонент, в данный момент редактирующий ячейку

Это свойство является только для чтения и изменяется только в результате вызова gtk_cell_area_activate_cell().

Флаги: Чтение

С версии: 3.0

Свойство “edited-cell”

  “edited-cell”              GtkCellRenderer *

Ячейка в области, которая в данный момент редактируется

Это свойство является только для чтения и изменяется только в результате вызова gtk_cell_area_activate_cell().

Флаги: Чтение

С версии: 3.0

Свойство “focus-cell”

  “focus-cell”               GtkCellRenderer *

Ячейка в области, которая в данный момент имеет фокус

Флаги: Чтение / Запись

С версии: 3.0

Подробное описание сигналов

Сигнал “add-editable”

void
user_function (GtkCellArea     *area,
               GtkCellRenderer *renderer,
               GtkCellEditable *editable,
               GdkRectangle    *cell_area,
               gchar           *path,
               gpointer         user_data)

Указывает на то, что началось редактирование renderer и что editable должно быть добавлено к собственному компоненту размещения ячеек в cell_area.

Параметры

area

the GtkCellArea, где началось редактирование

renderer

the GtkCellRenderer, который начал редактирование

editable

the GtkCellEditable компонент для добавления

cell_area

the GtkWidget относительные координаты GdkRectangle, куда editable должно быть добавлено

path

the GtkTreePath строка, для которой было инициировано это редактирование

user_data

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

Флаги: Run First

С версии: 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

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

Флаги: Run First

С версии: 3.0

Сигнал “focus-changed”

void
user_function (GtkCellArea     *area,
               GtkCellRenderer *renderer,
               gchar           *path,
               gpointer         user_data)

Указывает на то, что фокус изменился на этом area. Этот сигнал генерируется либо в результате обработки фокуса, либо обработки событий.

Возможна ситуация, когда сигнал генерируется даже если компонент с фокусом не изменился, это происходит, потому что фокус может перейти на тот же компонент в той же области ячейки для другой строки данных.

Параметры

area

the GtkCellArea, где изменился фокус

renderer

the GtkCellRenderer у которого есть фокус

path

текущая GtkTreePath строка, установленная для area

user_data

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

Флаги: Run First

С версии: 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

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

Флаги: Run First

С версии: 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.22/GtkCellArea.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API