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 | ||
name | Имя темы | |
variant | Вариант для загрузки, например, "dark", или | [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 | ||
data | Данные CSS, загруженные в памяти. | [array length=length][element-type guint8] |
length | длина |
gtk_css_provider_load_from_file ()
void gtk_css_provider_load_from_file (GtkCssProvider *css_provider,GFile *file);
Загружает данные, содержащиеся в file в css_provider, очищая при этом любую ранее загруженную информацию.
Параметры
css_provider | ||
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 | ||
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 | ||
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 |
Возвращает
сам section.
gtk_css_section_unref ()
void
gtk_css_section_unref (GtkCssSection *section); Уменьшает счётчик ссылок на section, освобождая структуру, если счётчик достигает 0.
Параметры
section |
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 |
Возвращает
Новую строку.
[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 | число байтов, проанализированных с начала | |
gsize | число символов, проанализированных с начала | |
gsize | число полных строк, которые были проанализированы. Если вы хотите отобразить это как номер строки, вам нужно добавить 1 к этому значению. | |
gsize | число байтов, проанализированных с последнего разрыва строки | |
gsize | число символов, проанализированных с последнего разрыва строки |
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
См. также
© 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