Spec-Zone.ru › GTK 4.0

GtkBuildable

GtkBuildable — Интерфейс для объектов, которые могут быть построены с помощью GtkBuilder

Функции

const char * gtk_buildable_get_buildable_id ()
const char * gtk_buildable_parse_context_get_element ()
GPtrArray * gtk_buildable_parse_context_get_element_stack ()
void gtk_buildable_parse_context_get_position ()
gpointer gtk_buildable_parse_context_pop ()
void gtk_buildable_parse_context_push ()

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

GtkBuildable
struct GtkBuildableIface
struct GtkBuildableParser

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

    GInterface
    ╰── GtkBuildable

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

GtkBuildable требует GObject.

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

GtkBuildable реализован в GtkAboutDialog, GtkActionBar, GtkAnyFilter, GtkAppChooserButton, GtkAppChooserDialog, GtkAppChooserWidget, GtkApplicationWindow, GtkAspectFrame, GtkAssistant, GtkBox, GtkButton, GtkCalendar, GtkCellArea, GtkCellAreaBox, GtkCellView, GtkCenterBox, GtkCheckButton, GtkColorButton, GtkColorChooserDialog, GtkColorChooserWidget, GtkColumnView, GtkComboBox, GtkComboBoxText, GtkConstraintLayout, GtkDialog, GtkDragIcon, GtkDrawingArea, GtkDropDown, GtkEditableLabel, GtkEmojiChooser, GtkEntry, GtkEntryCompletion, GtkEveryFilter, GtkExpander, GtkFileChooserDialog, GtkFileChooserWidget, GtkFileFilter, GtkFixed, GtkFlowBox, GtkFlowBoxChild, GtkFontButton, GtkFontChooserDialog, GtkFontChooserWidget, GtkFrame, GtkGLArea, GtkGrid, GtkGridView, GtkHeaderBar, GtkIconView, GtkImage, GtkInfoBar, GtkLabel, GtkLevelBar, GtkLinkButton, GtkListBox, GtkListBoxRow, GtkListStore, GtkListView, GtkLockButton, GtkMediaControls, GtkMenuButton, GtkMessageDialog, GtkMultiFilter, GtkMultiSorter, GtkNotebook, GtkOverlay, GtkPageSetupUnixDialog, GtkPaned, GtkPasswordEntry, GtkPicture, GtkPopover, GtkPopoverMenu, GtkPopoverMenuBar, GtkPrintUnixDialog, GtkProgressBar, GtkRange, GtkRevealer, GtkScale, GtkScaleButton, GtkScrollbar, GtkScrolledWindow, GtkSearchBar, GtkSearchEntry, GtkSeparator, GtkShortcutController, GtkShortcutLabel, GtkShortcutsGroup, GtkShortcutsSection, GtkShortcutsShortcut, GtkShortcutsWindow, GtkSizeGroup, GtkSpinButton, GtkSpinner, GtkStack, GtkStackSidebar, GtkStackSwitcher, GtkStatusbar, GtkStringList, GtkSwitch, GtkText, GtkTextTagTable, GtkTextView, GtkToggleButton, GtkTreeExpander, GtkTreeStore, GtkTreeView, GtkTreeViewColumn, GtkVideo, GtkViewport, GtkVolumeButton, GtkWidget, GtkWindow, GtkWindowControls и GtkWindowHandle.

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

#include <gtk/gtk.h>

Описание

GtkBuildable позволяет объектам расширять и настраивать их десериализацию из описаний пользовательского интерфейса GtkBuilder. Интерфейс включает методы для задания имён и свойств объектов, разбора пользовательских тегов и построения дочерних объектов.

Интерфейс GtkBuildable реализуется всеми виджетами и многими не-виджетами, предоставляемыми GTK. Основным пользователем этого интерфейса является GtkBuilder. Приложениям практически не требуется вызывать эти функции напрямую.

Объект должен реализовывать этот интерфейс только в том случае, если ему нужно расширить формат GtkBuilder или выполнить какие-либо дополнительные действия во время десериализации.

Функции

gtk_buildable_get_buildable_id ()

const char *
gtk_buildable_get_buildable_id (GtkBuildable *buildable);

Получает идентификатор объекта buildable.

GtkBuilder устанавливает имя на основе определения пользовательского интерфейса GtkBuilder, используемого для построения объекта buildable.

Параметры

buildable

объект GtkBuildable

Возвращает

идентификатор, установленный с помощью gtk_buildable_set_buildable_id()

gtk_buildable_parse_context_get_element ()

const char *
gtk_buildable_parse_context_get_element
                               (GtkBuildableParseContext *context);

Возвращает имя текущего открытого элемента.

Если вызов происходит из обработчиков start_element или end_element, это вернёт имя элемента, переданное в эти функции. Для родительских элементов см. gtk_buildable_parse_context_get_element_stack().

Параметры

context

объект GtkBuildablParseContext

Возвращает

имя текущего открытого элемента или NULL.

[nullable]

gtk_buildable_parse_context_get_element_stack ()

GPtrArray *
gtk_buildable_parse_context_get_element_stack
                               (GtkBuildableParseContext *context);

Возвращает стек элементов из внутреннего состояния парсера.

Возвращаемый объект GPtrArray представляет собой массив строк, где последний элемент — это текущий открытый тег (как возвращает gtk_buildable_parse_context_get_element()), а предыдущий — его непосредственный родитель.

Эта функция предназначена для использования в обработчиках start_element и end_element, где gtk_buildable_parse_context_get_element() просто возвращает имя обрабатываемого элемента.

Параметры

context

объект GtkBuildableParseContext

Возвращает

стек элементов, который не следует изменять.

[transfer none][element-type utf8]

gtk_buildable_parse_context_get_position ()

void
gtk_buildable_parse_context_get_position
                               (GtkBuildableParseContext *context,
                                int *line_number,
                                int *char_number);

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

Параметры

context

объект GtkBuildableParseContext

line_number

место для возврата номера строки, или NULL.

[out][optional]

char_number

место для возврата номера символа в строке, или NULL.

[out][optional]

gtk_buildable_parse_context_pop ()

gpointer
gtk_buildable_parse_context_pop (GtkBuildableParseContext *context);

Завершает процесс временного перенаправления подпарсера.

Эта функция нужна для сбора пользовательских данных, выделенных соответствующим вызовом gtk_buildable_parse_context_push(). Она должна вызываться в обработчике end_element, соответствующем обработчику start_element, во время которого был вызван gtk_buildable_parse_context_push(). Не вызывайте эту функцию из обратного вызова об ошибке — user_data в этом случае передаётся непосредственно в обратный вызов.

Эта функция не предназначена для непосредственного вызова пользователями, заинтересованными в вызове подпарсеров. Она предназначена для использования самими подпарсерами для реализации интерфейса более высокого уровня.

Параметры

context

объект GtkBuildableParseContext

Возвращает

пользовательские данные, переданные в gtk_buildable_parse_context_push()

gtk_buildable_parse_context_push ()

void
gtk_buildable_parse_context_push (GtkBuildableParseContext *context,
                                  const GtkBuildableParser *parser,
                                  gpointer user_data);

Временно перенаправляет данные разметки на подпарсер.

Этот метод может быть вызван только из обработчика start_element GtkBuildableParser. Он должен быть сопоставлен с соответствующим вызовом gtk_buildable_parse_context_pop() в соответствующем обработчике end_element (за исключением случаев, когда парсер прерывается из-за ошибки).

Все теги, текст и другие данные между соответствующими тегами перенаправляются подпарсеру, указанному в parser. user_data используется в качестве пользовательских данных для этого парсера. user_data также передаётся в обратный вызов об ошибке в случае возникновения ошибки. Это включает ошибки, возникающие в подпарсерах подпарсера.

Обрабатывающий тег, соответствующий открывающему тегу, для которого был сделан этот вызов, обрабатывается предыдущим парсером (который получает свои собственные пользовательские данные), поэтому gtk_buildable_parse_context_pop() предоставляется для "последнего доступа" к user_data, переданному в эту функцию. В случае ошибки user_data, предоставленный здесь, передаётся напрямую в обратный вызов об ошибке подпарсера, и gtk_buildable_parse_context_pop() не следует вызывать. В любом случае, если user_data был выделен, его следует освободить в обоих местах.

Эта функция не предназначена для непосредственного вызова пользователями, заинтересованными в вызове подпарсеров. Она предназначена для использования самими подпарсерами для реализации интерфейса более высокого уровня.

Пример использования см. в g_markup_parse_context_push(), у которого такой же API.

Параметры

context

объект GtkBuildableParseContext

parser

объект GtkBuildableParser

user_data

пользовательские данные для передачи функциям GtkBuildableParser

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

GtkBuildable

typedef struct _GtkBuildable GtkBuildable;

struct GtkBuildableIface

struct GtkBuildableIface {
  GTypeInterface g_iface;

  /* virtual table */
  void          (* set_id)                 (GtkBuildable       *buildable,
                                            const char         *id);
  const char *  (* get_id)                 (GtkBuildable       *buildable);

  /**
   * GtkBuildableIface::add_child:
   * @buildable: a #GtkBuildable
   * @builder: a #GtkBuilder
   * @child: child to add
   * @type: (nullable): kind of child or %NULL
   *
   * Adds a child to @buildable. @type is an optional string
   * describing how the child should be added.
   */
  void          (* add_child)              (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            GObject            *child,
                                            const char         *type);
  void          (* set_buildable_property) (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            const char         *name,
                                            const GValue       *value);
  GObject *     (* construct_child)        (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            const char         *name);

  /**
   * GtkBuildableIface::custom_tag_start:
   * @buildable: a #GtkBuildable
   * @builder: a #GtkBuilder used to construct this object
   * @child: (nullable): child object or %NULL for non-child tags
   * @tagname: name of tag
   * @parser: (out): a #GtkBuildableParser to fill in
   * @data: (out): return location for user data that will be passed in
   *   to parser functions
   *
   * Called for each unknown element under `<child>`.
   *
   * Returns: %TRUE if an object has a custom implementation, %FALSE
   *   if it doesn't.
   */
  gboolean      (* custom_tag_start)       (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            GObject            *child,
                                            const char         *tagname,
                                            GtkBuildableParser *parser,
                                            gpointer           *data);
  /**
   * GtkBuildableIface::custom_tag_end:
   * @buildable: A #GtkBuildable
   * @builder: #GtkBuilder used to construct this object
   * @child: (nullable): child object or %NULL for non-child tags
   * @tagname: name of tag
   * @data: user data that will be passed in to parser functions
   *
   * Called at the end of each custom element handled by
   * the buildable.
   */
  void          (* custom_tag_end)         (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            GObject            *child,
                                            const char         *tagname,
                                            gpointer            data);
   /**
    * GtkBuildableIface::custom_finished:
    * @buildable: a #GtkBuildable
    * @builder: a #GtkBuilder
    * @child: (nullable): child object or %NULL for non-child tags
    * @tagname: the name of the tag
    * @data: user data created in custom_tag_start
    *
    * Similar to gtk_buildable_parser_finished() but is
    * called once for each custom tag handled by the @buildable.
    */
  void          (* custom_finished)        (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            GObject            *child,
                                            const char         *tagname,
                                            gpointer            data);
  void          (* parser_finished)        (GtkBuildable       *buildable,
                                            GtkBuilder         *builder);

  /**
   * GtkBuildableIface::get_internal_child:
   * @buildable: a #GtkBuildable
   * @builder: a #GtkBuilder
   * @childname: name of child
   *
   * Retrieves the internal child called @childname of the @buildable object.
   *
   * Returns: (transfer none): the internal child of the buildable object
   */
  GObject *     (* get_internal_child)     (GtkBuildable       *buildable,
                                            GtkBuilder         *builder,
                                            const char         *childname);
};

Интерфейс GtkBuildableIface содержит методы, необходимые для того, чтобы GtkBuilder мог создать объект из определения интерфейса в файле GtkBuilder.

Члены

set_id ()

Хранит атрибут id, заданный в определении интерфейса GtkBuilder. GtkWidget хранит имя как данные объекта. Реализуйте этот метод, если ваш объект имеет понятие «ID» и имеет смысл сопоставить атрибут XML id с ним.

get_id ()

Метод-получатель, соответствующий set_id. Реализуйте его, если вы реализовали set_id.

add_child ()

Добавляет дочерний элемент. Параметр type может быть использован для различения типа дочернего элемента. GtkWidget реализует это для добавления контроллеров событий в виджет, GtkNotebook использует type для различения меток страниц (типа "page-label") и обычных дочерних элементов.

set_buildable_property ()

Устанавливает свойство объекта buildable. Обычно нет необходимости реализовывать это, по умолчанию используется g_object_set_property(). GtkWindow реализует это, чтобы отложить отображение (т.е. установку свойства “visible”) до создания всего интерфейса.

construct_child ()

Создаёт дочерний элемент buildable, указанный как «конструктор» в определении интерфейса. Это может быть использовано для ссылки на виджет, созданный в теге <ui>, который находится вне обычной иерархии определения интерфейса GtkBuilder. Ссылка на созданный объект возвращается и становится собственностью вызывающего метода.

custom_tag_start ()

Реализуйте это, если buildable необходимо обработать содержимое под <child>. Для обработки элемента реализация должна заполнить parser и user_data и вернуть TRUE. GtkWidget реализует это для обработки атрибутов доступности, указанных в элементах <accessibility>. Обратите внимание, что user_data необходимо освободить в custom_tag_end или custom_finished.

custom_tag_end ()

Вызывается для закрывающего тега каждого настраиваемого элемента, который обрабатывается buildable (см. custom_tag_start).

custom_finished ()

Вызывается для каждого настраиваемого тега, обработанного buildable, когда builder завершает разбор (см. custom_tag_start).

parser_finished ()

Вызывается, когда builder завершает разбор определения интерфейса. Обычно нет необходимости реализовывать это, если вам не нужно выполнять специальные действия по очистке. GtkWindow устанавливает здесь свойство “visible”.

get_internal_child ()

Возвращает внутренний дочерний элемент buildable. GtkDialog реализует это, чтобы предоставить доступ к его vbox, что позволяет добавлять дочерние элементы в vbox в определении интерфейса. Реализуйте это, если buildable имеет внутренние дочерние элементы, к которым необходимо получить доступ из определения интерфейса.

struct GtkBuildableParser

struct GtkBuildableParser {
  /* Called for open tags <foo bar="baz"> */
  void (*start_element)  (GtkBuildableParseContext *context,
                          const char               *element_name,
                          const char              **attribute_names,
                          const char              **attribute_values,
                          gpointer                  user_data,
                          GError                  **error);

  /* Called for close tags </foo> */
  void (*end_element)    (GtkBuildableParseContext *context,
                          const char               *element_name,
                          gpointer                  user_data,
                          GError                  **error);

  /* Called for character data */
  /* text is not nul-terminated */
  void (*text)           (GtkBuildableParseContext *context,
                          const char               *text,
                          gsize                     text_len,
                          gpointer                  user_data,
                          GError                  **error);

  /* Called on error, including one set by other
   * methods in the vtable. The GError should not be freed.
   */
  void (*error)          (GtkBuildableParseContext *context,
                          GError                   *error,
                          gpointer                 user_data);
};

Подраздел-парсер для реализаций GtkBuildable.

Члены

start_element ()

Функция, вызываемая для открытых элементов

end_element ()

Функция, вызываемая для закрытых элементов

text ()

Функция, вызываемая для данных символов

error ()

Функция, вызываемая при ошибке

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkBuildable.html

Spec-Zone.ru

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