Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Properties  |  Signals

GtkCellRenderer

GtkCellRenderer Объект представляющий единственную ячейку в GdkDrawable

Краткое описание

#include <gtk/gtk.h> enum GtkCellRendererState; enum GtkCellRendererMode; GtkCellRenderer; void gtk_cell_renderer_get_size (GtkCellRenderer *cell, GtkWidget *widget, GdkRectangle *cell_area, gint *x_offset, gint *y_offset, gint *width, gint *height); void gtk_cell_renderer_render (GtkCellRenderer *cell, GdkWindow *window, GtkWidget *widget, GdkRectangle *background_area, GdkRectangle *cell_area, GdkRectangle *expose_area, GtkCellRendererState flags); gboolean gtk_cell_renderer_activate (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, GtkCellRendererState flags); GtkCellEditable* gtk_cell_renderer_start_editing (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, GtkCellRendererState flags); void gtk_cell_renderer_editing_canceled (GtkCellRenderer *cell); void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell, gboolean canceled); void gtk_cell_renderer_get_fixed_size (GtkCellRenderer *cell, gint *width, gint *height); void gtk_cell_renderer_set_fixed_size (GtkCellRenderer *cell, gint width, gint height);

Иерархия объектов

GObject +----GInitiallyUnowned +----GtkObject +----GtkCellRenderer +----GtkCellRendererText +----GtkCellRendererPixbuf +----GtkCellRendererProgress +----GtkCellRendererToggle

Свойства

"cell-background" gchararray : Write "cell-background-gdk" GdkColor : Read / Write "cell-background-set" gboolean : Read / Write "height" gint : Read / Write "is-expanded" gboolean : Read / Write "is-expander" gboolean : Read / Write "mode" GtkCellRendererMode : Read / Write "sensitive" gboolean : Read / Write "visible" gboolean : Read / Write "width" gint : Read / Write "xalign" gfloat : Read / Write "xpad" guint : Read / Write "yalign" gfloat : Read / Write "ypad" guint : Read / Write

Сигналы

"editing-canceled" void user_function (GtkCellRenderer *renderer, gpointer user_data) : Run first "editing-started" void user_function (GtkCellRenderer *renderer, GtkCellEditable *editable, gchar *path, gpointer user_data) : Run first

Описание

GtkCellRenderer это основной класс ряда объектов используемых для представления ячейки в GdkDrawable. Эти объекты прежде всего используются виджетом GtkTreeView, хотя они не привязаны к нему никаким специальным способом. Стоит отметить что GtkCellRenderer это не GtkWidget и не может так же обрабатываться.

В основном GtkCellRenderer используется для отрисовки определенных графических элементов в GdkDrawable. Обычно, одна ячейка представления используется для отрисовки нескольких ячеек на экране. Для этого диапазона не ожидается что CellRenderer имеет любое постоянное состояние. Вместо этого, любое состояние устанавливается перед использованием, используя систему свойств GObjects. Потом ячейка измеряется используя gtk_cell_renderer_get_size(). А затем ячейка представляется в нужном расположении используя gtk_cell_renderer_render().

Есть множество правил которые должны соблюдаться при создании нового GtkCellRenderer. Первое и самое важное, определённый набор свойств будет всегда выдавать ячейку представления одинакового размера, запрещая изменения GtkStyle. GtkCellRenderer так же имеет множество основных свойств, которые, как ожидается, учитываются всеми дочерними элементами.

Вне простого представления ячейки, ячейка представления может опционально обеспечить активные элементы интерфейса пользователя. Ячейка представления может быть активируемой (activatable) как GtkCellRendererToggle, который переключается когда активизируется нажатием мышки, или может быть редактируемой (editable) как GtkCellRendererText, который позволяет пользователю редактировать текст используя GtkEntry. Для создания ячейки представления активируемой или редактируемой, вы должны реализовать виртуальные функции activate или start_editing, соответственно.

Детали

enum GtkCellRendererState

typedef enum { GTK_CELL_RENDERER_SELECTED = 1 << 0, GTK_CELL_RENDERER_PRELIT = 1 << 1, GTK_CELL_RENDERER_INSENSITIVE = 1 << 2, /* этот флаг означает что ячейка находится в столбец/строка */ GTK_CELL_RENDERER_SORTED = 1 << 3, GTK_CELL_RENDERER_FOCUSED = 1 << 4 } GtkCellRendererState;

Сообщает как ячейка должна быть представлена.

GTK_CELL_RENDERER_SELECTED

Ячейка выбранная в данный момент и вероятно имеющая цветовое выделение фона.

GTK_CELL_RENDERER_PRELIT

Указатель мышки находится над ячейкой.

GTK_CELL_RENDERER_INSENSITIVE

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

GTK_CELL_RENDERER_SORTED

Ячейка находится в сортируемой строке

GTK_CELL_RENDERER_FOCUSED


enum GtkCellRendererMode

typedef enum { GTK_CELL_RENDERER_MODE_INERT, GTK_CELL_RENDERER_MODE_ACTIVATABLE, GTK_CELL_RENDERER_MODE_EDITABLE } GtkCellRendererMode;

Идентифицирует то, как пользователь может взаимодействовать со специальной ячейкой.

GTK_CELL_RENDERER_MODE_INERT

Ячейка просто отображается и с ней нельзя взаимодействовать. Помните, это не означает например что отображаемая строка не может быть выделена просто специфичный элемент не может быть изменён отдельно.

GTK_CELL_RENDERER_MODE_ACTIVATABLE

Ячейка может быть нажата.

GTK_CELL_RENDERER_MODE_EDITABLE

Ячейка может редактироваться или изменяться каким либо другим способом.


GtkCellRenderer

typedef struct _GtkCellRenderer GtkCellRenderer;

gtk_cell_renderer_get_size ()

void gtk_cell_renderer_get_size (GtkCellRenderer *cell, GtkWidget *widget, GdkRectangle *cell_area, gint *x_offset, gint *y_offset, gint *width, gint *height);

Определяет ширину и высоту необходимую для представления ячейки. Используется виджетом просмотра для определения соответствующего размера для cell_area помещаемой в gtk_cell_renderer_render(). Если cell_area не NULL, поля x и y смещения (если установлены) ячейки относительны расположению. Пожалуйста помните, что значения установленные в width и height, так же как и x_offset и y_offset содержат xpad и ypad свойства.

cell :

GtkCellRenderer

widget :

Представляемый виджет

cell_area :

Размещаемая площадь ячеек, или NULL

x_offset :

x смещение ячейки относительно cell_area, или NULL

y_offset :

y смещение ячейки относительно cell_area, или NULL

width :

Ширина необходимая для представления ячейки, или NULL

height :

Высота необходимая для представления ячейки, или NULL


gtk_cell_renderer_render ()

void gtk_cell_renderer_render (GtkCellRenderer *cell, GdkWindow *window, GtkWidget *widget, GdkRectangle *background_area, GdkRectangle *cell_area, GdkRectangle *expose_area, GtkCellRendererState flags);

Вызывает виртуальное представление функции GtkCellRenderer. Три помещаемых прямоугольника являются областями window. Большинство представляемых будут отрисованы внутри cell_area; поля xalign, yalign, xpad и ypad объекта GtkCellRenderer должны быть учтены относительно cell_area. background_area включает интервалы вокруг ячейки, а так же область содержащую расширитель дерева; поэтому background_area прямоугольник для всех ячеек покрывающих всю область window. expose_area являющуюся обрезанным прямоугольником.

cell :

GtkCellRenderer

window :

GdkDrawable для отрисовки

widget :

Виджет принадлежащий window

background_area :

Область вмещающая ячейки (включая расширители дерева и может быть дополнения)

cell_area :

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

expose_area :

Область фактически нуждающаяся в обновлении

flags :

Флаги влияющие на представление


gtk_cell_renderer_activate ()

gboolean gtk_cell_renderer_activate (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, GtkCellRendererState flags);

Помещает активизирующее событие в ячейку представления для возможной обработки. Некоторые ячейки представления могут использовать события; например, GtkCellRendererToggle переключается когда на нем щелкают мышью.

cell :

GtkCellRenderer

event :

GdkEvent

widget :

Виджет получающий событие

path :

Виджет-зависимая строка представляющая размещение события; например для GtkTreeView, строка представляет GtkTreePath

background_area :

Фоновая область как помещаемая в gtk_cell_renderer_render

cell_area :

Область ячейки как помещаемая в gtk_cell_renderer_render

flags :

Флаги представления

Возвращает:

TRUE если событие употреблялось/обработано


gtk_cell_renderer_start_editing ()

GtkCellEditable* gtk_cell_renderer_start_editing (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, GtkCellRendererState flags);

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

cell :

GtkCellRenderer

event :

GdkEvent

widget :

Виджет получающий событие

path :

Виджет-зависимая строка представляющая размещение события; например для GtkTreeView, строка представляет GtkTreePath

background_area :

Фоновая область как помещаемая в gtk_cell_renderer_render

cell_area :

Область ячейки как помещаемая в gtk_cell_renderer_render

flags :

Флаги представления

Возвращает:

Новый GtkCellEditable, или NULL


gtk_cell_renderer_editing_canceled ()

void gtk_cell_renderer_editing_canceled (GtkCellRenderer *cell);

Внимание

gtk_cell_renderer_editing_canceled устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте gtk_cell_renderer_stop_editing().

Заставляет ячейку представления издавать сигнал "editing-canceled". Эта функция используется только для реализации ячейкой представления уведомления клиентской программы о том, что процесс редактирования был прекращён и изменения не были сделаны.

cell :

GtkCellRenderer

Начиная с версии 2.4


gtk_cell_renderer_stop_editing ()

void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell, gboolean canceled);

Информирует ячейку представления о прекращении редактирования. Если canceled равен TRUE, ячейка представления издаст сигнал "editing-canceled". Эта функция должна вызываться ячейкой представления в ответ на сигнал "editing-done" объекта GtkCellEditable.

cell :

GtkCellRenderer

canceled :

TRUE если редактирование прекращено

Начиная с версии 2.6


gtk_cell_renderer_get_fixed_size ()

void gtk_cell_renderer_get_fixed_size (GtkCellRenderer *cell, gint *width, gint *height);

Заполняет width и height соответствующим размером cell.

cell :

GtkCellRenderer

width :

Заполняется фиксированной шириной виджета, или NULL

height :

Заполняется фиксированной высотой виджета, или NULL


gtk_cell_renderer_set_fixed_size ()

void gtk_cell_renderer_set_fixed_size (GtkCellRenderer *cell, gint width, gint height);

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

cell :

GtkCellRenderer

width :

Ширина ячейки представления, или -1

height :

Высота ячейки представления, или -1

Детали свойств

Свойство "cell-background"

  "cell-background"      gchararray            : Write

Цвет фона ячейки представленный как строка.

Значение по умолчанию: NULL


Свойство "cell-background-gdk"

  "cell-background-gdk"  GdkColor              : Read / Write

Цвет фона ячейки как GdkColor.


Свойство "cell-background-set"

  "cell-background-set"  gboolean              : Read / Write

Влияет ли тег на цвет фона ячейки.

Значение по умолчанию: FALSE


Свойство "height"

  "height"               gint                  : Read / Write

Фиксированная высота.

Допустимые значения: >= -1

Значение по умолчанию: -1


Свойство "is-expanded"

  "is-expanded"          gboolean              : Read / Write

Строка расширителя и расширенная строка.

Значение по умолчанию: FALSE


Свойство "is-expander"

  "is-expander"          gboolean              : Read / Write

Строка имеет дочерние строки.

Значение по умолчанию: FALSE


Свойство "mode"

  "mode"                 GtkCellRendererMode   : Read / Write

Режим редактирования CellRenderer.

Значение по умолчанию: GTK_CELL_RENDERER_MODE_INERT


Свойство "sensitive"

  "sensitive"            gboolean              : Read / Write

Чувствительность отображаемой ячейки.

Значение по умолчанию: TRUE


Свойство "visible"

  "visible"              gboolean              : Read / Write

Видимость ячейки.

Значение по умолчанию: TRUE


Свойство "width"

  "width"                gint                  : Read / Write

Фиксированная ширина.

Допустимые значения: >= -1

Значение по умолчанию: -1


Свойство "xalign"

  "xalign"               gfloat                : Read / Write

x-выравнивание.

Допустимые значения: [0,1]

Значение по умолчанию: 0.5


Свойство "xpad"

  "xpad"                 guint                 : Read / Write

xpad.

Значение по умолчанию: 0


Свойство "yalign"

  "yalign"               gfloat                : Read / Write

y-выравнивание.

Допустимые значения: [0,1]

Значение по умолчанию: 0.5


Свойство "ypad"

  "ypad"                 guint                 : Read / Write

ypad.

Значение по умолчанию: 0

Детали сигналов

Сигнал "editing-canceled"

void user_function (GtkCellRenderer *renderer, gpointer user_data) : Run first

Этот сигнал издаётся когда пользователь прекращает процесс редактирования ячейки. Например, редактируемая ячейка представления должна быть записана для прекращения редактирования когда пользователь нажал Escape.

Смотрите также: gtk_cell_renderer_editing_canceled()

renderer :

Объект получающий сигнал

user_data :

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

Начиная с версии 2.4


Сигнал "editing-started"

void user_function (GtkCellRenderer *renderer, GtkCellEditable *editable, gchar *path, gpointer user_data) : Run first

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

Помните, что GTK+ не гарантирует что ячейка представления будет продолжать использовать тот же дочерний виджет для редактирования в будущих реализациях, поэтому вы должны проверять тип editable перед выполнением любых специфичных установок, как в следующем примере:

static void text_editing_started (GtkCellRenderer *cell, GtkCellEditable *editable, const gchar *path, gpointer data) { if (GTK_IS_ENTRY (editable)) { GtkEntry *entry = GTK_ENTRY (editable); /* ... создаём GtkEntryCompletion */ gtk_entry_set_completion (entry, completion); } }

renderer :

Объект получающий сигнал

editable :

GtkCellEditable

path :

Путь идентифицирующий редактируемую ячейку

user_data :

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

Начиная с версии 2.6

Смотрите также

GtkCellRendererText,GtkCellRendererPixbuf,GtkCellRendererToggle