ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Blueprint — Π½ΠΎΠ²Ρ‹ΠΉ язык построСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для GTK

ДТСймс ВСстман (James Westman), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прилоТСния GNOME Maps, прСдставил Π½ΠΎΠ²Ρ‹ΠΉ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Blueprint, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для построСния интСрфСйсов с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GTK. Код компилятора для прСобразования Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Blueprint Π² ui-Ρ„Π°ΠΉΠ»Ρ‹ GTK написан Π½Π° языкС Python ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ LGPLv3.

Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° называСтся привязка примСняСмых Π² GTK ui-Ρ„Π°ΠΉΠ»ΠΎΠ² описания интСрфСйса ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ XML, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΈ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ для написания ΠΈΠ»ΠΈ рСдактирования Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Blueprint отличаСтся Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ благодаря Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌΡƒ синтаксису Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· примСнСния спСциализированных Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² интСрфСйса ΠΏΡ€ΠΈ создании, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² элСмСнтах интСрфСйса.

ΠŸΡ€ΠΈ этом Blueprint Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² GTK, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ повторяСт модСль Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² GTK ΠΈ позиционируСтся ΠΊΠ°ΠΊ надстройка, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π² ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ для GtkBuilder Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Blueprint ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ GtkBuilder, отличаСтся лишь ΠΌΠ΅Ρ‚ΠΎΠ΄ прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Blueprint достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² blueprint-compiler Π² сцСнарий сборки Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π°. using Gtk 4.0; template MyAppWindow : Gtk.ApplicationWindow { title: _(«My App Title»); [titlebar] HeaderBar header_bar {} Label { styles [«heading»] label: _(«Hello, world!»); } }

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Blueprint - Π½ΠΎΠ²Ρ‹ΠΉ язык построСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для GTK

ΠšΡ€ΠΎΠΌΠ΅ компилятора Π² ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ XML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ GTK Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΏΠ»Π°Π³ΠΈΠ½ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Blueprint для ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GNOME Builder. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ развиваСтся LSP-сСрвСр (Language Server Protocol) для Blueprint, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для подсвСтки, Π°Π½Π°Π»ΠΈΠ·Π° ошибок, Π²Ρ‹Π²ΠΎΠ΄Π° подсказок ΠΈ автодополнСния ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… LSP Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Visual Studio Code.

Из ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ Blueprint отмСчаСтся добавлСния Π² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ элСмСнтов Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ с использованиСм класса Gtk.Expression, прСдоставляСмого Π² GTK4. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² web-интСрфСйсов Π½Π° JavaScript ΠΈ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ автоматичСской синхронизации прСдставлСния интСрфСйса со связанной модСлью Π΄Π°Π½Π½Ρ‹Ρ…, Π±Π΅Π· нСобходимости ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обновлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ