GtkWidgetPath
GtkWidgetPath — Абстракция пути виджета
Функции
| 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.
[передача полная]
С версии: 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 | ||
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, если оно не было задано.
[nullable]
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.
[nullable]
С версии: 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() для освобождения самого списка.
[перенос контейнера][тип-элемента 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() для освобождения самого списка.
[перенос контейнера][тип-элемента 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 | имя объекта для установки или | [разрешено-null] |
С: 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 | путь GtkWidgetPath |
Возвращаемое значение
количество элементов в пути
С: 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 | путь GtkWidgetPath | |
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.24/gtk3-GtkWidgetPath.html