GtkWidgetPath
GtkWidgetPath — Абстракция пути виджета
Функции
| void | gtk_widget_path_iter_set_object_type () |
| void | gtk_widget_path_iter_set_state () |
| gint | gtk_widget_path_length () |
| GtkWidgetPath * | gtk_widget_path_new () |
| void | gtk_widget_path_prepend_type () |
| char * | gtk_widget_path_to_string () |
Типы и значения
Включения
#include <gtk/gtk.h>
Описание
GtkWidgetPath — это упакованный тип, представляющий иерархию виджетов от самого верхнего виджета, обычно верхнего уровня, до любого дочернего элемента. Эта абстракция пути к виджету используется в GtkStyleContext от имени реального виджета для запроса информации о стиле.
Если вы используете виджеты GTK+, вам, вероятно, не нужно будет использовать этот API напрямую, так как есть gtk_widget_get_path(), и контекст стиля, возвращаемый gtk_widget_get_style_context(), будет автоматически обновляться при изменениях иерархии виджетов.
Генерация пути к виджету, как правило, проста:
Определение кнопки внутри окна
Хотя может быть включена более сложная информация, например, имена виджетов или разные классы (свойство, которое может использоваться другими типами виджетов) и промежуточные области:
Определение первого виджета вкладки в книжке
Вся эта информация будет использована для сопоставления информации о стиле, которая применяется к описанному виджету.
Функции
gtk_widget_path_append_type ()
gint gtk_widget_path_append_type (GtkWidgetPath *path,GType type);
Добавляет тип виджета в иерархию виджетов, представленную path.
Параметры
path | ||
type | тип добавляемого виджета |
Возвращаемое значение
позиция, куда был вставлен элемент
С момента: 3.0
gtk_widget_path_append_with_siblings ()
gint gtk_widget_path_append_with_siblings (GtkWidgetPath *path,GtkWidgetPath *siblings,guint sibling_index);
Добавляет тип виджета со всеми его соседними братьями в иерархию виджетов, представленную path. Использование этой функции вместо gtk_widget_path_append_type() позволит CSS-темам использовать совпадения по соседним элементам в селекторах и применять псевдоклассы :nth-child(). В свою очередь, это потребует больше внимания при реализации виджетов, так как виджеты должны гарантировать вызов gtk_widget_reset_style() для всех задействованных виджетов при изменении пути siblings.
Параметры
path | путь к виджету, к которому добавляется элемент | |
siblings | путь к виджету, описывающий список соседей. Этот путь не должен содержать собственных соседей, и его нельзя изменять после добавления. | |
sibling_index | индекс в |
Возвращаемое значение
позиция, куда был вставлен элемент.
С момента: 3.2
gtk_widget_path_append_for_widget ()
gint gtk_widget_path_append_for_widget (GtkWidgetPath *path,GtkWidget *widget);
Добавляет данные из widget в иерархию виджетов, представленную path. Эта функция — это сокращение для добавления информации из widget в заданный path. Это включает установку имени или добавление стилистических классов из widget.
Параметры
path | путь к виджету | |
widget | виджет, который нужно добавить в путь к виджету |
Возвращаемое значение
позиция, куда были вставлены данные
С момента: 3.2
gtk_widget_path_copy ()
GtkWidgetPath *
gtk_widget_path_copy (const GtkWidgetPath *path); Возвращает копию path
Параметры
path |
Возвращаемое значение
копию path.
[передача полная]
С момента: 3.0
gtk_widget_path_ref ()
GtkWidgetPath *
gtk_widget_path_ref (GtkWidgetPath *path); Увеличивает счетчик ссылок на path.
Параметры
path |
Возвращаемое значение
path само по себе.
С момента: 3.2
gtk_widget_path_unref ()
void
gtk_widget_path_unref (GtkWidgetPath *path); Уменьшает счетчик ссылок на path, освобождая структуру, если счетчик ссылок достигает 0.
Параметры
path |
С момента: 3.2
gtk_widget_path_free ()
void
gtk_widget_path_free (GtkWidgetPath *path); Уменьшает счетчик ссылок на path, освобождая структуру, если счетчик ссылок достигает 0.
Параметры
path |
С момента: 3.0
gtk_widget_path_get_object_type ()
GType
gtk_widget_path_get_object_type (const GtkWidgetPath *path); Возвращает тип верхнего объекта, то есть тип объекта, который представляет данный путь.
Параметры
path |
Возвращаемое значение
Тип объекта
С момента: 3.0
gtk_widget_path_has_parent ()
gboolean gtk_widget_path_has_parent (const GtkWidgetPath *path,GType type);
Возвращает TRUE, если какой-либо из родителей виджета, представленного в path, имеет тип type или любой его подтип.
Параметры
path | ||
type | тип виджета для проверки у родителей |
Возвращаемое значение
TRUE, если какой-либо родитель имеет тип type
С момента: 3.0
gtk_widget_path_is_type ()
gboolean gtk_widget_path_is_type (const GtkWidgetPath *path,GType type);
Возвращает TRUE, если тип виджета, представленного этим путем, равен type или является его подтипом.
Параметры
path | ||
type | тип виджета для сопоставления |
Возвращаемое значение
TRUE, если виджет, представленный path, имеет тип type
С момента: 3.0
gtk_widget_path_iter_add_class ()
void gtk_widget_path_iter_add_class (GtkWidgetPath *path,gint pos,const gchar *name);
Добавляет класс name к виджету в позиции pos в иерархии, определённой в path . См. gtk_style_context_add_class().
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя класса |
С: 3.0
gtk_widget_path_iter_add_region ()
void gtk_widget_path_iter_add_region (GtkWidgetPath *path,gint pos,const gchar *name,GtkRegionFlags flags);
gtk_widget_path_iter_add_region устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
Добавляет область name к виджету в позиции pos в иерархии, определённой в path . См. gtk_style_context_add_region().
Имена областей должны содержать только строчные буквы и «-», всегда начинаться со строчной буквы.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя области | |
flags | флаги, влияющие на область |
С: 3.0
gtk_widget_path_iter_clear_classes ()
void gtk_widget_path_iter_clear_classes (GtkWidgetPath *path,gint pos);
Удаляет все классы из виджета в позиции pos в иерархии, определённой в path .
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути |
С: 3.0
gtk_widget_path_iter_clear_regions ()
void gtk_widget_path_iter_clear_regions (GtkWidgetPath *path,gint pos);
gtk_widget_path_iter_clear_regions устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
Удаляет все области из виджета в позиции pos в иерархии, определённой в path .
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути |
С: 3.0
gtk_widget_path_iter_get_name ()
const gchar * gtk_widget_path_iter_get_name (const GtkWidgetPath *path,gint pos);
Возвращает имя, соответствующее виджету в позиции pos в иерархии виджетов, определённой в path
Параметры
path | ||
pos | позиция для получения имени виджета, -1 для начала пути |
Возвращаемое значение
Имя виджета или NULL, если оно не было задано.
gtk_widget_path_iter_get_object_name ()
const char * gtk_widget_path_iter_get_object_name (const GtkWidgetPath *path,gint pos);
Возвращает имя объекта в позиции pos в иерархии виджетов, определённой в path .
Параметры
path | ||
pos | позиция для получения имени объекта, -1 для начала пути |
Возвращаемое значение
имя или NULL
С: 3.20
gtk_widget_path_iter_get_object_type ()
GType gtk_widget_path_iter_get_object_type (const GtkWidgetPath *path,gint pos);
Возвращает тип объекта GType в позиции pos в иерархии виджетов, определённой в path .
Параметры
path | ||
pos | позиция для получения типа объекта, -1 для начала пути |
Возвращаемое значение
тип виджета
С: 3.0
gtk_widget_path_iter_get_siblings ()
const GtkWidgetPath * gtk_widget_path_iter_get_siblings (const GtkWidgetPath *path,gint pos);
Возвращает список братьев для элемента в позиции pos . Если элемент не добавлялся с братьями, возвращается NULL.
Параметры
path | ||
pos | позиция для получения братьев, -1 для начала пути |
Возвращаемое значение
NULL или список братьев для элемента в позиции pos .
gtk_widget_path_iter_get_sibling_index ()
guint gtk_widget_path_iter_get_sibling_index (const GtkWidgetPath *path,gint pos);
Возвращает индекс в списке братьев для элемента в позиции pos, как возвращается функцией gtk_widget_path_iter_get_siblings(). Если эта функция вернёт NULL, потому что у элемента в позиции pos нет братьев, эта функция вернёт 0.
Параметры
path | ||
pos | позиция для получения индекса брата, -1 для начала пути |
Возвращаемое значение
0 или индекс в списке братьев для элемента в позиции pos .
gtk_widget_path_iter_get_state ()
GtkStateFlags gtk_widget_path_iter_get_state (const GtkWidgetPath *path,gint pos);
Возвращает флаги состояния виджета, расположенного в позиции pos в иерархии виджетов, определённой path.
Параметры
path | ||
pos | позиция для получения состояния, -1 для начала пути |
Возвращаемое значение
Флаги состояния
С: 3.14
gtk_widget_path_iter_has_class ()
gboolean gtk_widget_path_iter_has_class (const GtkWidgetPath *path,gint pos,const gchar *name);
Возвращает TRUE, если виджет в позиции pos имеет определённый класс name, и FALSE в противном случае.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
name | имя класса |
Возвращаемое значение
TRUE, если класс name определён для виджета в позиции pos
С: 3.0
gtk_widget_path_iter_has_name ()
gboolean gtk_widget_path_iter_has_name (const GtkWidgetPath *path,gint pos,const gchar *name);
Возвращает TRUE, если виджет в позиции pos имеет имя name, и FALSE в противном случае.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
name | имя виджета |
Возвращаемое значение
TRUE, если виджет в позиции pos имеет это имя
С: 3.0
gtk_widget_path_iter_has_qclass ()
gboolean gtk_widget_path_iter_has_qclass (const GtkWidgetPath *path,gint pos,GQuark qname);
См. gtk_widget_path_iter_has_class(). Это версия, которая работает с GQuarks.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
qname | имя класса как GQuark |
Возвращаемое значение
TRUE, если виджет в позиции pos имеет определённый класс.
С: 3.0
gtk_widget_path_iter_has_qname ()
gboolean gtk_widget_path_iter_has_qname (const GtkWidgetPath *path,gint pos,GQuark qname);
См. gtk_widget_path_iter_has_name(). Это версия, которая работает с GQuarks.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
qname | имя виджета как GQuark |
Возвращаемое значение
TRUE, если виджет в позиции pos имеет это имя
С: 3.0
gtk_widget_path_iter_has_qregion ()
gboolean gtk_widget_path_iter_has_qregion (const GtkWidgetPath *path,gint pos,GQuark qname,GtkRegionFlags *flags);
gtk_widget_path_iter_has_qregion устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
См. gtk_widget_path_iter_has_region(). Это версия, которая работает с GQuarks.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
qname | имя области как GQuark | |
flags | место для возврата флагов области. | [out] |
Возвращаемое значение
TRUE, если виджет в позиции pos имеет определённую область.
С: 3.0
gtk_widget_path_iter_has_region ()
gboolean gtk_widget_path_iter_has_region (const GtkWidgetPath *path,gint pos,const gchar *name,GtkRegionFlags *flags);
gtk_widget_path_iter_has_region устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
Возвращает TRUE, если виджет в позиции pos имеет определённый класс name, и FALSE в противном случае.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути | |
name | имя области | |
flags | место хранения флагов области. | [out] |
Возвращаемое значение
TRUE, если класс name определён для виджета в позиции pos
С: 3.0
gtk_widget_path_iter_list_classes ()
GSList * gtk_widget_path_iter_list_classes (const GtkWidgetPath *path,gint pos);
Возвращает список всех имён классов, определённых для виджета в позиции pos в иерархии, определённой в path.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути |
Возвращаемое значение
Список классов. Это список строк, содержимое списка GSList принадлежит GTK+, но вы должны использовать g_slist_free() для освобождения самого списка.
[transfer container][element-type utf8]
С: 3.0
gtk_widget_path_iter_list_regions ()
GSList * gtk_widget_path_iter_list_regions (const GtkWidgetPath *path,gint pos);
gtk_widget_path_iter_list_regions устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
Возвращает список всех имён областей, определённых для виджета в позиции pos в иерархии, определённой в path.
Параметры
path | ||
pos | позиция для запроса, -1 для начала пути |
Возвращаемое значение
Список областей. Это список строк, содержимое списка GSList принадлежит GTK+, но вы должны использовать g_slist_free() для освобождения самого списка.
[transfer container][element-type utf8]
С: 3.0
gtk_widget_path_iter_remove_class ()
void gtk_widget_path_iter_remove_class (GtkWidgetPath *path,gint pos,const gchar *name);
Удаляет класс name из виджета в позиции pos в иерархии, определённой в path.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя класса |
С: 3.0
gtk_widget_path_iter_remove_region ()
void gtk_widget_path_iter_remove_region (GtkWidgetPath *path,gint pos,const gchar *name);
gtk_widget_path_iter_remove_region устарело начиная с версии 3.14 и не должно использоваться в новом коде.
Использование областей устарело.
Удаляет область name из виджета в позиции pos в иерархии, определённой в path.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя области |
С: 3.0
gtk_widget_path_iter_set_name ()
void gtk_widget_path_iter_set_name (GtkWidgetPath *path,gint pos,const gchar *name);
Устанавливает имя виджета для виджета, найденного в позиции pos в иерархии виджетов, определённой path.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя виджета |
С: 3.0
gtk_widget_path_iter_set_object_name ()
void gtk_widget_path_iter_set_object_name (GtkWidgetPath *path,gint pos,const char *name);
Устанавливает имя объекта для заданной позиции в иерархии виджетов, определённой path.
При установке имя объекта переопределяет тип объекта при сопоставлении с CSS.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
name | имя объекта для установки или | [allow-none] |
С: 3.20
gtk_widget_path_iter_set_object_type ()
void gtk_widget_path_iter_set_object_type (GtkWidgetPath *path,gint pos,GType type);
Устанавливает тип объекта для заданной позиции в иерархии виджетов, определённой path.
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
type | тип объекта для установки |
С: 3.0
gtk_widget_path_iter_set_state ()
void gtk_widget_path_iter_set_state (GtkWidgetPath *path,gint pos,GtkStateFlags state);
Устанавливает имя виджета для виджета, расположенного по позиции pos в иерархии виджетов, определённой path.
Если вам нужно обновить только один флаг состояния, необходимо сделать это вручную, так как эта функция обновляет все флаги состояния.
Устанавливая флаг
Сбрасывание флага
{ GtkWidgetPath*path; path =gtk_widget_path_new(); gtk_widget_path_append_type(path, GTK_TYPE_WINDOW); gtk_widget_path_append_type(path, GTK_TYPE_BUTTON); }
Параметры
path | ||
pos | позиция для изменения, -1 для начала пути | |
state | флаги состояния |
С: 3.14
gtk_widget_path_length ()
gint
gtk_widget_path_length (const GtkWidgetPath *path); Возвращает количество GtkWidget GTypes между представленным виджетом и его контейнером верхнего уровня.
Параметры
path |
Возвращает
количество элементов в пути
С: 3.0
gtk_widget_path_new ()
GtkWidgetPath *
gtk_widget_path_new (void); Возвращает пустой путь виджета.
С: 3.0
gtk_widget_path_prepend_type ()
void gtk_widget_path_prepend_type (GtkWidgetPath *path,GType type);
Добавляет тип виджета в начало иерархии виджетов, представленной path.
Параметры
path | ||
type | тип виджета для добавления в начало |
С: 3.0
gtk_widget_path_to_string ()
char *
gtk_widget_path_to_string (const GtkWidgetPath *path); Выводит путь виджета в строковом представлении. Старается максимально точно соответствовать стилю CSS (Обратите внимание, что могут быть пути, которые невозможно представить в CSS).
Основное использование этого кода — для отладки, чтобы вы могли g_print() путь или вывести его в сессии gdb.
Параметры
path | путь |
Возвращает
Новую строку, описывающую path.
С: 3.2
Типы и Значения
GtkWidgetPath
typedef struct _GtkWidgetPath GtkWidgetPath;
См. также
© 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/gtk3-GtkWidgetPath.html