ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Π΅ Blueprint β€” Π½ΠΎΠ² Π΅Π·ΠΈΠΊ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° потрСбитСлски интСрфСйси Π·Π° GTK

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

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

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Blueprint Π½Π΅ изисква ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² GTK, напълно повтаря ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° GTK Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΈ сС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° стойност, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‰Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°Ρ‚Π° Π² стандартния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML Π·Π° GtkBuilder. ЀункционалноститС Π½Π° 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. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ ΠΏΠΎ-ΠΏΡ€ΠΈΠ²ΠΈΡ‡Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΡƒΠ΅Π± интСрфСйси Π½Π° JavaScript ΠΈ позволява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° синхронизация Π½Π° прСдставянСто Π½Π° интСрфСйса с ΡΠ²ΡŠΡ€Π·Π°Π½Π°Ρ‚Π° ΠΌΠΎΠ΄Π΅Π»Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· нСобходимост ΠΎΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° потрСбитСлския интСрфСйс слСд всяка промяна Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster