Страница 1 из 1

Blueprint в GNOME SDK: декларативный язык для создания интерфейсов приложений

Добавлено: Вт май 06, 2025 11:54 am
root:#
В состав предлагаемого проектом GNOME инструментария для разработки приложений (GNOME SDK) включён компилятор blueprint-compiler, позволяющий использовать для определения интерфейса приложений разметку Blueprint.

Поддержка Blueprint в GNOME SDK даст возможность применять данный язык описания интерфейса в приложениях GNOME без ручной установки дополнительных зависимостей. В настоящее время Blueprint добавлен в ночные сборки GNOME SDK и войдёт в состав релизов, начиная с осеннего выпуска GNOME 49. Blueprint упрощает создание интерфейса с использованием библиотеки GTK4 и отличается задействованием простого декларативного синтаксиса, повторяющего модель виджетов GTK, поддерживающего типовые шаблоны, типы и обработчики.

В отличие от формата ui-файлов GTK в Blueprint не применяется разметка XML, которая воспринимается как перегруженная и неудобная для редактирования вручную. Для интеграции с интегрированными средами разработки и редакторами кода предоставляется LSP-сервер (Language Server Protocol), который можно использовать для подсветки, анализа ошибок, вывода подсказок и автодополнения кода. Поддержка Blueprint уже встроена в GNOME Builder и доступна в форме плагинов для Vim, GNU Emacs и Visual Studio Code. Имеется утилита для упрощения портирования определений интерфейса из XML в Blueprint.

Благодаря читаемому синтаксису формат Blueprint позволяет обойтись без применения специализированных визуальных редакторов интерфейса. При этом Blueprint не требует внесения изменений в GTK и позиционируется как надстройка, компилирующая разметку в штатный для GtkBuilder формат XML. Функциональные возможности Blueprint полностью соответствуют GtkBuilder, отличается лишь метод представления информации.

Код инструментария написан на языке Python и распространяется под лицензией LGPLv3.

Код: Выделить всё

using Gtk 4.0;

   template $MyAppWindow: ApplicationWindow {
     default-width: 600;
     default-height: 300;
     title: _("Hello, Blueprint!");
     [titlebar]
     HeaderBar {}

     Label {
       label: bind template.main_text;
     }
   }


Источник: https://www.opennet.ru/opennews/art.shtml?num=63190