Spec-Zone.ru › GTK 3.20

GtkCellLayout

GtkCellLayout — Интерфейс для размещения ячеек

Функции

void (*GtkCellLayoutDataFunc) ()
void gtk_cell_layout_pack_start ()
void gtk_cell_layout_pack_end ()
GtkCellArea * gtk_cell_layout_get_area ()
GList * gtk_cell_layout_get_cells ()
void gtk_cell_layout_reorder ()
void gtk_cell_layout_clear ()
void gtk_cell_layout_set_attributes ()
void gtk_cell_layout_add_attribute ()
void gtk_cell_layout_set_cell_data_func ()
void gtk_cell_layout_clear_attributes ()

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

GtkCellLayout
struct GtkCellLayoutIface

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

    GInterface
    ╰── GtkCellLayout

Предварительные условия

GtkCellLayout требует GObject.

Известные реализации

GtkCellLayout реализован в GtkAppChooserButton, GtkCellArea, GtkCellAreaBox, GtkCellView, GtkComboBox, GtkComboBoxText, GtkEntryCompletion, GtkIconView и GtkTreeViewColumn.

Файлы заголовков

#include <gtk/gtk.h>

Описание

GtkCellLayout — интерфейс, который должны реализовывать все объекты, желающие предоставить API, подобный GtkTreeViewColumn, для размещения ячеек, настройки атрибутов и функций данных.

Одной из заметных особенностей реализаций GtkCellLayout являются атрибуты. Атрибуты позволяют изменять свойства гибкими способами. Они могут быть просто установлены в постоянные значения, как обычные свойства. Но они также могут быть сопоставлены со столбцом базовой модели дерева с помощью gtk_cell_layout_set_attributes(), что означает, что значение атрибута может изменяться от ячейки к ячейке по мере их отображения рендерером ячейки. Наконец, можно указать функцию с помощью gtk_cell_layout_set_cell_data_func(), которая вызывается для определения значения атрибута для каждой отображаемой ячейки.

GtkCellLayouts как GtkBuildable

Реализации GtkCellLayout, которые также реализуют интерфейс GtkBuildable (GtkCellView, GtkIconView, GtkComboBox, GtkEntryCompletion, GtkTreeViewColumn) принимают GtkCellRenderer-объекты как элементы <child> в определениях пользовательского интерфейса. Они поддерживают пользовательский элемент <attributes> для своих дочерних элементов, который может содержать несколько элементов <attribute>. Каждый элемент <attribute> имеет атрибут name, который указывает свойство рендерера ячейки; содержимое элемента — значение атрибута.

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

Кроме того, для реализаций GtkCellLayout, которые используют GtkCellArea для расположения ячеек (все GtkCellLayouts в GTK+ используют GtkCellArea), свойства ячеек также можно определить, указав пользовательский атрибут <cell-packing>, который может содержать несколько элементов <property>, определённых обычным способом.

Вот фрагмент определения пользовательского интерфейса, определяющий свойства ячейки:

Наследование реализаций GtkCellLayout

При наследовании виджета, реализующего GtkCellLayout, например, GtkIconView или GtkComboBox, следует учитывать тот факт, что эти виджеты внутри используют GtkCellArea. Область ячеек представлена как свойство только для чтения этими виджетами. Это означает, что, например, можно сделать

чтобы использовать пользовательскую область ячеек с комбинированным полем. Но свойства конструирования инициализируются только после выполнения функций экземпляра init() , что означает, что использование функций, которые полагаются на существование области ячеек в вашей функции подкласса init() , приведет к созданию области ячеек по умолчанию. В этом случае предоставленное значение свойства конструирования будет проигнорировано (с предупреждением, чтобы предупредить вас о проблеме).

<object class="GtkCellView">
  <child>
    <object class="GtkCellRendererText"/>
    <attributes>
      <attribute name="text">0</attribute>
    </attributes>
  </child>"
</object>

Если поддержка альтернативных областей ячеек с вашим производным виджетом не важна, то это не должно вас беспокоить. Если вы хотите поддержать альтернативные области ячеек, вы можете сделать это, вынеся проблемные вызовы из init() и в constructor() вашего класса.

Функции

GtkCellLayoutDataFunc ()

void
(*GtkCellLayoutDataFunc) (GtkCellLayout *cell_layout,
                          GtkCellRenderer *cell,
                          GtkTreeModel *tree_model,
                          GtkTreeIter *iter,
                          gpointer data);

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

Параметры

cell_layout

объект GtkCellLayout

cell

рендер ячейки, значение которого нужно установить

tree_model

модель

iter

объект GtkTreeIter, указывающий на строку, для которой нужно установить значение

data

данные пользователя, переданные в gtk_cell_layout_set_cell_data_func().

[closure]

gtk_cell_layout_pack_start ()

void
gtk_cell_layout_pack_start (GtkCellLayout *cell_layout,
                            GtkCellRenderer *cell,
                            gboolean expand);

Устанавливает cell в начало cell_layout. Если expand — FALSE, то cell выделяет только необходимое пространство. Любое неиспользованное пространство равномерно распределяется между ячейками, для которых expand — TRUE.

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

Параметры

cell_layout

объект GtkCellLayout

cell

объект GtkCellRenderer

expand

TRUE, если cell нужно выделить дополнительное пространство для cell_layout

С: 2.4

gtk_cell_layout_pack_end ()

void
gtk_cell_layout_pack_end (GtkCellLayout *cell_layout,
                          GtkCellRenderer *cell,
                          gboolean expand);

Добавляет cell в конец cell_layout. Если expand — FALSE, то cell выделяет только необходимое пространство. Любое неиспользованное пространство равномерно распределяется между ячейками, для которых expand — TRUE.

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

Параметры

cell_layout

объект GtkCellLayout

cell

объект GtkCellRenderer

expand

TRUE, если cell нужно выделить дополнительное пространство для cell_layout

С: 2.4

gtk_cell_layout_get_area ()

GtkCellArea *
gtk_cell_layout_get_area (GtkCellLayout *cell_layout);

Возвращает базовый GtkCellArea, который может быть cell_layout, если вызвана на GtkCellArea, или может быть NULL, если GtkCellArea не используется cell_layout.

Параметры

cell_layout

объект GtkCellLayout

Возвращает

область ячейки, используемую cell_layout, или NULL, если область ячейки не используется.

[transfer none][nullable]

С: 3.0

gtk_cell_layout_get_cells ()

GList *
gtk_cell_layout_get_cells (GtkCellLayout *cell_layout);

Возвращает рендеры ячеек, добавленные к cell_layout.

Параметры

cell_layout

объект GtkCellLayout

Возвращает

список рендеров ячеек. Список, но не рендеры, был выделен и должен быть освобожден с помощью g_list_free(), когда больше не нужен.

[element-type GtkCellRenderer][transfer container]

С: 2.12

gtk_cell_layout_reorder ()

void
gtk_cell_layout_reorder (GtkCellLayout *cell_layout,
                         GtkCellRenderer *cell,
                         gint position);

Переставляет cell на позицию position.

Обратите внимание, что cell уже должен быть упакован в cell_layout для правильной работы.

Параметры

cell_layout

объект GtkCellLayout

cell

объект GtkCellRenderer для перестановки

position

новая позиция для вставки cell

С: 2.4

gtk_cell_layout_clear ()

void
gtk_cell_layout_clear (GtkCellLayout *cell_layout);

Отменяет все сопоставления во всех рендерах ячеек в cell_layout и удаляет все рендеры из cell_layout.

Параметры

cell_layout

объект GtkCellLayout

С: 2.4

gtk_cell_layout_set_attributes ()

void
gtk_cell_layout_set_attributes (GtkCellLayout *cell_layout,
                                GtkCellRenderer *cell,
                                ...);

Устанавливает атрибуты из списка в качестве атрибутов cell_layout .

Атрибуты должны быть в порядке атрибут/колонка, как в gtk_cell_layout_add_attribute(). Все существующие атрибуты удаляются и заменяются новыми.

Параметры

cell_layout

a GtkCellLayout

cell

a GtkCellRenderer

...

a NULL-terminated list of attributes

Since: 2.4

gtk_cell_layout_add_attribute ()

void
gtk_cell_layout_add_attribute (GtkCellLayout *cell_layout,
                               GtkCellRenderer *cell,
                               const gchar *attribute,
                               gint column);

Добавляет отображение атрибута в список в cell_layout .

column — это колонка модели, из которой нужно получить значение, а attribute — параметр cell, который нужно установить из полученного значения. Например, если колонка 2 модели содержит строки, вы можете использовать атрибут «text» GtkCellRendererText, чтобы получать значения из колонки 2.

Параметры

cell_layout

a GtkCellLayout

cell

a GtkCellRenderer

attribute

an attribute on the renderer

column

the column position on the model to get the attribute from

Since: 2.4

gtk_cell_layout_set_cell_data_func ()

void
gtk_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout,
                                    GtkCellRenderer *cell,
                                    GtkCellLayoutDataFunc func,
                                    gpointer func_data,
                                    GDestroyNotify destroy);

Устанавливает GtkCellLayoutDataFunc для использования с cell_layout .

Эта функция используется вместо стандартного отображения атрибутов для установки значения столбца и должна устанавливать значение ячейки рендерера cell_layout соответствующим образом.

func может быть NULL, чтобы удалить ранее установленную функцию.

Параметры

cell_layout

a GtkCellLayout

cell

a GtkCellRenderer

func

the GtkCellLayoutDataFunc to use, or NULL.

[allow-none]

func_data

user data for func .

[closure]

destroy

destroy notify for func_data

Since: 2.4

gtk_cell_layout_clear_attributes ()

void
gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout,
                                  GtkCellRenderer *cell);

Очищает все существующие атрибуты, ранее установленные с помощью gtk_cell_layout_set_attributes().

Параметры

cell_layout

a GtkCellLayout

cell

a GtkCellRenderer to clear the attribute mapping on

Since: 2.4

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

GtkCellLayout

typedef struct _GtkCellLayout GtkCellLayout;

struct GtkCellLayoutIface

struct GtkCellLayoutIface {
  /* Virtual Table */
  void (* pack_start)         (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell,
                               gboolean               expand);
  void (* pack_end)           (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell,
                               gboolean               expand);
  void (* clear)              (GtkCellLayout         *cell_layout);
  void (* add_attribute)      (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell,
                               const gchar           *attribute,
                               gint                   column);
  void (* set_cell_data_func) (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell,
                               GtkCellLayoutDataFunc  func,
                               gpointer               func_data,
                               GDestroyNotify         destroy);
  void (* clear_attributes)   (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell);
  void (* reorder)            (GtkCellLayout         *cell_layout,
                               GtkCellRenderer       *cell,
                               gint                   position);
  GList* (* get_cells)        (GtkCellLayout         *cell_layout);

  GtkCellArea *(* get_area)   (GtkCellLayout         *cell_layout);
};

Члены

pack_start ()

Добавляет ячейку в начало cell_layout.

pack_end ()

Добавляет ячейку в конец cell_layout.

clear ()

Снимает все отображения атрибутов на всех рендерерах в cell_layout и удаляет все рендеры из cell_layout.

add_attribute ()

Добавляет отображение атрибута в список в cell_layout.

set_cell_data_func ()

Устанавливает GtkCellLayoutDataFunc для использования с cell_layout.

clear_attributes ()

Очищает все существующие атрибуты, ранее установленные с помощью gtk_cell_layout_set_attributes().

reorder ()

Переставляет ячейку на позицию.

get_cells ()

Возвращает рендеры ячеек, добавленные в cell_layout.

get_area ()

Возвращает базовый GtkCellArea, который может быть cell_layout, если вызвана для GtkCellArea, или может быть NULL, если cell_layout не использует GtkCellArea.

© 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/GtkCellLayout.html

Spec-Zone.ru

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