GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
GtkCellRendererGtkCellRenderer Объект представляющий единственную ячейку в 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, соответственно.
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 |
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 |
Ячейка может редактироваться или изменяться каким либо другим способом. |
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 : |
|
widget : |
Представляемый виджет |
cell_area : |
Размещаемая площадь ячеек, или NULL |
x_offset : |
x смещение ячейки относительно cell_area, или NULL |
y_offset : |
y смещение ячейки относительно cell_area, или NULL |
width : |
Ширина необходимая для представления ячейки, или NULL |
height : |
Высота необходимая для представления ячейки, или NULL |
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 : |
|
window : |
GdkDrawable для отрисовки |
widget : |
Виджет принадлежащий window |
background_area : |
Область вмещающая ячейки (включая расширители дерева и может быть дополнения) |
cell_area : |
Площадь обычно представляемая ячейкой представления |
expose_area : |
Область фактически нуждающаяся в обновлении |
flags : |
Флаги влияющие на представление |
gboolean gtk_cell_renderer_activate (GtkCellRenderer *cell,
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
GdkRectangle *background_area,
GdkRectangle *cell_area,
GtkCellRendererState flags);
Помещает активизирующее событие в ячейку представления для возможной обработки. Некоторые ячейки представления могут использовать события; например, GtkCellRendererToggle переключается когда на нем щелкают мышью.
cell : |
|
event : |
|
widget : |
Виджет получающий событие |
path : |
Виджет-зависимая строка представляющая размещение события; например для GtkTreeView, строка представляет GtkTreePath |
background_area : |
Фоновая область как помещаемая в gtk_cell_renderer_render |
cell_area : |
Область ячейки как помещаемая в gtk_cell_renderer_render |
flags : |
Флаги представления |
Возвращает: |
TRUE если событие употреблялось/обработано |
GtkCellEditable* gtk_cell_renderer_start_editing
(GtkCellRenderer *cell,
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
GdkRectangle *background_area,
GdkRectangle *cell_area,
GtkCellRendererState flags);
Помещает активизирующее событие в ячейку представления для возможной обработки.
cell : |
|
event : |
|
widget : |
Виджет получающий событие |
path : |
Виджет-зависимая строка представляющая размещение события; например для GtkTreeView, строка представляет GtkTreePath |
background_area : |
Фоновая область как помещаемая в gtk_cell_renderer_render |
cell_area : |
Область ячейки как помещаемая в gtk_cell_renderer_render |
flags : |
Флаги представления |
Возвращает: |
Новый GtkCellEditable, или NULL |
void gtk_cell_renderer_editing_canceled
(GtkCellRenderer *cell);
gtk_cell_renderer_editing_canceled устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте gtk_cell_renderer_stop_editing().
Заставляет ячейку представления издавать сигнал "editing-canceled". Эта функция используется только для реализации ячейкой представления уведомления клиентской программы о том, что процесс редактирования был прекращён и изменения не были сделаны.
cell : |
Начиная с версии 2.4
void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell,
gboolean canceled);
Информирует ячейку представления о прекращении редактирования. Если canceled равен TRUE, ячейка представления издаст сигнал "editing-canceled". Эта функция должна вызываться ячейкой представления в ответ на сигнал "editing-done" объекта GtkCellEditable.
cell : |
|
canceled : |
TRUE если редактирование прекращено |
Начиная с версии 2.6
void gtk_cell_renderer_get_fixed_size
(GtkCellRenderer *cell,
gint *width,
gint *height);
Заполняет width и height соответствующим размером cell.
cell : |
|
width : |
Заполняется фиксированной шириной виджета, или NULL |
height : |
Заполняется фиксированной высотой виджета, или NULL |
void gtk_cell_renderer_set_fixed_size
(GtkCellRenderer *cell,
gint width,
gint height);
Устанавливает явный размер представления, независимо от установленных свойств.
cell : |
|
width : |
Ширина ячейки представления, или -1 |
height : |
Высота ячейки представления, или -1 |
"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 / Writex-выравнивание.
Допустимые значения: [0,1]
Значение по умолчанию: 0.5
Свойство "xpad"
"xpad" guint : Read / Writexpad.
Значение по умолчанию: 0
Свойство "yalign"
"yalign" gfloat : Read / Writey-выравнивание.
Допустимые значения: [0,1]
Значение по умолчанию: 0.5
Свойство "ypad"
"ypad" guint : Read / Writeypad.
Значение по умолчанию: 0
Детали сигналов
Сигнал "editing-canceled"
void user_function (GtkCellRenderer *renderer, gpointer user_data) : Run first
Этот сигнал издаётся когда пользователь прекращает процесс редактирования ячейки. Например, редактируемая ячейка представления должна быть записана для прекращения редактирования когда пользователь нажал Escape.
Смотрите также: gtk_cell_renderer_editing_canceled()
renderer : |
Объект получающий сигнал |
user_data : |
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
Начиная с версии 2.4
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 : |
|
path : |
Путь идентифицирующий редактируемую ячейку |
user_data : |
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
Начиная с версии 2.6
GtkCellRendererText,GtkCellRendererPixbuf,GtkCellRendererToggle