Spec-Zone.ru › GTK 3.20

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 Run First
void apply-attributes Run First
void focus-changed Run First
void remove-editable Run First

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

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

место для хранения внутренней выделенной области возвращаемого объекта cell renderer, или 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

a GtkCellArea

context

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

widget

the GtkWidget, где area будет отрисовываться

width

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

minimum_height

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

[out][allow-none]

natural_height

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

[out][allow-none]

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

a GtkCellArea

context

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

widget

the GtkWidget, где area будет отрисовываться

minimum_height

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

[out][allow-none]

natural_height

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

[out][allow-none]

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

a GtkCellArea

context

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

widget

the GtkWidget, где area будет отрисовываться

height

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

minimum_width

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

[out][allow-none]

natural_width

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

[out][allow-none]

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

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

...

a 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

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

...

a 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

a 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

виджет 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

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

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

Since: 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 ожидающий фокуса

Возвращает

A GList of GtkCellRenderers. The returned list is internal and should not be freed.

[element-type GtkCellRenderer][transfer none]

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

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

Since: 3.0

gtk_cell_area_get_edit_widget ()

GtkCellEditable *
gtk_cell_area_get_edit_widget (GtkCellArea *area);

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

Параметры

area

a GtkCellArea

Возвращает

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

[transfer none]

Since: 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 для которого должна произойти активация ячейки

cell_area

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

flags

the GtkCellRendererState для renderer

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

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

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

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

С: 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 that area is rendering onto

cell_area

the widget относительные координаты, где должна быть размещена одна из ячеек 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

a GtkCellArea

renderer

the GtkCellRenderer для запроса размера

orientation

the GtkOrientation для запроса размера

widget

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

for_size

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

minimum_size

место для хранения минимального размера, или NULL.

[out][allow-none]

natural_size

место для хранения естественного размера, или NULL.

[out][allow-none]

С: 3.0

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

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

Члены

add ()

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

remove ()

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

foreach ()

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

foreach_alloc ()

Вызывает функцию GtkCellAllocCallback для каждого GtkCellRenderer в области с выделенной областью для ячейки и предоставленными пользовательскими данными, пока callback не вернёт значение 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

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

renderer

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

editable

виджет GtkCellEditable для добавления

cell_area

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

path

строка 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

область GtkCellArea, к которой применяются атрибуты

model

модель GtkTreeModel, из которой применяются атрибуты

iter

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

область GtkCellArea, в которой фокус изменился

renderer

элемент 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

область GtkCellArea, в которой завершилось редактирование

renderer

элемент GtkCellRenderer, завершивший редактирование

editable

виджет 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.20/GtkCellArea.html

Spec-Zone.ru

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