Aplicativo feito com o toolkit gráfico GTK.

Como instalar a linguagem de marcação Gnome Blueprint

Blueprint é uma linguagem de marcação para criação de interfaces gráfica com o toolkit GTK.

Ela é desenvolvida e mantida pelo James Westman.

O seu principal objeto é ser uma linguagem de marcação fácil de aprender e que permita a construção de interfaces gráficas de forma rápida e declarativa.

É importante notar que a linguagem de marcação Blueprint não vem para substituir o padrão atual de construção de interfaces gráficas do GTK.

Assim como em outros frameworks e toolkits gráficos, o GTK utiliza o padrão XML para construção da parte visual dos aplicativos.

Este é um formato amplamente utilizado e bem aceito no geral, contudo ele tende a ser difícil de ler e modificar manualmente.

Essa dificuldade tente a gerar uma curva de aprendizado grande e em muitos casos existe a necessidade da utilização de softwares que permitam o desenvolvimento das interfaces gráficas de forma visual.

Alguns exemplos desses softwares para GTK são:

Para amenizar essas dificuldades é que nasce a ideia da linguagem de marcação Blueprint.

Para ficar mais claro vamos analisar o código da seguinte interface gráfica em ambas as linguagens de marcação:

Aplicativo feito com o toolkit gráfico GTK.
Aplicativo feito com o toolkit gráfico GTK.

Na imagem acima temos basicamente uma janela e um menu na barra de título.

Para descrever essa interface em XML (*.ui) temos o seguinte código:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
    <requires lib="gtk" version="4.0"/>
    <template class="ExampleWindow" parent="GtkApplicationWindow">
        <property name="title">Python e GTK 4: PyGObject Gtk.ApplicationWindow() ui file.</property>
        <property name="default-width">683</property>
        <property name="default-height">384</property>
        <child type="titlebar">
            <object class="GtkHeaderBar" id="header_bar">
                <child type="end">
                    <object class="GtkMenuButton">
                        <property name="icon-name">open-menu-symbolic</property>
                        <property name="menu-model">primary_menu</property>
                    </object>
                </child>
            </object>
        </child>
    </template>

    <menu id="primary_menu">
        <section>
            <item>
                <attribute name="label" translatable="yes">_Preferences</attribute>
                <attribute name="action">app.preferences</attribute>
            </item>
        </section>
    </menu>
</interface>

A mesma interface gráfica na linguagem de marcação Blueprint (*.blp) tem o seguinte código:

using Gtk 4.0;

template $ExampleWindow: Gtk.ApplicationWindow {
  title: 'Python and GTK: PyGObject Gtk.ApplicationWindow.';
  default-width: 683;
  default-height: 384;

  [titlebar]
  Gtk.HeaderBar header_bar {
    [end]
    Gtk.MenuButton {
      icon-name: 'open-menu-symbolic';
      menu-model: primary_menu;
    }
  }
}

menu primary_menu {
  section {
    item {
      label: _('Preferences');
      action: 'app.preferences';
    }
  }
}

Como podemos ver o código da interface gráfica se torna bem mais legível e simples com a linguagem de marcação Blueprint.


Blueprint compiler

Relembrando o que foi dito anteriormente.

A linguagem de marcação Blueprint não vem para substituir o padrão atual de construção de interfaces gráficas do GTK.

Isso significa que escrevemos a interface gráfica em Blueprint (*.blp) e precisamos converter o arquivo gerado para um arquivo XML (*.ui) que será lindo pelo GtkBuilder.

Para realizar essa conversão/compilação precisamos instalar a ferramenta de linha de comando (CLI) blueprint-compiler.


Instalação

Linux

Arch Linux

sudo pacman -S \
blueprint-compiler

Fedora

sudo dnf install \
blueprint-compiler

openSUSE Tumbleweed

sudo zypper install \
blueprint-compiler

Ubuntu

sudo apt install \
blueprint-compiler

Microsoft Windows

Para realizar a instalação do blueprint-compiler no Microsoft Windows é necessário que o MSYS2 esteja instalado e configurado.

Abra o terminal do MSYS2 e execute no terminal o comando:

pacman -S \
mingw-w64-x86_64-blueprint-compiler

Instalação via código fonte

Para obter a ultima versão do blueprint-compiler podemos realizar a instalação do mesmo a partir do seu código fonte.

A instalação é bem simples e com poucas dependências.

Dependências

macOS

brew install \
git \
meson \
ninja

Linux

Arch Linux
sudo pacman -S \
git \
meson \
ninja
Fedora

Site oficial do Fedora.

sudo dnf install \
git \
meson \
ninja-build
openSUSE Tumbleweed
sudo zypper install \
git \
meson \
ninja
Ubuntu:
sudo apt install \
git \
meson \
ninja-build

Microsoft Windows

Para realizar a instalação do blueprint-compiler no Microsoft Windows é necessário que o MSYS2 esteja instalado e configurado.

Abra o terminal do MSYS2 e instale as seguinte dependências:

pacman -S \
git \
mingw-w64-x86_64-meson \
mingw-w64-x86_64-ninja
Instalando os pacotes meson e ninja via MSYS2.
Instalando os pacotes meson e ninja via MSYS2.

Instalação

Assim que as dependências estiverem instaladas abra um terminal e clone o repositório do blueprint-compiler:

git clone https://gitlab.gnome.org/jwestman/blueprint-compiler.git

No caso do Microsoft Windows utilize o terminal MINGW64 do MSYS2.

Terminal MINGW64 do MSYS2.
Terminal MINGW64 do MSYS2.

Agora acesse a pasta que foi clonada:

cd blueprint-compiler

Ao acessar a pasta execute o comando:

meson _build

Assim que o processo de build terminar execute:

ninja -C _build install

Assim que o processo de instalação terminar o blueprint-compiler estará disponível no sistema operacional 🚀:

blueprint-compiler --version
Exibindo a versão do blueprint-compiler no terminal do macOS.
Exibindo a versão do blueprint-compiler no terminal do macOS.

Principais comandos

Iniciar um passo a passo para configuração do projeto:

blueprint-compiler port

Para converter um arquivo *.blp para *.ui:

blueprint-compiler compile MainWindow.blp --output MainWindow.ui

Para conhecer todos os recursos disponíveis:

blueprint-compiler --help


Extra

Extensões

Alguns editores de texto possuem suporte para a linguagem de marcação Blueprint.

Dentro os principais temos: