Spec-Zone.ru › GTK 3.24

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 вводит свойства ячейки для компонентов отображения ячеек очень похожим образом, как 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

the GObject на котором был вызван set_cell_property() или get_cell_property()

property_id

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

pspec

the GParamSpec свойства

gtk_cell_area_add ()

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

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

Параметры

area

a GtkCellArea

renderer

the GtkCellRenderer добавить в area

Since: 3.0

gtk_cell_area_remove ()

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

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

Параметры

area

a GtkCellArea

renderer

the GtkCellRenderer удалить из area

Since: 3.0

gtk_cell_area_has_renderer ()

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

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

Параметры

area

a GtkCellArea

renderer

the GtkCellRenderer проверить

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

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

Since: 3.0

gtk_cell_area_foreach ()

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

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

Параметры

area

a GtkCellArea

callback

the GtkCellCallback вызвать.

[scope call]

callback_data

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

Since: 3.0

gtk_cell_area_foreach_alloc ()

void
gtk_cell_area_foreach_alloc (GtkCellArea *area,
                             GtkCellAreaContext *context,
                             GtkWidget *widget,
                             const GdkRectangle *cell_area,
                             const GdkRectangle *background_area,
                             GtkCellAllocCallback callback,
                             gpointer callback_data);

Вызывает callback для каждого GtkCellRenderer в area с выделенной областью внутри cell_area.

Параметры

area

a GtkCellArea

context

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

widget

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

cell_area

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

background_area

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

callback

вызываемая функция GtkCellAllocCallback.

[scope call]

callback_data

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

Since: 3.0

gtk_cell_area_event ()

gint
gtk_cell_area_event (GtkCellArea *area,
                     GtkCellAreaContext *context,
                     GtkWidget *widget,
                     GdkEvent *event,
                     const GdkRectangle *cell_area,
                     GtkCellRendererState flags);

Делегирует обработку событий GtkCellArea.

Параметры

area

a GtkCellArea

context

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

widget

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

event

обрабатываемое событие GdkEvent

cell_area

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

flags

состояние 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

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

widget

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

cr

контекст отрисовки cairo_t

background_area

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

cell_area

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

flags

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

paint_focus

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

Since: 3.0

gtk_cell_area_get_cell_allocation ()

void
gtk_cell_area_get_cell_allocation (GtkCellArea *area,
                                   GtkCellAreaContext *context,
                                   GtkWidget *widget,
                                   GtkCellRenderer *renderer,
                                   const GdkRectangle *cell_area,
                                   GdkRectangle *allocation);

Определяет выделение renderer внутри area, если area будет отрисовано в cell_area.

Параметры

area

a GtkCellArea

context

контекст 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

a GtkCellArea

context

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

widget

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

cell_area

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

x

положение по оси x

y

положение по оси y

alloc_area

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

[out][allow-none]

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

the 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

a 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

a GtkCellArea

context

the GtkCellAreaContext для копирования

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

копия GtkCellAreaContext объекта context.

[transfer full]

С: 3.0

gtk_cell_area_get_request_mode ()

GtkSizeRequestMode
gtk_cell_area_get_request_mode (GtkCellArea *area);

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

Параметры

area

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

Параметры

area

a GtkCellArea

context

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

widget

the 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]

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

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

С: 3.0

gtk_cell_area_get_current_path_string ()

const gchar *
gtk_cell_area_get_current_path_string (GtkCellArea *area);

Получает строковое представление текущего GtkTreePath для текущей применённой GtkTreeIter. Эта информация неявно обновляется при вызове gtk_cell_area_apply_attributes() и может использоваться для взаимодействия с визуализаторами из подклассов GtkCellArea.

Параметры

area

объект GtkCellArea

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

Строковое представление текущего GtkTreePath для текущих применённых атрибутов к area. Эта строка принадлежит области и не должна освобождаться.

С: 3.0

gtk_cell_area_apply_attributes ()

void
gtk_cell_area_apply_attributes (GtkCellArea *area,
                                GtkTreeModel *tree_model,
                                GtkTreeIter *iter,
                                gboolean is_expander,
                                gboolean is_expanded);

Применяет подключённые атрибуты к визуализаторам в area, извлекая значения из tree_model.

Параметры

area

объект GtkCellArea

tree_model

модель GtkTreeModel для извлечения значений

iter

GtkTreeIter в 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

объект GtkCellArea

renderer

визуализатор GtkCellRenderer, для которого подключается атрибут

attribute

имя атрибута

column

столбец GtkTreeModel для извлечения значений атрибута

С: 3.0

gtk_cell_area_attribute_disconnect ()

void
gtk_cell_area_attribute_disconnect (GtkCellArea *area,
                                    GtkCellRenderer *renderer,
                                    const gchar *attribute);

Отключает attribute для renderer в area, так что атрибут больше не будет обновляться значениями из модели.

Параметры

area

объект GtkCellArea

renderer

визуализатор GtkCellRenderer, для которого отключается атрибут

attribute

имя атрибута

С: 3.0

gtk_cell_area_attribute_get_column ()

gint
gtk_cell_area_attribute_get_column (GtkCellArea *area,
                                    GtkCellRenderer *renderer,
                                    const gchar *attribute);

Возвращает столбец модели, к которому сопоставлен атрибут, или -1, если атрибут не сопоставлен.

Параметры

area

объект GtkCellArea

renderer

объект GtkCellRenderer

attribute

атрибут визуализатора

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

номер столбца модели, или -1

С: 3.14

gtk_cell_area_class_install_cell_property ()

void
gtk_cell_area_class_install_cell_property
                               (GtkCellAreaClass *aclass,
                                guint property_id,
                                GParamSpec *pspec);

Устанавливает свойство ячейки в классе области ячеек.

Параметры

aclass

класс GtkCellAreaClass

property_id

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

pspec

объект GParamSpec для свойства

С: 3.0

gtk_cell_area_class_find_cell_property ()

GParamSpec *
gtk_cell_area_class_find_cell_property
                               (GtkCellAreaClass *aclass,
                                const gchar *property_name);

Ищет свойство ячейки по имени в классе области ячеек.

Параметры

aclass

класс GtkCellAreaClass

property_name

имя свойства для поиска

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

объект GParamSpec свойства, или NULL если у aclass нет свойства с таким именем.

[transfer none]

С: 3.0

gtk_cell_area_class_list_cell_properties ()

GParamSpec **
gtk_cell_area_class_list_cell_properties
                               (GtkCellAreaClass *aclass,
                                guint *n_properties);

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

Параметры

aclass

класс GtkCellAreaClass

n_properties

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

[out]

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

новый массив GParamSpec* с нулевым завершением. Массив необходимо освободить с помощью g_free().

[array length=n_properties][transfer container]

С: 3.0

gtk_cell_area_add_with_properties ()

void
gtk_cell_area_add_with_properties (GtkCellArea *area,
                                   GtkCellRenderer *renderer,
                                   const gchar *first_prop_name,
                                   ...);

Добавляет renderer в area, одновременно задавая свойства ячейки. Подробнее см. gtk_cell_area_add() и gtk_cell_area_cell_set().

Параметры

area

объект GtkCellArea

renderer

объект GtkCellRenderer, который будет размещён внутри 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

объект GtkCellArea

renderer

объект 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

объект GtkCellArea

renderer

объект 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

объект GtkCellArea

renderer

объект 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

объект GtkCellArea

renderer

объект 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

объект GtkCellArea

renderer

объект 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

объект GtkCellArea

renderer

объект 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

the 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

the GtkDirectionType

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

TRUE если фокус останется внутри area в результате этого вызова.

С версии: 3.0

gtk_cell_area_set_focus_cell ()

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

Явно устанавливает текущую ячейку с фокусом на renderer .

Обычно вызывается реализациями GtkCellAreaClass.focus() или GtkCellAreaClass.event(), но также может использоваться для реализации функций, таких как gtk_tree_view_set_cursor_on_cell().

Параметры

area

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 in area для активации

event

the GdkEvent для активации ячейки

cell_area

the GdkRectangle in 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

объект GtkCellArea

canceled

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

С момента: 3.0

gtk_cell_area_inner_cell_area ()

void
gtk_cell_area_inner_cell_area (GtkCellArea *area,
                               GtkWidget *widget,
                               const GdkRectangle *cell_area,
                               GdkRectangle *inner_area);

Это вспомогательная функция для реализации GtkCellArea для получения внутренней области, где будет отрисован заданный GtkCellRenderer. Она удаляет любые отступы, добавленные ранее функцией gtk_cell_area_request_renderer().

Параметры

area

объект GtkCellArea

widget

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

cell_area

координаты 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

объект GtkCellArea

renderer

объект GtkCellRenderer для запроса размера

orientation

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

widget

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

for_size

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

minimum_size

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

[out][allow-none]

natural_size

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

[out][allow-none]

С момента: 3.0

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

Структура GtkCellArea

struct GtkCellArea;

Структура GtkCellAreaClass

struct GtkCellAreaClass {
  /* Basic methods */
  void               (* add)                             (GtkCellArea             *area,
                                                          GtkCellRenderer         *renderer);
  void               (* remove)                          (GtkCellArea             *area,
                                                          GtkCellRenderer         *renderer);
  void               (* foreach)                         (GtkCellArea             *area,
                                                          GtkCellCallback          callback,
                                                          gpointer                 callback_data);
  void               (* foreach_alloc)                   (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          const GdkRectangle      *cell_area,
                                                          const GdkRectangle      *background_area,
                                                          GtkCellAllocCallback     callback,
                                                          gpointer                 callback_data);
  gint               (* event)                           (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          GdkEvent                *event,
                                                          const GdkRectangle      *cell_area,
                                                          GtkCellRendererState     flags);
  void               (* render)                          (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          cairo_t                 *cr,
                                                          const GdkRectangle      *background_area,
                                                          const GdkRectangle      *cell_area,
                                                          GtkCellRendererState     flags,
                                                          gboolean                 paint_focus);
  void               (* apply_attributes)                (GtkCellArea             *area,
                                                          GtkTreeModel            *tree_model,
                                                          GtkTreeIter             *iter,
                                                          gboolean                 is_expander,
                                                          gboolean                 is_expanded);

  /* Geometry */
  GtkCellAreaContext *(* create_context)                 (GtkCellArea             *area);
  GtkCellAreaContext *(* copy_context)                   (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context);
  GtkSizeRequestMode (* get_request_mode)                (GtkCellArea             *area);
  void               (* get_preferred_width)             (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          gint                    *minimum_width,
                                                          gint                    *natural_width);
  void               (* get_preferred_height_for_width)  (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          gint                     width,
                                                          gint                    *minimum_height,
                                                          gint                    *natural_height);
  void               (* get_preferred_height)            (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          gint                    *minimum_height,
                                                          gint                    *natural_height);
  void               (* get_preferred_width_for_height)  (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          gint                     height,
                                                          gint                    *minimum_width,
                                                          gint                    *natural_width);

  /* Cell Properties */
  void               (* set_cell_property)               (GtkCellArea             *area,
                                                          GtkCellRenderer         *renderer,
                                                          guint                    property_id,
                                                          const GValue            *value,
                                                          GParamSpec              *pspec);
  void               (* get_cell_property)               (GtkCellArea             *area,
                                                          GtkCellRenderer         *renderer,
                                                          guint                    property_id,
                                                          GValue                  *value,
                                                          GParamSpec              *pspec);

  /* Focus */
  gboolean           (* focus)                           (GtkCellArea             *area,
                                                          GtkDirectionType         direction);
  gboolean           (* is_activatable)                  (GtkCellArea             *area);
  gboolean           (* activate)                        (GtkCellArea             *area,
                                                          GtkCellAreaContext      *context,
                                                          GtkWidget               *widget,
                                                          const GdkRectangle      *cell_area,
                                                          GtkCellRendererState     flags,
                                                          gboolean                 edit_only);
};

Члены

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().

Владелец: GtkCellArea

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

С версии: 3.0

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

  “edited-cell”              GtkCellRenderer *

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

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

Владелец: GtkCellArea

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

С версии: 3.0

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

  “focus-cell”               GtkCellRenderer *

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

Владелец: GtkCellArea

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

С версии: 3.0

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

Сигнал “add-editable”

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

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

Параметры

area

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

renderer

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

editable

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

cell_area

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

path

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

user_data

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

Флаги: Выполняется первым

С версии: 3.0

Сигнал “apply-attributes”

void
user_function (GtkCellArea  *area,
               GtkTreeModel *model,
               GtkTreeIter  *iter,
               gboolean      is_expander,
               gboolean      is_expanded,
               gpointer      user_data)

Этот сигнал генерируется всякий раз, когда применяются атрибуты к area из model

Параметры

area

the GtkCellArea к которому нужно применить атрибуты

model

the GtkTreeModel из которого нужно применить атрибуты

iter

the GtkTreeIter указывающий на строку, к которой нужно применить атрибуты

is_expander

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

is_expanded

отображается ли в представлении содержимое детей этой строки

user_data

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

Флаги: Выполняется первым

С версии: 3.0

Сигнал “focus-changed”

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

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

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

Параметры

area

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

renderer

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

path

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

user_data

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

Флаги: Выполняется первым

С версии: 3.0

Сигнал “remove-editable”

void
user_function (GtkCellArea     *area,
               GtkCellRenderer *renderer,
               GtkCellEditable *editable,
               gpointer         user_data)

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

Параметры

area

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

renderer

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

editable

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

user_data

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

Флаги: Выполняется первым

С версии: 3.0

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkCellArea.html

Spec-Zone.ru

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