краткое описание#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 gtkcellrendererstatetypedef 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; сообщает как ячейка должна быть представлена.
enum gtkcellrenderermodetypedef enum { gtk_cell_renderer_mode_inert, gtk_cell_renderer_mode_activatable, gtk_cell_renderer_mode_editable } gtkcellrenderermode; идентифицирует то, как пользователь может взаимодействовать со специальной ячейкой.
gtkcellrenderertypedef 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 свойства.
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 являющуюся обрезанным прямоугольником.
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 переключается когда на нем щелкают мышью.
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); помещает активизирующее событие в ячейку представления для возможной обработки.
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". эта функция используется только для реализации ячейкой представления уведомления клиентской программы о том, что процесс редактирования был прекращён и изменения не были сделаны.
начиная с версии 2.4 gtk_cell_renderer_stop_editing ()void gtk_cell_renderer_stop_editing (gtkcellrenderer *cell, gboolean canceled); информирует ячейку представления о прекращении редактирования. если canceled равен true, ячейка представления издаст сигнал "editing-canceled". эта функция должна вызываться ячейкой представления в ответ на сигнал "editing-done" объекта gtkcelleditable.
начиная с версии 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-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()
начиная с версии 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); } }
начиная с версии 2.6 смотрите такжеgtkcellrenderertext,gtkcellrendererpixbuf,gtkcellrenderertoggle |