Spec-Zone.ru › GTK 3.22

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

объект GtkCellLayout

cell

объект GtkCellRenderer

...

список атрибутов, завершающийся NULL

С версии: 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

объект GtkCellLayout

cell

объект GtkCellRenderer

attribute

атрибут рендерера

column

положение колонки в модели для получения атрибута

С версии: 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

объект GtkCellLayout

cell

объект GtkCellRenderer

func

функция GtkCellLayoutDataFunc для использования или NULL.

[allow-none]

func_data

пользовательские данные для func.

[closure]

destroy

уведомление о удалении для func_data

С версии: 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

объект GtkCellLayout

cell

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

С версии: 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.22/GtkCellLayout.html

Spec-Zone.ru

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