Spec-Zone.ru › GTK 4.0

GtkCssProvider

GtkCssProvider — стилизация виджетов по типу CSS

Функции

void gtk_css_provider_load_named ()
void gtk_css_provider_load_from_data ()
void gtk_css_provider_load_from_file ()
void gtk_css_provider_load_from_path ()
void gtk_css_provider_load_from-resource ()
GtkCssProvider * gtk_css_provider_new ()
char * gtk_css_provider_to-string ()
GtkCssSection * gtk_css_section_new ()
GtkCssSection * gtk_css_section_ref ()
void gtk_css_section_unref ()
void gtk_css_section_print ()
char * gtk_css_section_to-string ()
GFile * gtk_css_section_get-file ()
GtkCssSection * gtk_css_section_get-parent ()
const GtkCssLocation * gtk_css_section_get-start-location ()
const GtkCssLocation * gtk_css_section_get-end-location ()

Сигналы

void parsing-error Run Last

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

struct GtkCssProvider
#define GTK_CSS_PARSER_ERROR
enum GtkCssParserError
enum GtkCssParserWarning
struct GtkCssLocation
GtkCssSection

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

    GBoxed
    ╰── GtkCssSection
    GObject
    ╰── GtkCssProvider

Реализованные интерфейсы

GtkCssProvider реализует GtkStyleProvider.

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

#include <gtk/gtk.h>

Описание

GtkCssProvider — это объект, реализующий интерфейс GtkStyleProvider. Он позволяет парсить входные данные в формате CSS для стилизации виджетов.

Приложение может заставить GTK обработать определённый CSS-файл, вызвав gtk_css_provider_load_from_file() или gtk_css_provider_load_from_resource(), и добавив провайдер с помощью gtk_style_context_add_provider() или gtk_style_context_add_provider_for_display().

Кроме того, при инициализации GTK будут загружены определённые файлы. Сначала, если он существует, загружается файл $XDG_CONFIG_HOME/gtk-4.0/gtk.css. Затем, GTK загружает первый существующий файл из XDG_DATA_HOME/themes/THEME/gtk-VERSION/gtk-VARIANT.css, $HOME/.themes/THEME/gtk-VERSION/gtk-VARIANT.css, $XDG_DATA_DIRS/themes/THEME/gtk-VERSION/gtk-VARIANT.css и DATADIR/share/themes/THEME/gtk-VERSION/gtk-VARIANT.css, где THEME — имя текущей темы (см. настройку “gtk-theme-name”), VARIANT — вариант загрузки (см. настройку “gtk-application-prefer-dark-theme”), DATADIR — префикс, настроенный при компиляции GTK (если не переопределён переменной среды GTK_DATA_PREFIX), и VERSION — номер версии GTK. Если для текущей версии файла не найдено, GTK пытается найти более старые версии, вплоть до версии 4.0.

Функции

gtk_css_provider_load_named ()

void
gtk_css_provider_load_named (GtkCssProvider *provider,
                             const char *name,
                             const char *variant);

Загружает тему из стандартных путей тем. Фактический процесс поиска темы может меняться между версиями, но гарантируется, что эта функция использует тот же механизм загрузки темы, что и GTK для загрузки собственной темы.

Параметры

provider

a GtkCssProvider

name

Имя темы

variant

Вариант для загрузки, например, "dark", или NULL для значения по умолчанию.

[allow-none]

gtk_css_provider_load_from_data ()

void
gtk_css_provider_load_from_data (GtkCssProvider *css_provider,
                                 const char *data,
                                 gssize length);

Загружает data в css_provider, очищая при этом любую ранее загруженную информацию.

Параметры

css_provider

a GtkCssProvider

data

Данные CSS, загруженные в памяти.

[array length=length][element-type guint8]

length

длина data в байтах или -1 для строк с нулевым завершением. Если length не равно -1, код будет предполагать, что она не завершается нулём, и потенциально сделает копирование.

gtk_css_provider_load_from_file ()

void
gtk_css_provider_load_from_file (GtkCssProvider *css_provider,
                                 GFile *file);

Загружает данные, содержащиеся в file в css_provider, очищая при этом любую ранее загруженную информацию.

Параметры

css_provider

a GtkCssProvider

file

GFile, указывающий на файл для загрузки

gtk_css_provider_load_from_path ()

void
gtk_css_provider_load_from_path (GtkCssProvider *css_provider,
                                 const char *path);

Загружает данные, содержащиеся в path в css_provider, очищая при этом любую ранее загруженную информацию.

Параметры

css_provider

a GtkCssProvider

path

путь к файлу для загрузки, в кодировке имён файлов GLib

gtk_css_provider_load_from_resource ()

void
gtk_css_provider_load_from_resource (GtkCssProvider *css_provider,
                                     const char *resource_path);

Загружает данные из ресурса по адресу resource_path в GtkCssProvider, очищая при этом любую ранее загруженную информацию.

Для отслеживания ошибок при загрузке CSS подключитесь к сигналу “parsing-error”.

Параметры

css_provider

a GtkCssProvider

resource_path

путь к ресурсу GResource

gtk_css_provider_new ()

GtkCssProvider *
gtk_css_provider_new (void);

Возвращает новый созданный GtkCssProvider.

Возвращает

Новый GtkCssProvider

gtk_css_provider_to_string ()

char *
gtk_css_provider_to_string (GtkCssProvider *provider);

Преобразует provider в строковое представление в формате CSS.

Использование gtk_css_provider_load_from_data() со значением, возвращаемым этой функцией, для нового провайдера, созданного с помощью gtk_css_provider_new(), по существу создаст дубликат этого provider.

Параметры

provider

провайдер, для записи в строку

Возвращает

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

gtk_css_section_new ()

GtkCssSection *
gtk_css_section_new (GFile *file,
                     const GtkCssLocation *start,
                     const GtkCssLocation *end);

Создаёт новый GtkCssSection, ссылающийся на раздел в указанном file от позиции start до позиции end.

[constructor]

Параметры

file

Файл, на который ссылается этот раздел.

[nullable][transfer none]

start

Начальная позиция

end

Конечная позиция

Возвращает

новый GtkCssSection

gtk_css_section_ref ()

GtkCssSection *
gtk_css_section_ref (GtkCssSection *section);

Увеличивает счётчик ссылок на section.

Параметры

section

a GtkCssSection

Возвращает

сам section.

gtk_css_section_unref ()

void
gtk_css_section_unref (GtkCssSection *section);

Уменьшает счётчик ссылок на section, освобождая структуру, если счётчик достигает 0.

Параметры

section

a GtkCssSection

gtk_css_section_print ()

void
gtk_css_section_print (const GtkCssSection *section,
                       GString *string);

Выводит section в string в удобочитаемом формате. Это формат, например, gtk.css:32:1-23, для обозначения строки 32, символов с 1 по 23 в файле gtk.css.

Параметры

section

раздел

string

a GString для вывода

gtk_css_section_to_string ()

char *
gtk_css_section_to_string (const GtkCssSection *section);

Печатает раздел в удобочитаемой текстовой форме с помощью gtk_css_section_print().

Параметры

section

a GtkCssSection

Возвращает

Новую строку.

[transfer full]

gtk_css_section_get_file ()

GFile *
gtk_css_section_get_file (const GtkCssSection *section);

Получает файл, из которого был проанализирован section. Если такого файла не существует, например, потому что CSS был загружен с помощью gtk_css_provider_load_from_data(), то возвращается NULL.

Параметры

section

раздел

Возвращает

the GFile, из которого был проанализирован section, или NULL если section был проанализирован из других данных.

[transfer none]

gtk_css_section_get_parent ()

GtkCssSection *
gtk_css_section_get_parent (const GtkCssSection *section);

Получает родительский раздел для данного section. Родительский раздел — это раздел, содержащий данный section. Особый случай — это разделы типа GTK_CSS_SECTION_DOCUMENT. Их родительский раздел будет либо NULL, если это исходный документ CSS, загруженный с помощью gtk_css_provider_load_from_file(), либо раздел типа GTK_CSS_SECTION_IMPORT, если он загружен с помощью правила импорта из другого файла.

Параметры

section

раздел

Возвращает

родительский раздел или NULL, если такового нет.

[nullable][transfer none]

gtk_css_section_get_start_location ()

const GtkCssLocation *
gtk_css_section_get_start_location (const GtkCssSection *section);

Возвращает расположение в документе CSS, где начинается этот раздел.

Параметры

section

раздел

Возвращает

Начальное расположение этого раздела.

[transfer none][not nullable]

gtk_css_section_get_end_location ()

const GtkCssLocation *
gtk_css_section_get_end_location (const GtkCssSection *section);

Возвращает расположение в документе CSS, где заканчивается этот раздел.

Параметры

section

раздел

Возвращает

Конечное расположение этого раздела.

[transfer none][not nullable]

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

struct GtkCssProvider

struct GtkCssProvider;

GTK_CSS_PARSER_ERROR

#define GTK_CSS_PARSER_ERROR (gtk_css_parser_error_quark ())

Область для ошибок GtkCssParser.

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

Ошибки, которые могут возникнуть во время анализа CSS.

Эти ошибки непредвиденны и приведут к тому, что части заданного CSS будут проигнорированы.

Элементы

GTK_CSS_PARSER_ERROR_FAILED

Неизвестная ошибка.

GTK_CSS_PARSER_ERROR_SYNTAX

Указанный текст не соответствует допустимой синтаксической структуре.

GTK_CSS_PARSER_ERROR_IMPORT

Не удалось импортировать ресурс.

GTK_CSS_PARSER_ERROR_NAME

Указанное имя не определено.

GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE

Указанное значение неверно.

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

Предупреждения, которые могут возникнуть во время анализа CSS.

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

Элементы

GTK_CSS_PARSER_WARNING_DEPRECATED

Используемый элемент устарел и будет удален в будущей версии.

GTK_CSS_PARSER_WARNING_SYNTAX

Использовался синтаксический элемент, которого следует избегать.

GTK_CSS_PARSER_WARNING_UNIMPLEMENTED

Функция не реализована.

struct GtkCssLocation

struct GtkCssLocation {
  gsize                  bytes;
  gsize                  chars;
  gsize                  lines;
  gsize                  line_bytes;
  gsize                  line_chars;
};

GtkCssLocation используется для представления расположения в файле — или другом источнике данных, проанализированных движком CSS.

Смещения bytes и line_bytes предназначены для программированного сопоставления данных. Смещения lines и line_chars могут использоваться для вывода расположения в файле.

Обратите внимание, что параметр lines начинается с 0 и увеличивается всякий раз, когда встречается разрыв строки CSS. (CSS определяет последовательности символов "\r\n", "\r", "\n" и "\f" как разрывы строк). Если ваш документ использует другие правила разрыва строк, у вас могут возникнуть проблемы.

Элементы

gsize bytes;

число байтов, проанализированных с начала

gsize chars;

число символов, проанализированных с начала

gsize lines;

число полных строк, которые были проанализированы. Если вы хотите отобразить это как номер строки, вам нужно добавить 1 к этому значению.

gsize line_bytes;

число байтов, проанализированных с последнего разрыва строки

gsize line_chars;

число символов, проанализированных с последнего разрыва строки

GtkCssSection

typedef struct _GtkCssSection GtkCssSection;

Определяет часть документа CSS. Поскольку разделы вложены друг в друга, вы можете использовать gtk_css_section_get_parent() для получения содержащей области.

Сведения о сигнале

Сигнал “parsing-error”

void
user_function (GtkCssProvider *provider,
               GtkCssSection  *section,
               GError         *error,
               gpointer        user_data)

Сигнализирует о возникновении ошибки разбора. Параметры path, line и position описывают фактическое место ошибки максимально точно.

Ошибки разбора никогда не являются фатальными, поэтому разбор продолжается после ошибки. Однако ошибки могут привести к тому, что некоторые части или даже все данные не будут обработаны. Поэтому полезно проверить успешность разбора, подключившись к этому сигналу.

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

Параметры

provider

поставщик, у которого произошла ошибка разбора

section

раздел, в котором произошла ошибка

error

Ошибка разбора

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

См. также

GtkStyleContext, GtkStyleProvider

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

Spec-Zone.ru

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