Spec-Zone.ru › GTK 4.0

GtkStyleContext

GtkStyleContext — Рендеринг UI-элементов

Функции

void gtk_style_context_add_provider ()
void gtk_style_context_add_provider_for_display ()
GdkDisplay * gtk_style_context_get_display ()
GtkStateFlags gtk_style_context_get_state ()
void gtk_style_context_get_color ()
void gtk_style_context_get_border ()
void gtk_style_context_get_padding ()
void gtk_style_context_get_margin ()
gboolean gtk_style_context_lookup_color ()
void gtk_style_context_remove_provider ()
void gtk_style_context_remove_provider_for_display ()
void gtk_style_context_restore ()
void gtk_style_context_save ()
void gtk_style_context_add_class ()
void gtk_style_context_remove_class ()
gboolean gtk_style_context_has-class ()
void gtk_style_context_set-display ()
void gtk_style-context_set-state ()
void gtk_style_context_set_scale ()
int gtk_style_context_get_scale ()
char * gtk_style_context_to-string ()
GtkBorder * gtk_border_new ()
GtkBorder * gtk_border_copy ()
void gtk_border_free ()
void gtk_render_arrow ()
void gtk_render_background ()
void gtk_render_check ()
void gtk_render_expander ()
void gtk_render_focus ()
void gtk_render_frame ()
void gtk_render_handle ()
void gtk_render_layout ()
void gtk_render_line ()
void gtk_render_option ()
void gtk_render_activity ()
void gtk_render_icon ()

Свойства

GdkDisplay * display Чтение / Запись

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

перечисление GtkBorderStyle
GtkStyleContext
перечисление GtkStyleContextPrintFlags
структура GtkBorder

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

    GObject
    ╰── GtkStyleContext

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

#include <gtk/gtk.h>

Описание

GtkStyleContext — это объект, хранящий информацию о стилях, влияющих на виджет.

Для построения окончательной информации о стиле GtkStyleContext запрашивает данные у всех подключенных GtkStyleProviders. Поставщики стилей могут быть подключены к контексту явно с помощью gtk_style_context_add_provider() или к дисплею с помощью gtk_style_context_add_provider_for_display(). Результирующий стиль представляет собой комбинацию данных всех поставщиков в порядке приоритета.

Для виджетов GTK любой GtkStyleContext, возвращённый функцией gtk_widget_get_style_context(), уже будет содержать установленные данные о GdkDisplay и информацию о направлении текста (RTL/LTR). Контекст стиля также будет автоматически обновляться, если какие-либо из этих настроек изменятся в виджете.

Классы стиля

Виджеты могут добавлять классы стиля в свой контекст, что позволяет связывать разные стили по классам. Документация по отдельным виджетам указывает, какие классы стиля они используют сами и какие классы стиля могут быть добавлены приложениями для изменения их внешнего вида.

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

Настройка стилей в UI-библиотеках и приложениях

Если вы разрабатываете библиотеку с пользовательскими GtkWidgets, которые отображаются по-другому, чем стандартные компоненты, вам может потребоваться добавить собственный GtkStyleProvider с приоритетом GTK_STYLE_PROVIDER_PRIORITY_FALLBACK, либо это будет GtkCssProvider, либо пользовательский объект, реализующий интерфейс GtkStyleProvider. Таким образом, темы по-прежнему могут попытаться стилизовать ваши UI-элементы по-разному, если это необходимо.

Если вы используете пользовательскую настройку стиля в приложении, вам, вероятно, нужно, чтобы ваша информация о стиле преобладала над стилем темы, поэтому вы должны использовать GtkStyleProvider с приоритетом GTK_STYLE_PROVIDER_PRIORITY_APPLICATION. Имейте в виду, что настройки пользователя в XDG_CONFIG_HOME/gtk-4.0/gtk.css всё ещё будут иметь приоритет над вашими изменениями, так как они используют приоритет GTK_STYLE_PROVIDER_PRIORITY_USER.

Функции

gtk_style_context_add_provider ()

void
gtk_style_context_add_provider (GtkStyleContext *context,
                                GtkStyleProvider *provider,
                                guint priority);

Добавляет поставщик стилей к context для использования в построении стиля. Обратите внимание, что поставщик стилей, добавленный этой функцией, влияет только на стиль виджета, к которому принадлежит context. Если вы хотите повлиять на стиль всех виджетов, используйте gtk_style_context_add_provider_for_display().

Примечание: если приоритеты совпадают, GtkStyleProvider, добавленный этой функцией, имеет приоритет над другим, добавленным через gtk_style_context_add_provider_for_display().

Параметры

context

объект GtkStyleContext

provider

объект GtkStyleProvider

priority

приоритет поставщика стилей. Чем он ниже, тем раньше он будет использован при построении стиля. Обычно он находится в диапазоне между GTK_STYLE_PROVIDER_PRIORITY_FALLBACK и GTK_STYLE_PROVIDER_PRIORITY_USER

gtk_style_context_add_provider_for_display ()

void
gtk_style_context_add_provider_for_display
                               (GdkDisplay *display,
                                GtkStyleProvider *provider,
                                guint priority);

Добавляет глобальный поставщик стилей к display, который будет использоваться в построении стиля для всех GtkStyleContext под display.

GTK использует это для предоставления информации о стиле из GtkSettings.

Примечание: если приоритеты совпадают, GtkStyleProvider, добавленный через gtk_style_context_add_provider(), имеет приоритет над другим, добавленным этой функцией.

Параметры

display

объект GdkDisplay

provider

объект GtkStyleProvider

priority

приоритет поставщика стилей. Чем он ниже, тем раньше он будет использован при построении стиля. Обычно он находится в диапазоне между GTK_STYLE_PROVIDER_PRIORITY_FALLBACK и GTK_STYLE_PROVIDER_PRIORITY_USER

gtk_style_context_get_display ()

GdkDisplay *
gtk_style_context_get_display (GtkStyleContext *context);

Возвращает GdkDisplay, к которому прикреплен context.

Параметры

context

объект GtkStyleContext

Возвращает

объект GdkDisplay.

[transfer none]

gtk_style_context_get_state ()

GtkStateFlags
gtk_style_context_get_state (GtkStyleContext *context);

Возвращает состояние, используемое для сопоставления стилей.

Этот метод следует использовать только для получения GtkStateFlags для передачи методам GtkStyleContext, таким как gtk_style_context_get_padding(). Если вам нужно получить текущее состояние GtkWidget, используйте gtk_widget_get_state_flags().

Параметры

context

объект GtkStyleContext

Возвращает

флаги состояния

gtk_style_context_get_color ()

void
gtk_style_context_get_color (GtkStyleContext *context,
                             GdkRGBA *color);

Получает цвет переднего плана для заданного состояния.

Параметры

context

объект GtkStyleContext

color

переменная для возвращаемого цвета переднего плана.

[out]

gtk_style_context_get_border ()

void
gtk_style_context_get_border (GtkStyleContext *context,
                              GtkBorder *border);

Получает границу для заданного состояния как GtkBorder.

Параметры

context

объект GtkStyleContext

border

переменная для возвращаемых настроек границы.

[out]

gtk_style_context_get_padding ()

void
gtk_style_context_get_padding (GtkStyleContext *context,
                               GtkBorder *padding);

Получает отступ для заданного состояния как GtkBorder.

Параметры

context

объект GtkStyleContext

padding

переменная для возвращаемых настроек отступа.

[out]

gtk_style_context_get_margin ()

void
gtk_style_context_get_margin (GtkStyleContext *context,
                              GtkBorder *margin);

Получает отступ для заданного состояния как GtkBorder.

Параметры

context

объект GtkStyleContext

margin

переменная для возвращаемых настроек отступа.

[out]

gtk_style_context_lookup_color ()

gboolean
gtk_style_context_lookup_color (GtkStyleContext *context,
                                const char *color_name,
                                GdkRGBA *color);

Ищет и разрешает имя цвета в карте цветов context.

Параметры

context

объект GtkStyleContext

color_name

имя цвета для поиска

color

Место для возвращаемого цвета.

[out]

Возвращает

TRUE если color_name был найден и разрешён, FALSE в противном случае

gtk_style_context_remove_provider ()

void
gtk_style_context_remove_provider (GtkStyleContext *context,
                                   GtkStyleProvider *provider);

Удаляет provider из списка поставщиков стилей в context.

Параметры

context

объект GtkStyleContext

provider

объект GtkStyleProvider

gtk_style_context_remove_provider_for_display ()

void
gtk_style_context_remove_provider_for_display
                               (GdkDisplay *display,
                                GtkStyleProvider *provider);

Удаляет provider из глобального списка поставщиков стилей в display.

Параметры

display

объект GdkDisplay

provider

объект GtkStyleProvider

gtk_style_context_restore ()

void
gtk_style_context_restore (GtkStyleContext *context);

Восстанавливает состояние context до предыдущей стадии. См. gtk_style_context_save().

Параметры

context

объект GtkStyleContext

gtk_style_context_save ()

void
gtk_style_context_save (GtkStyleContext *context);

Сохраняет состояние context, чтобы временные изменения, внесённые через gtk_style_context_add_class(), gtk_style_context_remove_class(), gtk_style_context_set_state() и т.п., можно было быстро откатить в один приём через gtk_style_context_restore().

Соответствующий вызов gtk_style_context_restore() должен быть выполнен до возвращения GTK в основной цикл.

Параметры

context

объект GtkStyleContext

gtk_style_context_add_class ()

void
gtk_style_context_add_class (GtkStyleContext *context,
                             const char *class_name);

Добавляет класс стиля к context, чтобы последующее использование контекста стиля использовало этот новый класс для форматирования.

В формате файлов CSS, GtkEntry с определением класса “search”, соотносился бы с:

В то время как любой виджет, определяющий класс “search”, соотносился бы с:

entry.search { ... }

Параметры

context

объект GtkStyleContext

class_name

имя класса для использования в форматировании

gtk_style_context_remove_class ()

void
gtk_style_context_remove_class (GtkStyleContext *context,
                                const char *class_name);

Удаляет class_name из context.

Параметры

context

объект GtkStyleContext

class_name

имя класса для удаления

gtk_style_context_has_class ()

gboolean
gtk_style_context_has_class (GtkStyleContext *context,
                             const char *class_name);

Возвращает TRUE, если context в данный момент определил заданное имя класса.

Параметры

context

объект GtkStyleContext

class_name

имя класса

Возвращает

TRUE, если context имеет class_name определённым

gtk_style_context_set_display ()

void
gtk_style_context_set_display (GtkStyleContext *context,
                               GdkDisplay *display);

Присоединяет context к указанному дисплею.

Дисплей используется для добавления информации о стиле из «глобальных» поставщиков стилей, таких как экземпляр GtkSettings дисплея.

Если вы используете GtkStyleContext, возвращённый gtk_widget_get_style_context(), вам не нужно вызывать это самим.

Параметры

context

объект GtkStyleContext

display

объект GdkDisplay

gtk_style_context_set_state ()

void
gtk_style_context_set_state (GtkStyleContext *context,
                             GtkStateFlags flags);

Устанавливает состояние для использования при сопоставлении стилей.

Параметры

context

объект GtkStyleContext

flags

состояние для представления

gtk_style_context_set_scale ()

void
gtk_style_context_set_scale (GtkStyleContext *context,
                             int scale);

Устанавливает масштаб для использования при получении ресурсов изображений для стиля.

Параметры

context

объект GtkStyleContext

scale

масштаб

gtk_style_context_get_scale ()

int
gtk_style_context_get_scale (GtkStyleContext *context);

Возвращает используемый масштаб для ресурсов.

Параметры

context

объект GtkStyleContext

Возвращает

масштаб

gtk_style_context_to_string ()

char *
gtk_style_context_to_string (GtkStyleContext *context,
                             GtkStyleContextPrintFlags flags);

Преобразует контекст стиля в строковое представление.

Строковое представление всегда включает информацию об имени, состоянии, идентификаторе, видимости и классах стиля узла CSS, который поддерживает context. В зависимости от флагов, может быть включена дополнительная информация.

Эта функция предназначена для тестирования и отладки реализации CSS в GTK. Нет гарантий относительно формата возвращаемой строки, она может изменяться.

Параметры

context

объект GtkStyleContext

flags

Флаги, определяющие что выводить

Возвращает

новую строку, представляющую context

gtk_border_new ()

GtkBorder *
gtk_border_new (void);

Выделяет новую GtkBorder и инициализирует её элементы нулём.

Возвращаемое значение

нововыделенная GtkBorder. Освободить с помощью gtk_border_free().

[transfer full]

gtk_border_copy ()

GtkBorder *
gtk_border_copy (const GtkBorder *border_);

Копирует GtkBorder.

Параметры

border_

a GtkBorder

Возвращаемое значение

копию border_ .

[transfer full]

gtk_border_free ()

void
gtk_border_free (GtkBorder *border_);

Освобождает GtkBorder.

Параметры

border_

a GtkBorder

gtk_render_arrow ()

void
gtk_render_arrow (GtkStyleContext *context,
                  cairo_t *cr,
                  double angle,
                  double x,
                  double y,
                  double size);

Отрисовывает стрелку, указывающую на angle .

Типичная отрисовка стрелки в 0, 1⁄2 π;, π; и 3⁄2 π:

Параметры

context

a GtkStyleContext

cr

a cairo_t

angle

угол стрелки от 0 до 2 * G_PI, где 0 — стрелка, указывающая на север

x

координата X начала области отрисовки

y

координата Y начала области отрисовки

size

сторона квадрата области отрисовки

gtk_render_background ()

void
gtk_render_background (GtkStyleContext *context,
                       cairo_t *cr,
                       double x,
                       double y,
                       double width,
                       double height);

Отрисовывает фон элемента.

Типичная отрисовка фона, демонстрирующая эффект background-image, border-width и border-radius.

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

координата X начала прямоугольника

y

координата Y начала прямоугольника

width

ширина прямоугольника

height

высота прямоугольника

gtk_render_check ()

void
gtk_render_check (GtkStyleContext *context,
                  cairo_t *cr,
                  double x,
                  double y,
                  double width,
                  double height);

Отрисовывает галочку (как в GtkCheckButton).

Состояние GTK_STATE_FLAG_CHECKED определяет, установлена ли галочка, а GTK_STATE_FLAG_INCONSISTENT — является ли она неопределённой.

Типичная отрисовка галочки:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

координата X начала прямоугольника

y

координата Y начала прямоугольника

width

ширина прямоугольника

height

высота прямоугольника

gtk_render_expander ()

void
gtk_render_expander (GtkStyleContext *context,
                     cairo_t *cr,
                     double x,
                     double y,
                     double width,
                     double height);

Отрисовывает раскрывающийся элемент (как в GtkTreeView и GtkExpander) в области, заданной x , y , width , height . Состояние GTK_STATE_FLAG_CHECKED определяет, свернут или развернут элемент.

Типичная отрисовка раскрывающегося элемента:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

координата X начала прямоугольника

y

координата Y начала прямоугольника

width

ширина прямоугольника

height

высота прямоугольника

gtk_render_focus ()

void
gtk_render_focus (GtkStyleContext *context,
                  cairo_t *cr,
                  double x,
                  double y,
                  double width,
                  double height);

Отрисовывает индикатор фокуса на прямоугольнике, заданном x , y , width , height .

Типичная отрисовка фокуса:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

координата X начала прямоугольника

y

координата Y начала прямоугольника

width

ширина прямоугольника

height

высота прямоугольника

gtk_render_frame ()

void
gtk_render_frame (GtkStyleContext *context,
                  cairo_t *cr,
                  double x,
                  double y,
                  double width,
                  double height);

Отображает рамку вокруг прямоугольника, определяемого x, y, width, height.

Примеры рендеринга рамки, демонстрирующие влияние border-image, border-color, border-width, border-radius и соединений:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

Координата X начала прямоугольника

y

Координата Y начала прямоугольника

width

Ширина прямоугольника

height

Высота прямоугольника

gtk_render_handle ()

void
gtk_render_handle (GtkStyleContext *context,
                   cairo_t *cr,
                   double x,
                   double y,
                   double width,
                   double height);

Отображает маркер (как в GtkPaned и в маркерах изменения размера GtkWindow), в прямоугольнике, определяемом x, y, width, height.

Маркеры, отображаемые для панелей и маркеров изменения размера:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

Координата X начала прямоугольника

y

Координата Y начала прямоугольника

width

Ширина прямоугольника

height

Высота прямоугольника

gtk_render_layout ()

void
gtk_render_layout (GtkStyleContext *context,
                   cairo_t *cr,
                   double x,
                   double y,
                   PangoLayout *layout);

Отображает layout по координатам x, y

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

Координата X

y

Координата Y

layout

the PangoLayout для отображения

gtk_render_line ()

void
gtk_render_line (GtkStyleContext *context,
                 cairo_t *cr,
                 double x0,
                 double y0,
                 double x1,
                 double y1);

Отображает линию от (x0, y0) до (x1, y1).

Параметры

context

a GtkStyleContext

cr

a cairo_t

x0

Координата X начала линии

y0

Координата Y начала линии

x1

Координата X конца линии

y1

Координата Y конца линии

gtk_render_option ()

void
gtk_render_option (GtkStyleContext *context,
                   cairo_t *cr,
                   double x,
                   double y,
                   double width,
                   double height);

Отображает отметку опции (как в радиокнопке), состояние GTK_STATE_FLAG_CHECKED определяет, включена ли опция, а GTK_STATE_FLAG_INCONSISTENT указывает, следует ли обозначить её как неопределённую.

Типичный рендеринг отметки опции:

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

Координата X начала прямоугольника

y

Координата Y начала прямоугольника

width

Ширина прямоугольника

height

Высота прямоугольника

gtk_render_activity ()

void
gtk_render_activity (GtkStyleContext *context,
                     cairo_t *cr,
                     double x,
                     double y,
                     double width,
                     double height);

Отображает индикатор активности (например, в GtkSpinner). Состояние GTK_STATE_FLAG_CHECKED определяет, происходит ли активность.

Параметры

context

a GtkStyleContext

cr

a cairo_t

x

Координата X начала прямоугольника

y

Координата Y начала прямоугольника

width

Ширина прямоугольника

height

Высота прямоугольника

gtk_render_icon ()

void
gtk_render_icon (GtkStyleContext *context,
                 cairo_t *cr,
                 GdkTexture *texture,
                 double x,
                 double y);

Отображает значок в texture в указанных координатах x и y.

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

Параметры

context

объект GtkStyleContext

cr

объект cairo_t

texture

объект GdkTexture, содержащий значок для отрисовки

x

координата X для texture

y

координата Y для texture

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

перечисление GtkBorderStyle

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

Члены

GTK_BORDER_STYLE_NONE

Граница не отображается

GTK_BORDER_STYLE_HIDDEN

То же, что и GTK_BORDER_STYLE_NONE

GTK_BORDER_STYLE_SOLID

Одно непрерывное сегментное отображение

GTK_BORDER_STYLE_INSET

Граница выглядит так, как будто содержимое утоплено внутрь

GTK_BORDER_STYLE_OUTSET

Граница выглядит так, как будто содержимое выпирает наружу

GTK_BORDER_STYLE_DOTTED

Последовательность точек

GTK_BORDER_STYLE_DASHED

Последовательность штрихов с квадратными концами

GTK_BORDER_STYLE_DOUBLE

Две параллельные линии с промежутком между ними

GTK_BORDER_STYLE_GROOVE

Граница выглядит так, как будто выгравирована

GTK_BORDER_STYLE_RIDGE

Граница выглядит так, как будто выпирает наружу

GtkStyleContext

typedef struct _GtkStyleContext GtkStyleContext;

перечисление GtkStyleContextPrintFlags

Флаги, которые изменяют поведение gtk_style_context_to_string(). Новые значения могут быть добавлены в это перечисление.

Члены

GTK_STYLE_CONTEXT_PRINT_NONE

Значение по умолчанию.

GTK_STYLE_CONTEXT_PRINT_RECURSE

Печать всего дерева узлов CSS, начиная с узла контекста стиля

GTK_STYLE_CONTEXT_PRINT_SHOW_STYLE

Отображение значений свойств CSS для каждого узла

GTK_STYLE_CONTEXT_PRINT_SHOW_CHANGE

Отображение информации о внесённых изменениях, влияющих на стили

структура GtkBorder

struct GtkBorder {
  gint16 left;
  gint16 right;
  gint16 top;
  gint16 bottom;
};

Структура, определяющая границу прямоугольной области с различной шириной на каждой стороне.

Члены

gint16 left;

Ширина левой границы

gint16 right;

Ширина правой границы

gint16 top;

Ширина верхней границы

gint16 bottom;

Ширина нижней границы

Подробное описание свойств

Свойство “display”

  “display”                  GdkDisplay *

Связанный GdkDisplay.

Владелец: GtkStyleContext

Флаги: Чтение / Запись

© 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/GtkStyleContext.html

Spec-Zone.ru

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