GtkCellRenderer
GtkCellRenderer — Объект для отрисовки одной ячейки
Функции
Свойства
| gchar * | cell-background | Запись |
| GdkColor * | cell-background-gdk | Чтение/Запись |
| GdkRGBA * | cell-background-rgba | Чтение/Запись |
| gboolean | cell-background-set | Чтение/Запись |
| gboolean | редактирование | Чтение |
| gint | высота | Чтение/Запись |
| gboolean | расширено | Чтение/Запись |
| gboolean | расширитель | Чтение/Запись |
| GtkCellRendererMode | режим | Чтение/Запись |
| gboolean | чувствительность | Чтение/Запись |
| gboolean | видимость | Чтение/Запись |
| gint | ширина | Чтение/Запись |
| gfloat | xalign | Чтение/Запись |
| guint | xpad | Чтение/Запись |
| gfloat | yalign | Чтение/Запись |
| guint | ypad | Чтение/Запись |
Сигналы
Типы и значения
| перечисление | GtkCellRendererState |
| перечисление | GtkCellRendererMode |
| структура | GtkCellRenderer |
| структура | GtkCellRendererClass |
Иерархия объектов
GObject ╰── GInitiallyUnowned ╰── GtkCellRenderer ├── GtkCellRendererText ├── GtkCellRendererPixbuf ├── GtkCellRendererProgress ├── GtkCellRendererSpinner ╰── GtkCellRendererToggle
Включаемые файлы
#include <gtk/gtk.h>
Описание
Класс GtkCellRenderer — базовый класс набора объектов, используемых для отрисовки ячейки на cairo_t. Эти объекты в основном используются виджетом GtkTreeView, хотя они не связаны с ним каким-либо специфическим образом. Стоит отметить, что GtkCellRenderer не является GtkWidget и не может обрабатываться как таковой.
Основное назначение GtkCellRenderer — отрисовка определённых графических элементов на cairo_t. Обычно один объект рендерера ячейки используется для отрисовки многих ячеек на экране. В этом случае не ожидается, что рендерер ячейки сохраняет какое-либо постоянное состояние. Вместо этого любое состояние устанавливается непосредственно перед использованием с помощью системы свойств GObjects. Затем ячейка измеряется с помощью gtk_cell_renderer_get_size(). Наконец, ячейка отрисовывается в правильном месте с помощью gtk_cell_renderer_render().
При написании нового GtkCellRenderer необходимо соблюдать ряд правил. Прежде всего, важно, чтобы определённый набор свойств всегда давал рендерер ячейки одинакового размера, за исключением изменения GtkStyle. GtkCellRenderer также имеет ряд общих свойств, которые должны соблюдаться всеми потомками.
Помимо простой отрисовки ячейки, рендеры ячеек могут выборочно предоставлять активные элементы пользовательского интерфейса. Рендерер ячейки может быть «активируемым», как GtkCellRendererToggle, который переключается при активации щелчком мыши, или «редактируемым», как GtkCellRendererText, который позволяет пользователю редактировать текст с помощью GtkEntry. Чтобы сделать рендерер ячейки активируемым или редактируемым, необходимо реализовать виртуальные функции GtkCellRendererClass.activate или GtkCellRendererClass.start_editing соответственно.
Многие свойства GtkCellRenderer и его подклассов имеют соответствующее свойство «set», например, «cell-background-set» соответствует «cell-background». Эти свойства «set» отражают, установлено ли свойство или нет. Вы не должны устанавливать их независимо.
Функции
gtk_cell_renderer_class_set_accessible_type ()
void gtk_cell_renderer_class_set_accessible_type (GtkCellRendererClass *renderer_class,GType type);
Устанавливает тип, используемый для создания доступных объектов для ячеек, отрисовываемых обработчиками ячеек renderer_class. Обратите внимание, что будет создано несколько доступных объектов.
Эта функция должна вызываться только из функций инициализации класса обработчиков ячеек.
Параметры
renderer_class | класс, для которого устанавливается тип доступности | |
type | Тип объекта, реализующего доступность для |
gtk_cell_renderer_get_aligned_area ()
void gtk_cell_renderer_get_aligned_area (GtkCellRenderer *cell,GtkWidget *widget,GtkCellRendererState flags,const GdkRectangle *cell_area,GdkRectangle *aligned_area);
Возвращает выровненную область, используемую cell внутри cell_area. Используется для определения подходящей области редактирования и фокуса.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget , на котором будет отрисована ячейка | |
flags | флаги отрисовки | |
cell_area | область ячейки, которая передаётся в | |
aligned_area | место для возвращаемой области внутри | [out] |
С: 3.0
gtk_cell_renderer_get_size ()
void gtk_cell_renderer_get_size (GtkCellRenderer *cell,GtkWidget *widget,const GdkRectangle *cell_area,gint *x_offset,gint *y_offset,gint *width,gint *height);
gtk_cell_renderer_get_size устарел с версии 3.0 и не должен использоваться в новом коде.
Используйте gtk_cell_renderer_get_preferred_size() вместо этого.
Получает ширину и высоту, необходимые для отрисовки ячейки. Используется виджетами представления для определения подходящего размера для cell_area, передаваемого в gtk_cell_renderer_render(). Если cell_area не NULL, заполняет x и y смещения (если установлены) ячейки относительно этого местоположения.
Обратите внимание, что значения, установленные в width и height, а также в x_offset и y_offset, включают в себя свойства xpad и ypad.
Параметры
cell | ||
widget | виджет, в который рендерится ячейка | |
cell_area | область, выделенная для ячейки, или | [allow-none] |
x_offset | место для x смещения ячейки относительно | [out][allow-none] |
y_offset | место для y смещения ячейки относительно | [out][allow-none] |
width | место для ширины, необходимой для отрисовки ячейки, или | [out][allow-none] |
height | место для высоты, необходимой для отрисовки ячейки, или | [out][allow-none] |
gtk_cell_renderer_render ()
void gtk_cell_renderer_render (GtkCellRenderer *cell,cairo_t *cr,GtkWidget *widget,const GdkRectangle *background_area,const GdkRectangle *cell_area,GtkCellRendererState flags);
Вызывает виртуальную функцию отрисовки GtkCellRenderer. Три переданных прямоугольника представляют области в cr. Большинство обработчиков будут отрисовывать внутри cell_area; поля xalign, yalign, xpad и ypad обработчика GtkCellRenderer должны учитываться относительно cell_area. background_area включает пустое пространство вокруг ячейки, а также область, содержащую элемент расширения дерева; таким образом, прямоугольники background_area для всех ячеек выкладываются, чтобы покрыть всю window.
Параметры
cell | ||
cr | контекст cairo для отрисовки | |
widget | виджет, владеющий | |
background_area | вся область ячейки (включая элементы расширения дерева и, возможно, отступы по бокам) | |
cell_area | область, обычно отрисовываемая обработчиком ячеек | |
flags | флаги, влияющие на отрисовку |
gtk_cell_renderer_activate ()
gboolean gtk_cell_renderer_activate (GtkCellRenderer *cell,GdkEvent *event,GtkWidget *widget,const gchar *path,const GdkRectangle *background_area,const GdkRectangle *cell_area,GtkCellRendererState flags);
Передает событие активации в ячейку-рендерер для возможной обработки. Некоторые рендеры ячеек могут использовать события; например, GtkCellRendererToggle переключается при нажатии мыши.
Параметры
cell | ||
event | a GdkEvent | |
widget | виджет, получивший событие | |
path | зависимое от виджета строковое представление местоположения события; например, для GtkTreeView, строковое представление GtkTreePath | |
background_area | область фона, переданная в | |
cell_area | область ячейки, переданная в | |
flags | флаги рендера |
Возвращаемое значение
TRUE если событие было обработано/поглощено
gtk_cell_renderer_start_editing ()
GtkCellEditable * gtk_cell_renderer_start_editing (GtkCellRenderer *cell,GdkEvent *event,GtkWidget *widget,const gchar *path,const GdkRectangle *background_area,const GdkRectangle *cell_area,GtkCellRendererState flags);
Передает событие активации в рендер ячейки для возможной обработки.
Параметры
cell | ||
event | a GdkEvent | |
widget | виджет, получивший событие | |
path | зависимое от виджета строковое представление местоположения события; например, для GtkTreeView, строковое представление GtkTreePath | |
background_area | область фона, переданная в | |
cell_area | область ячейки, переданная в | |
flags | флаги рендера |
gtk_cell_renderer_stop_editing ()
void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell,gboolean canceled);
Сообщает рендеру ячейки, что редактирование остановлено. Если canceled равно TRUE, рендер ячейки отправит сигнал “editing-canceled”.
Эта функция должна вызываться реализациями рендеров ячеек в ответ на сигнал “editing-done” объекта GtkCellEditable.
Параметры
cell | ||
canceled |
|
С: 2.6
gtk_cell_renderer_get_fixed_size ()
void gtk_cell_renderer_get_fixed_size (GtkCellRenderer *cell,gint *width,gint *height);
Заполняет width и height соответствующим размером cell.
gtk_cell_renderer_set_fixed_size ()
void gtk_cell_renderer_set_fixed_size (GtkCellRenderer *cell,gint width,gint height);
Устанавливает размер рендера ячейки явным, независимым от установленных свойств.
Параметры
cell | ||
width | ширина рендера ячейки, или -1 | |
height | высота рендера ячейки, или -1 |
gtk_cell_renderer_get_visible ()
gboolean
gtk_cell_renderer_get_visible (GtkCellRenderer *cell); Возвращает видимость ячейки-рендера.
Параметры
cell |
Возвращаемое значение
TRUE если ячейка-рендер видима
С: 2.18
gtk_cell_renderer_set_visible ()
void gtk_cell_renderer_set_visible (GtkCellRenderer *cell,gboolean visible);
Устанавливает видимость ячейки-рендера.
Параметры
cell | ||
visible | видимость ячейки |
С: 2.18
gtk_cell_renderer_get_sensitive ()
gboolean
gtk_cell_renderer_get_sensitive (GtkCellRenderer *cell); Возвращает чувствительность ячейки-рендерера.
Параметры
cell |
Возвращает
TRUE, если ячейка-рендерер чувствительна
Since: 2.18
gtk_cell_renderer_set_sensitive ()
void gtk_cell_renderer_set_sensitive (GtkCellRenderer *cell,gboolean sensitive);
Устанавливает чувствительность ячейки-рендерера.
Параметры
cell | ||
sensitive | чувствительность ячейки |
Since: 2.18
gtk_cell_renderer_get_alignment ()
void gtk_cell_renderer_get_alignment (GtkCellRenderer *cell,gfloat *xalign,gfloat *yalign);
Заполняет xalign и yalign соответствующими значениями cell.
Параметры
Since: 2.18
gtk_cell_renderer_set_alignment ()
void gtk_cell_renderer_set_alignment (GtkCellRenderer *cell,gfloat xalign,gfloat yalign);
Устанавливает выравнивание рендерера в доступном пространстве.
Параметры
cell | ||
xalign | x-выравнивание ячейки-рендерера | |
yalign | y-выравнивание ячейки-рендерера |
Since: 2.18
gtk_cell_renderer_get_padding ()
void gtk_cell_renderer_get_padding (GtkCellRenderer *cell,gint *xpad,gint *ypad);
Заполняет xpad и ypad соответствующими значениями cell.
Параметры
Since: 2.18
gtk_cell_renderer_set_padding ()
void gtk_cell_renderer_set_padding (GtkCellRenderer *cell,gint xpad,gint ypad);
Устанавливает отступы рендерера.
Параметры
cell | ||
xpad | x-отступ ячейки-рендерера | |
ypad | y-отступ ячейки-рендерера |
Since: 2.18
gtk_cell-renderer-get-state ()
GtkStateFlags gtk_cell_renderer_get_state (GtkCellRenderer *cell,GtkWidget *widget,GtkCellRendererState cell_state);
Преобразует состояние ячейки-рендерера в GtkStateFlags на основе чувствительности ячейки-рендерера и виджета, а также заданного GtkCellRendererState.
Параметры
cell | a GtkCellRenderer или | |
widget | ||
cell_state | состояние ячейки-рендерера |
Возвращает
флаги состояния виджета, применяемые к cell
Since: 3.0
gtk_cell_renderer_is_activatable ()
gboolean
gtk_cell_renderer_is_activatable (GtkCellRenderer *cell); Проверяет, может ли ячейка-рендерер выполнить действие при активации.
Параметры
cell |
Возвращает
TRUE, если ячейка-рендерер может выполнить какое-либо действие при активации
Since: 3.0
gtk_cell_renderer_get_preferred_height ()
void gtk_cell_renderer_get_preferred_height (GtkCellRenderer *cell,GtkWidget *widget,gint *minimum_size,gint *natural_size);
Получает естественный размер отрисовки элемента в widget.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget, на котором будет выполняться отрисовка элемента | |
minimum_size | место для хранения минимального размера или | [out][allow-none] |
natural_size | место для хранения естественного размера или | [out][allow-none] |
С: 3.0
gtk_cell_renderer_get_preferred_height_for_width ()
void gtk_cell_renderer_get_preferred_height_for_width (GtkCellRenderer *cell,GtkWidget *widget,gint width,gint *minimum_height,gint *natural_height);
Получает минимальную и естественную высоту элемента отрисовки, если он был бы отрисован на widget с указанной width.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget, на котором будет выполняться отрисовка элемента | |
width | доступный размер для выделения | |
minimum_height | место для хранения минимального размера, или | [out][allow-none] |
natural_height | место для хранения предпочтительного размера, или | [out][allow-none] |
С: 3.0
gtk_cell_renderer_get_preferred_size ()
void gtk_cell_renderer_get_preferred_size (GtkCellRenderer *cell,GtkWidget *widget,GtkRequisition *minimum_size,GtkRequisition *natural_size);
Получает минимальный и естественный размер ячейки с учётом предпочтения виджета для управления высотой в зависимости от ширины.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget, на котором будет выполняться отрисовка элемента | |
minimum_size | место для хранения минимального размера, или | [out][allow-none] |
natural_size | место для хранения естественного размера, или | [out][allow-none] |
С: 3.0
gtk_cell_renderer_get_preferred_width ()
void gtk_cell_renderer_get_preferred_width (GtkCellRenderer *cell,GtkWidget *widget,gint *minimum_size,gint *natural_size);
Получает естественный размер отрисовки элемента в widget.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget, на котором будет выполняться отрисовка элемента | |
minimum_size | место для хранения минимального размера, или | [out][allow-none] |
natural_size | место для хранения естественного размера, или | [out][allow-none] |
С: 3.0
gtk_cell_renderer_get_preferred_width_for_height ()
void gtk_cell_renderer_get_preferred_width_for_height (GtkCellRenderer *cell,GtkWidget *widget,gint height,gint *minimum_width,gint *natural_width);
Получает минимальную и естественную ширину элемента отрисовки, если он был бы отрисован на widget с указанной height.
Параметры
cell | экземпляр GtkCellRenderer | |
widget | GtkWidget, на котором будет выполняться отрисовка элемента | |
height | доступный размер для выделения | |
minimum_width | место для хранения минимального размера, или | [out][allow-none] |
natural_width | место для хранения предпочтительного размера, или | [out][allow-none] |
С: 3.0
gtk_cell_renderer_get_request_mode ()
GtkSizeRequestMode
gtk_cell_renderer_get_request_mode (GtkCellRenderer *cell); Получает, предпочитает ли элемент отображения макет высотой для ширины или шириной для высоты.
Параметры
cell | экземпляр GtkCellRenderer |
Возвращаемое значение
GtkSizeRequestMode , предпочитаемый этим элементом отображения.
С: 3.0
Типы и значения
enum GtkCellRendererState
Указывает, как отображать ячейку.
Члены
GTK_CELL_RENDERER_SELECTED | Ячейка в настоящее время выбрана и, вероятно, имеет выделенный цвет фона для отображения. | |
GTK_CELL_RENDERER_PRELIT | Мышь наведена на ячейку. | |
GTK_CELL_RENDERER_INSENSITIVE | Ячейка отображается в неактивном режиме. | |
GTK_CELL_RENDERER_SORTED | Ячейка в отсортированной строке. | |
GTK_CELL_RENDERER_FOCUSED | Ячейка в строке фокуса. | |
GTK_CELL_RENDERER_EXPANDABLE | Ячейка в строке, которую можно развернуть. С версии 3.4 | |
GTK_CELL_RENDERER_EXPANDED | Ячейка в развернутой строке. С версии 3.4 |
enum GtkCellRendererMode
Определяет, как пользователь может взаимодействовать с конкретной ячейкой.
Члены
GTK_CELL_RENDERER_MODE_INERT | Ячейка предназначена только для отображения и с ней нельзя взаимодействовать. Обратите внимание, что это не означает, что строка, которая отображается, не может быть выбрана — просто отдельный элемент не может быть изменён. | |
GTK_CELL_RENDERER_MODE_ACTIVATABLE | На ячейку можно нажать. | |
GTK_CELL_RENDERER_MODE_EDITABLE | Ячейку можно редактировать или изменять другим способом. |
struct GtkCellRenderer
struct GtkCellRenderer;
struct GtkCellRendererClass
struct GtkCellRendererClass {
/* vtable - not signals */
GtkSizeRequestMode (* get_request_mode) (GtkCellRenderer *cell);
void (* get_preferred_width) (GtkCellRenderer *cell,
GtkWidget *widget,
gint *minimum_size,
gint *natural_size);
void (* get_preferred_height_for_width) (GtkCellRenderer *cell,
GtkWidget *widget,
gint width,
gint *minimum_height,
gint *natural_height);
void (* get_preferred_height) (GtkCellRenderer *cell,
GtkWidget *widget,
gint *minimum_size,
gint *natural_size);
void (* get_preferred_width_for_height) (GtkCellRenderer *cell,
GtkWidget *widget,
gint height,
gint *minimum_width,
gint *natural_width);
void (* get_aligned_area) (GtkCellRenderer *cell,
GtkWidget *widget,
GtkCellRendererState flags,
const GdkRectangle *cell_area,
GdkRectangle *aligned_area);
void (* get_size) (GtkCellRenderer *cell,
GtkWidget *widget,
const GdkRectangle *cell_area,
gint *x_offset,
gint *y_offset,
gint *width,
gint *height);
void (* render) (GtkCellRenderer *cell,
cairo_t *cr,
GtkWidget *widget,
const GdkRectangle *background_area,
const GdkRectangle *cell_area,
GtkCellRendererState flags);
gboolean (* activate) (GtkCellRenderer *cell,
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
const GdkRectangle *background_area,
const GdkRectangle *cell_area,
GtkCellRendererState flags);
GtkCellEditable * (* start_editing) (GtkCellRenderer *cell,
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
const GdkRectangle *background_area,
const GdkRectangle *cell_area,
GtkCellRendererState flags);
/* Signals */
void (* editing_canceled) (GtkCellRenderer *cell);
void (* editing_started) (GtkCellRenderer *cell,
GtkCellEditable *editable,
const gchar *path);
};
Члены
| Вызывается для получения информации о том, предпочитает ли элемент отображения макет высотой для ширины или шириной для высоты. | |
| Вызывается для получения естественной ширины элемента отображения. | |
| Вызывается для получения естественной высоты элемента отображения для заданной ширины. | |
| Вызывается для получения естественной высоты элемента отображения. | |
| Вызывается для получения естественной ширины элемента отображения для заданной высоты. | |
| Вызывается для получения выровненной области, используемой | |
| Вызывается для получения ширины и высоты, необходимых для отображения ячейки. Устарело: 3.0. | |
| Вызывается для отображения содержимого GtkCellRenderer. | |
| Вызывается для активации содержимого GtkCellRenderer. | |
| Вызывается для начала редактирования содержимого GtkCellRenderer. | |
| Сигнал генерируется, когда пользователь отменяет процесс редактирования ячейки. | |
| Сигнал генерируется, когда ячейка начинает редактироваться. |
Подробное описание свойств
Свойство “cell-background”
“cell-background” gchar *
Цвет фона ячейки в виде строки.
Флаги: Запись
Значение по умолчанию: NULL
Свойство “cell-background-gdk”
“cell-background-gdk” GdkColor *
Фон ячейки в виде GdkColor.
GtkCellRenderer:cell-background-gdk устарело с версии 3.4 и не должно использоваться в новом коде.
Используйте свойство «cell-background-rgba» вместо него.
Флаги: Чтение/Запись
Свойство “cell-background-rgba”
“cell-background-rgba” GdkRGBA *
Фон ячейки в виде GdkRGBA.
Флаги: Чтение/Запись
С версии: 3.0
Свойство “cell-background-set”
“cell-background-set” gboolean
Установлен ли цвет фона ячейки.
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “editing”
“editing” gboolean
Находится ли компонент ячейки в режиме редактирования.
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “height”
“height” gint
Фиксированная высота.
Флаги: Чтение/Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство “is-expanded”
“is-expanded” gboolean
Строка является строкой разворачивания и развернута.
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “is-expander”
“is-expander” gboolean
Строка имеет дочерние элементы.
Флаги: Чтение/Запись
Значение по умолчанию: FALSE
Свойство “mode”
“mode” GtkCellRendererMode
Режим редактирования CellRenderer.
Флаги: Чтение/Запись
Значение по умолчанию: GTK_CELL_RENDERER_MODE_INERT
Свойство “sensitive”
“sensitive” gboolean
Отображать ячейку активной.
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
Свойство “visible”
“visible” gboolean
Отображать ячейку.
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
Свойство “width”
“width” gint
Фиксированная ширина.
Флаги: Чтение/Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство “xalign”
“xalign” gfloat
Выравнивание по оси X.
Флаги: Чтение/Запись
Допустимые значения: [0,1]
Значение по умолчанию: 0.5
Свойство “yalign”
“yalign” gfloat
Выравнивание по оси Y.
Флаги: Чтение/Запись
Допустимые значения: [0,1]
Значение по умолчанию: 0.5
Подробное описание сигналов
Сигнал “editing-canceled”
void user_function (GtkCellRenderer *renderer, gpointer user_data)
Этот сигнал генерируется, когда пользователь отменяет процесс редактирования ячейки. Например, компонент ячейки редактирования может быть написан для отмены редактирования при нажатии клавиши Escape.
См. также: gtk_cell_renderer_stop_editing().
Параметры
renderer | объект, получивший сигнал | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 2.4
Сигнал “editing-started”
void user_function (GtkCellRenderer *renderer, GtkCellEditable *editable, gchar *path, gpointer user_data)
Этот сигнал генерируется, когда ячейка начинает редактироваться. Предполагается использовать этот сигнал для специальной настройки editable, например, добавления GtkEntryCompletion или настройки дополнительных столбцов в GtkComboBox.
Обратите внимание, что GTK+ не гарантирует, что компоненты ячеек будут продолжать использовать тот же виджет для редактирования в будущих выпусках, поэтому вы должны проверить тип editable перед выполнением какой-либо специфической настройки, как в следующем примере:
staticvoid text_editing_started(GtkCellRenderer*cell, GtkCellEditable*editable, constgchar*path, gpointer data) { if(GTK_IS_ENTRY(editable)) { GtkEntry*entry =GTK_ENTRY(editable); // ... create a GtkEntryCompletion gtk_entry_set_completion(entry, completion); } }
Параметры
renderer | объект, получивший сигнал | |
editable | элемент GtkCellEditable | |
path | путь, идентифицирующий редактируемую ячейку | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
С версии: 2.6
© 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/GtkCellRenderer.html