Slint เป็นชุดเครื่องมือ GUI ที่ประกาศเพื่อสร้างอินเทอร์เฟซผู้ใช้แบบเนทีฟสำหรับแอปพลิเคชันแบบฝัง เดสก์ท็อป และมือถือที่เขียนด้วย Rust, C++, JavaScript หรือ Python
ชื่อ Slint มาจากเป้าหมายการออกแบบของเรา:
เยี่ยมชม #MadeWithSlint เพื่อดูโครงการบางส่วนที่ใช้ Slint เราขอเชิญคุณให้ใช้ Slint และเป็นส่วนหนึ่งของชุมชน
Slint อยู่ระหว่างการพัฒนา สถานะการสนับสนุนสำหรับแต่ละแพลตฟอร์มมีดังนี้:
Slint รองรับการนำทางด้วยแป้นพิมพ์ของวิดเจ็ตจำนวนมาก และส่วนต่อประสานกับผู้ใช้สามารถปรับขนาดได้ มีโครงสร้างพื้นฐานพื้นฐานสำหรับเทคโนโลยีช่วยเหลือ เช่น โปรแกรมอ่านหน้าจอ เราทราบดีว่าจำเป็นต้องมีการทำงานเพิ่มเติมเพื่อให้ได้รับการสนับสนุนที่ดีที่สุดสำหรับผู้ใช้ที่มีความต้องการพิเศษ
ราสเบอร์รี่ปี่ | เอสทีเอ็ม32 | RP2040 |
---|---|---|
วิดีโอของ Slint บน Raspberry Pi | วิดีโอของ Slint บน STM32 | วิดีโอของ Slint บน RP2040 |
หน้าต่าง | ระบบปฏิบัติการ macOS | ลินุกซ์ |
---|---|---|
การสาธิตเครื่องพิมพ์ | สไลด์ปริศนา | การตรวจสอบพลังงาน | แกลลอรี่วิดเจ็ต | การสาธิตสภาพอากาศ |
---|---|---|---|---|
ตัวอย่างและการสาธิตเพิ่มเติมในโฟลเดอร์ตัวอย่าง
UI ถูกกำหนดในภาษาเฉพาะโดเมนซึ่งมีความชัดเจน ใช้งานง่าย ใช้งานง่าย และให้วิธีที่มีประสิทธิภาพในการอธิบายองค์ประกอบกราฟิก ตำแหน่ง ลำดับชั้น การเชื่อมโยงคุณสมบัติ และการไหลของข้อมูลผ่านสถานะต่างๆ
นี่คือ "Hello World" ที่จำเป็น:
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
สำหรับรายละเอียดเพิ่มเติม โปรดดูเอกสารประกอบภาษา Slint
โฟลเดอร์ตัวอย่างประกอบด้วยตัวอย่างและการสาธิต ซึ่งแสดงวิธีใช้ภาษามาร์กอัป Slint และวิธีการโต้ตอบกับอินเทอร์เฟซผู้ใช้ Slint จากภาษาการเขียนโปรแกรมที่รองรับ
โฟลเดอร์ docs
มีข้อมูลเพิ่มเติมมากมาย รวมถึงคำแนะนำในการสร้าง และเอกสารสำหรับนักพัฒนาภายใน
อ้างถึง README ของแต่ละไดเร็กทอรีภาษาในโฟลเดอร์ api
:
แอปพลิเคชันประกอบด้วยตรรกะทางธุรกิจที่เขียนด้วยภาษา Rust, C++ หรือ JavaScript และมาร์กอัปการออกแบบส่วนติดต่อผู้ใช้ .slint
ซึ่งได้รับการคอมไพล์เป็นโค้ดเนทีฟ
ไฟล์ .slint
จะถูกรวบรวมล่วงหน้า นิพจน์ใน .slint
เป็นฟังก์ชันล้วนๆ ที่คอมไพลเลอร์สามารถปรับให้เหมาะสมได้ ตัวอย่างเช่น คอมไพลเลอร์สามารถเลือกคุณสมบัติ "อินไลน์" และลบคุณสมบัติที่คงที่หรือไม่เปลี่ยนแปลงออกได้ ในอนาคต เราหวังว่าจะปรับปรุงเวลาในการเรนเดอร์บนอุปกรณ์ระดับล่างโดยการประมวลผลรูปภาพและข้อความล่วงหน้า คอมไพเลอร์สามารถระบุได้ว่าองค์ประกอบ Text
หรือ Image
จะอยู่ด้านบนของ Image
อื่นในตำแหน่งเดียวกันเสมอ ด้วยเหตุนี้ ทั้งสององค์ประกอบจึงสามารถเรนเดอร์ล่วงหน้าเป็นองค์ประกอบเดียวได้ ซึ่งช่วยลดเวลาในการเรนเดอร์ลง
คอมไพลเลอร์ใช้ขั้นตอนของคอมไพเลอร์ทั่วไป ได้แก่ การเล็กซ์ การแยกวิเคราะห์ การปรับให้เหมาะสม และสุดท้ายคือการสร้างโค้ด มีแบ็คเอนด์ที่แตกต่างกันสำหรับการสร้างโค้ดในภาษาเป้าหมาย ตัวสร้างโค้ด C++ สร้างไฟล์ส่วนหัว C++ ตัวสร้าง Rust จะสร้างโค้ด Rust และอื่นๆ มีล่ามสำหรับภาษาไดนามิกรวมอยู่ด้วย
ไลบรารีรันไทม์ประกอบด้วยกลไกที่รองรับคุณสมบัติที่ประกาศในภาษา .slint
ส่วนประกอบที่มีองค์ประกอบ รายการ และคุณสมบัติจะถูกจัดวางในพื้นที่หน่วยความจำเดียว เพื่อลดการจัดสรรหน่วยความจำ
การแสดงผลแบ็กเอนด์และสไตล์สามารถกำหนดค่าได้ในเวลารวบรวม:
femtovg
ใช้ OpenGL ES 2.0 สำหรับการเรนเดอร์skia
ใช้ Skia ในการเรนเดอร์software
ใช้ CPU โดยไม่มีการอ้างอิงเพิ่มเติม หมายเหตุ: เมื่อติดตั้ง Qt บนระบบ สไตล์ qt
จะพร้อมใช้งาน โดยใช้ QStyle ของ Qt เพื่อให้ได้วิดเจ็ตที่ดูเป็นธรรมชาติ
เรามีเครื่องมือบางอย่างเพื่อช่วยในการพัฒนาไฟล์ .slint:
--auto-reload
ทำให้ง่ายต่อการดูตัวอย่าง UI ของคุณในขณะที่คุณกำลังทำงานอยู่ (เมื่อไม่สามารถใช้การแสดงตัวอย่าง LSP ได้)โปรดตรวจสอบบรรณาธิการ README ของเราเพื่อดูเคล็ดลับในการกำหนดค่าโปรแกรมแก้ไขที่คุณชื่นชอบให้ทำงานได้ดีกับ Slint
คุณสามารถใช้ Slint ภายใต้ใบอนุญาต ใดๆ ต่อไปนี้ ตามที่คุณต้องการ:
ดูตัวเลือกใบอนุญาต Slint บนเว็บไซต์และคำถามที่พบบ่อยเกี่ยวกับใบอนุญาต
เรายินดีรับการมีส่วนร่วมของคุณ: ในรูปแบบของโค้ด รายงานข้อผิดพลาด หรือข้อเสนอแนะ
โปรดดูคำถามที่พบบ่อยแยกต่างหากของเรา
เราหลงใหลเกี่ยวกับซอฟต์แวร์ - การออกแบบ API การพัฒนาซอฟต์แวร์ข้ามแพลตฟอร์ม และส่วนประกอบส่วนต่อประสานกับผู้ใช้ เป้าหมายของเราคือการทำให้การพัฒนาอินเทอร์เฟซผู้ใช้เป็นเรื่องสนุกสำหรับทุกคน ตั้งแต่นักพัฒนา Python, JavaScript, C++ หรือ Rust ไปจนถึงนักออกแบบ UI/UX เราเชื่อว่าซอฟต์แวร์เติบโตแบบออร์แกนิกและการรักษาให้เป็นโอเพ่นซอร์สเป็นวิธีที่ดีที่สุดในการรักษาการเติบโตนั้นไว้ สมาชิกในทีมของเราตั้งอยู่ห่างไกลในประเทศเยอรมนี
อย่าลังเลที่จะเข้าร่วมการสนทนา Github เพื่อสนทนาหรือถามคำถามทั่วไป ใช้ปัญหา Github เพื่อรายงานข้อเสนอแนะสาธารณะหรือข้อบกพร่อง
เราแชทในกรณีที่สำคัญที่สุดซึ่งคุณสามารถรับฟังหรือถามคำถามของคุณได้
แน่นอนคุณสามารถติดต่อเราเป็นการส่วนตัวผ่านทางอีเมลไปที่ [email protected]