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 | место для возврата номера строки, или | [out][optional] |
char_number | место для возврата номера символа в строке, или | [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.
Члены
| Хранит атрибут id, заданный в определении интерфейса GtkBuilder. GtkWidget хранит имя как данные объекта. Реализуйте этот метод, если ваш объект имеет понятие «ID» и имеет смысл сопоставить атрибут XML id с ним. | |
| Метод-получатель, соответствующий | |
| Добавляет дочерний элемент. Параметр | |
| Устанавливает свойство объекта buildable. Обычно нет необходимости реализовывать это, по умолчанию используется | |
| Создаёт дочерний элемент buildable, указанный как «конструктор» в определении интерфейса. Это может быть использовано для ссылки на виджет, созданный в теге <ui>, который находится вне обычной иерархии определения интерфейса GtkBuilder. Ссылка на созданный объект возвращается и становится собственностью вызывающего метода. | |
| Реализуйте это, если buildable необходимо обработать содержимое под <child>. Для обработки элемента реализация должна заполнить | |
| Вызывается для закрывающего тега каждого настраиваемого элемента, который обрабатывается buildable (см. | |
| Вызывается для каждого настраиваемого тега, обработанного buildable, когда builder завершает разбор (см. | |
| Вызывается, когда builder завершает разбор определения интерфейса. Обычно нет необходимости реализовывать это, если вам не нужно выполнять специальные действия по очистке. GtkWindow устанавливает здесь свойство “visible”. | |
| Возвращает внутренний дочерний элемент buildable. GtkDialog реализует это, чтобы предоставить доступ к его |
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.
Члены
| Функция, вызываемая для открытых элементов | |
| Функция, вызываемая для закрытых элементов | |
| Функция, вызываемая для данных символов | |
| Функция, вызываемая при ошибке |
© 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