เปิดตัว Blueprint ซึ่งเป็นภาษาอินเทอร์เฟซผู้ใช้ใหม่สำหรับ GTK

James Westman ผู้พัฒนาแอปพลิเคชันแผนที่ GNOME ได้เปิดตัว Blueprint ภาษามาร์กอัปใหม่ ซึ่งออกแบบมาสำหรับการสร้างส่วนต่อประสานโดยใช้ไลบรารี GTK รหัสคอมไพเลอร์สำหรับการแปลงมาร์กอัป Blueprint เป็นไฟล์ GTK UI เขียนด้วย Python และเผยแพร่ภายใต้ใบอนุญาต LGPLv3

เหตุผลในการสร้างโปรเจ็กต์คือการผูกไฟล์คำอธิบายอินเทอร์เฟซ UI ที่ใช้ใน GTK เข้ากับรูปแบบ XML ซึ่งมีการโอเวอร์โหลดและไม่สะดวกสำหรับการเขียนหรือแก้ไขมาร์กอัปด้วยตนเอง รูปแบบพิมพ์เขียวมีความโดดเด่นด้วยการนำเสนอข้อมูลที่ชัดเจน และด้วยไวยากรณ์ที่อ่านได้ ทำให้สามารถทำได้โดยไม่ต้องใช้โปรแกรมแก้ไขอินเทอร์เฟซภาพพิเศษเมื่อสร้าง แก้ไข และประเมินการเปลี่ยนแปลงในองค์ประกอบอินเทอร์เฟซ

ในเวลาเดียวกัน Blueprint ไม่ต้องการการเปลี่ยนแปลง GTK จำลองโมเดลวิดเจ็ต GTK โดยสมบูรณ์ และอยู่ในตำแหน่งเป็นส่วนเสริมที่คอมไพล์มาร์กอัปเป็นรูปแบบ XML มาตรฐานสำหรับ GtkBuilder ฟังก์ชันการทำงานของ Blueprint นั้นสอดคล้องกับ GtkBuilder โดยสมบูรณ์ มีเพียงวิธีการนำเสนอข้อมูลเท่านั้นที่แตกต่างกัน หากต้องการย้ายโปรเจ็กต์ไปยัง Blueprint เพียงเพิ่มการเรียกคอมไพเลอร์ blueprint ไปยังสคริปต์บิลด์โดยไม่ต้องเปลี่ยนโค้ด ใช้ Gtk 4.0; เทมเพลต MyAppWindow : Gtk.ApplicationWindow { title: _("ชื่อแอปของฉัน"); [titlebar] HeaderBar header_bar {} ป้ายกำกับ { สไตล์ ["หัวเรื่อง"] ป้ายกำกับ: _("สวัสดีชาวโลก!"); } }

เปิดตัว Blueprint - ภาษาใหม่สำหรับการสร้างส่วนต่อประสานผู้ใช้สำหรับ GTK

นอกจากคอมไพเลอร์ในรูปแบบ GTK XML มาตรฐานแล้ว ปลั๊กอินที่รองรับ Blueprint สำหรับสภาพแวดล้อมการพัฒนาแบบรวมของ GNOME Builder ยังอยู่ระหว่างการพัฒนาอีกด้วย เซิร์ฟเวอร์ LSP แยกต่างหาก (โปรโตคอลเซิร์ฟเวอร์ภาษา) กำลังได้รับการพัฒนาสำหรับ Blueprint ซึ่งสามารถใช้ในการเน้น การวิเคราะห์ข้อผิดพลาด การแสดงคำแนะนำ และการเติมโค้ดให้สมบูรณ์ในตัวแก้ไขโค้ดที่รองรับ LSP รวมถึง Visual Studio Code

แผนการพัฒนาพิมพ์เขียวประกอบด้วยการเพิ่มองค์ประกอบการเขียนโปรแกรมเชิงโต้ตอบให้กับมาร์กอัป ซึ่งใช้งานโดยใช้คลาส Gtk.Expression ที่ให้ไว้ใน GTK4 วิธีการที่นำเสนอนี้คุ้นเคยกับนักพัฒนาเว็บอินเทอร์เฟซ JavaScript มากกว่า และช่วยให้สามารถซิงโครไนซ์การนำเสนออินเทอร์เฟซกับโมเดลข้อมูลที่เกี่ยวข้องได้โดยอัตโนมัติ โดยไม่จำเป็นต้องอัปเดตอินเทอร์เฟซผู้ใช้อย่างเข้มงวดหลังจากการเปลี่ยนแปลงข้อมูลแต่ละครั้ง

ที่มา: opennet.ru

เพิ่มความคิดเห็น