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 | объект GtkWidgetPath | |
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 | объект GtkWidgetPath |
Возвращает
копию path.
[transfer full]
С момента: 3.0
gtk_widget_path_ref ()
GtkWidgetPath *
gtk_widget_path_ref (GtkWidgetPath *path); Увеличивает счётчик ссылок на path.
Параметры
path | объект GtkWidgetPath |
Возвращает
сам path.
С момента: 3.2
gtk_widget_path_unref ()
void
gtk_widget_path_unref (GtkWidgetPath *path); Уменьшает счётчик ссылок на path, освобождая структуру, если счётчик ссылок достигнет 0.
Параметры
path | объект GtkWidgetPath |
С момента: 3.2
gtk_widget_path_free ()
void
gtk_widget_path_free (GtkWidgetPath *path); Уменьшает счётчик ссылок на path, освобождая структуру, если счётчик ссылок достигнет 0.
Параметры
path | объект GtkWidgetPath |
С момента: 3.0
gtk_widget_path_get_object_type ()
GType
gtk_widget_path_get_object_type (const GtkWidgetPath *path); Возвращает тип самого верхнего объекта, то есть тип объекта, представляемого этим путем.
Параметры
path | объект GtkWidget |
Возвращает
Тип объекта
С момента: 3.0
gtk_widget_path_has_parent ()
gboolean gtk_widget_path_has_parent (const GtkWidgetPath *path,GType type);
Возвращает TRUE, если какой-либо из родителей виджета, представленного в path, имеет тип type или любой его подтип.
Параметры
path | объект GtkWidgetPath | |
type | тип виджета для проверки в родителях |
Возвращает
TRUE, если какой-либо родитель имеет тип type
С момента: 3.0
gtk_widget_path_is_type ()
gboolean gtk_widget_path_is_type (const GtkWidgetPath *path,GType type);
Возвращает TRUE, если тип виджета, представленный этим путем, равен type или его подтипу.
Параметры
path | объект GtkWidgetPath | |
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 | объект GtkWidget | |
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 | объект GtkWidgetPath | |
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 | объект GtkWidget | |
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 | объект GtkWidgetPath | |
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 | объект GtkWidgetPath | |
pos | позиция для получения имени виджета, -1 для начала пути |
gtk_widget_path_iter_get_object_name ()
const char * gtk_widget_path_iter_get_object_name (const GtkWidgetPath *path,gint pos);
Возвращает имя объекта, находящегося в позиции pos в иерархии виджетов, определённой в path.
Параметры
path | объект GtkWidgetPath | |
pos | позиция для получения имени объекта, -1 для начала пути |
С момента: 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 | объект GtkWidgetPath | |
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 | объект GtkWidgetPath | |
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 | тип объекта для установки |
Since: 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 | флаги состояния |
Since: 3.14
gtk_widget_path_length ()
gint
gtk_widget_path_length (const GtkWidgetPath *path); Возвращает количество GtkWidget GTypes между представленным виджетом и его самым верхним контейнером.
Параметры
path |
Возвращает
количество элементов в пути
Since: 3.0
gtk_widget_path_new ()
GtkWidgetPath *
gtk_widget_path_new (void); Возвращает пустой путь виджета.
Since: 3.0
gtk_widget_path_prepend_type ()
void gtk_widget_path_prepend_type (GtkWidgetPath *path,GType type);
Добавляет тип виджета в начало иерархии виджетов, представленной path.
Параметры
path | ||
type | тип виджета для добавления в начало |
Since: 3.0
gtk_widget_path_to_string ()
char *
gtk_widget_path_to_string (const GtkWidgetPath *path); Преобразует путь виджета в строковое представление. Он пытается максимально точно воспроизвести стиль CSS (Обратите внимание, что могут быть пути, которые нельзя представить в CSS).
Основное использование этого кода — для отладки, чтобы вы могли g_print() путь или вывести его в сессии gdb.
Параметры
path | путь |
Возвращает
Новая строка, описывающая path .
Since: 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.22/gtk3-GtkWidgetPath.html