Π’ΡŠΠ²Π΅Π΄Π΅Π½ Π΅ Blueprint, Π½ΠΎΠ² Π΅Π·ΠΈΠΊ Π·Π° потрСбитСлски интСрфСйс Π·Π° GTK

ДТСймс УСстман, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ GNOME Maps, прСдстави Π½ΠΎΠ² Π΅Π·ΠΈΠΊ Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅, Blueprint, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° интСрфСйси с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° GTK. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Blueprint Π² GTK UI Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ написан Π½Π° Python ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° LGPLv3.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ с описаниС Π½Π° UI интСрфСйса, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² GTK, към XML Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ ΠΈ Π½Π΅ Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° писанС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Ρ€ΡŠΡ‡Π½ΠΎ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Blueprint сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° с ясно прСдставянС Π½Π° информацията ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° чСтливия си синтаксис позволява Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° спСциализирани Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° Π²ΠΈΠ·ΡƒΠ°Π»Π΅Π½ интСрфСйс ΠΏΡ€ΠΈ създаванС, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° интСрфСйса.

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Blueprint Π½Π΅ изисква ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² GTK, напълно Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π΄ΠΆΠ°Π΄ΠΆΠ° GTK ΠΈ Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΊΠ°, която ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π² стандартния XML Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° GtkBuilder. Ѐункционалността Π½Π° Blueprint Π΅ напълно ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° с GtkBuilder, само ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π·Π° прСдставянС Π½Π° информация сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°. Π—Π° Π΄Π° ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ към Blueprint, просто Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΠ»Π°Π½ към скрипта Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π±Π΅Π· Π΄Π° промСнятС ΠΊΠΎΠ΄Π°. ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Gtk 4.0; шаблон MyAppWindow : Gtk.ApplicationWindow { title: _("ΠœΠΎΠ΅Ρ‚ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ"); [titlebar] HeaderBar header_bar {} Label { styles ["heading"] label: _("Hello, world!"); }}

Π’ΡŠΠ²Π΅Π΄Π΅Π½ Π΅ Blueprint - Π½ΠΎΠ² Π΅Π·ΠΈΠΊ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° потрСбитСлски интСрфСйси Π·Π° GTK

Π’ допълнСниС към ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π² стандартния GTK XML Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π² процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΅ ΠΈ плъгин с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Blueprint Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π°Ρ‚Π° срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° GNOME Builder. ΠžΡ‚Π΄Π΅Π»Π΅Π½ LSP ΡΡŠΡ€Π²ΡŠΡ€ (Language Server Protocol) сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π·Π° Blueprint, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°Π½Π΅, Π°Π½Π°Π»ΠΈΠ· Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ²Π΅Ρ‚ΠΈ ΠΈ допълванС Π½Π° ΠΊΠΎΠ΄ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ LSP, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Visual Studio Code.

ΠŸΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° Blueprint Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ добавянС Π½Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ към ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° класа Gtk.Expression, прСдоставСн Π² GTK4. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ ΠΏΠΎ-ΠΏΠΎΠ·Π½Π°Ρ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΡƒΠ΅Π± интСрфСйси Π½Π° JavaScript ΠΈ позволява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ синхронизиранС Π½Π° прСдставянСто Π½Π° интСрфСйса със ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ потрСбитСлския интСрфСйс слСд всяка промяна Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€