Suicide
07.12.2021, 02:25
Джеймс Вестман (James Westman), разработчик приложения GNOME Maps, представил (https://www.jwestman.net/2021/12/02/introducing-blueprint-a-new-way-to-craft-user-interfaces.html) новый язык разметки Blueprint, предназначенный для построения интерфейсов с использованием библиотеки GTK. Код компилятора для преобразования разметки Blueprint в ui-файлы GTK написан на языке Python и распространяется (https://gitlab.gnome.org/jwestman/blueprint-compiler) под лицензией LGPLv3.
В качестве причины создания проекта называется привязка применяемых в GTK ui-файлов описания интерфейса к формату XML, который перегружен и неудобен для написания или редактирования разметки вручную. Формат Blueprint отличается наглядностью представления информации и благодаря читаемому синтаксису даёт возможность обойтись без применения специализированных визуальных редакторов интерфейса при создании, редактировании и оценке изменений в элементах интерфейса.
При этом Blueprint не требует внесения изменений в GTK, полностью повторяет модель виджетов GTK и позиционируется как надстройка, компилирующая разметку в штатный для GtkBuilder формат XML. Функциональные возможности Blueprint полностью соответствуют GtkBuilder, отличается лишь метод представления информации. Для перевода (https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/) проекта на Blueprint достаточно добавить вызов blueprint-compiler в сценарий сборки без изменения кода.
Code:
using Gtk 4.0;
template MyAppWindow : Gtk.ApplicationWindow {
title: _("My App Title");
[titlebar]
HeaderBar header_bar {}
Label {
styles ["heading"]
label: _("Hello, world!");
}
}
https://www.opennet.ru/opennews/pics_base/0_1638705926.png (https://www.jwestman.net/assets/blueprints/window.png)
Кроме компилятора в штатный XML-формат GTK в разработке также находится плагин (https://gitlab.gnome.org/jwestman/gnome-builder/-/commits/blueprint-plugin) с поддержкой Blueprint для интегрированной среды разработки GNOME Builder. Отдельно развивается LSP-сервер (Language Server Protocol) для Blueprint, который можно будет использовать для подсветки, анализа ошибок, вывода подсказок и авто дополнения кода в поддерживающих LSP редакторах кода, включая Visual Studio Code.
Из планов по развитию Blueprint отмечается добавления в разметку элементов реактивного программирования (https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D 0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0 %BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B 8%D0%B5), реализуемого с использованием класса Gtk.Expression (https://docs.gtk.org/gtk4/class.Expression.html), предоставляемого в GTK4. Предлагаемый метод более привычен для разработчиков web-интерфейсов на JavaScript и позволяет добиться автоматической синхронизации представления интерфейса со связанной моделью данных, без необходимости принудительного обновления пользовательского интерфейса после каждого изменения данных.
05.12.2021
https://www.opennet.ru/opennews/art.shtml?num=56283
В качестве причины создания проекта называется привязка применяемых в GTK ui-файлов описания интерфейса к формату XML, который перегружен и неудобен для написания или редактирования разметки вручную. Формат Blueprint отличается наглядностью представления информации и благодаря читаемому синтаксису даёт возможность обойтись без применения специализированных визуальных редакторов интерфейса при создании, редактировании и оценке изменений в элементах интерфейса.
При этом Blueprint не требует внесения изменений в GTK, полностью повторяет модель виджетов GTK и позиционируется как надстройка, компилирующая разметку в штатный для GtkBuilder формат XML. Функциональные возможности Blueprint полностью соответствуют GtkBuilder, отличается лишь метод представления информации. Для перевода (https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/) проекта на Blueprint достаточно добавить вызов blueprint-compiler в сценарий сборки без изменения кода.
Code:
using Gtk 4.0;
template MyAppWindow : Gtk.ApplicationWindow {
title: _("My App Title");
[titlebar]
HeaderBar header_bar {}
Label {
styles ["heading"]
label: _("Hello, world!");
}
}
https://www.opennet.ru/opennews/pics_base/0_1638705926.png (https://www.jwestman.net/assets/blueprints/window.png)
Кроме компилятора в штатный XML-формат GTK в разработке также находится плагин (https://gitlab.gnome.org/jwestman/gnome-builder/-/commits/blueprint-plugin) с поддержкой Blueprint для интегрированной среды разработки GNOME Builder. Отдельно развивается LSP-сервер (Language Server Protocol) для Blueprint, который можно будет использовать для подсветки, анализа ошибок, вывода подсказок и авто дополнения кода в поддерживающих LSP редакторах кода, включая Visual Studio Code.
Из планов по развитию Blueprint отмечается добавления в разметку элементов реактивного программирования (https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D 0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0 %BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B 8%D0%B5), реализуемого с использованием класса Gtk.Expression (https://docs.gtk.org/gtk4/class.Expression.html), предоставляемого в GTK4. Предлагаемый метод более привычен для разработчиков web-интерфейсов на JavaScript и позволяет добиться автоматической синхронизации представления интерфейса со связанной моделью данных, без необходимости принудительного обновления пользовательского интерфейса после каждого изменения данных.
05.12.2021
https://www.opennet.ru/opennews/art.shtml?num=56283