ณ ตอนนี้ Capy ยังไม่พร้อมสำหรับการผลิตในขณะที่ฉันยังคงทำการเปลี่ยนแปลงที่แตกหัก
Capy ตั้งเป้าหมาย ZIG เวอร์ชัน 0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (รุ่น ZIG ที่ได้รับการเสนอชื่อ) มันไม่ทำงานกับ ZIG 0.13.0
Capy เป็น ห้องสมุด GUI สำหรับ Zig ส่วนใหญ่มีวัตถุประสงค์เพื่อสร้างแอปพลิเคชันโดยใช้ตัวควบคุมดั้งเดิมจากระบบปฏิบัติการ Capy เป็นห้องสมุด UI ที่ประกาศโดยมีเป้าหมายที่จะเขียนและอเนกประสงค์ได้ง่าย
มันถูกสร้างขึ้นโดยมีเป้าหมายเพื่อเสริมพลังแอพพลิเคชั่น UI แบบสแตนด์อโลนการรวมเข้ากับเกมหรือกระบวนการเรนเดอร์อื่น ๆ นั้นไม่ใช่เป้าหมาย
หากคุณกำลังเริ่มโครงการใหม่เพียงแค่โคลน capy-template และทำตามคำแนะนำการสร้าง
มิฉะนั้นหรือสำหรับข้อมูลเพิ่มเติมโปรดดูเอกสาร
คุณสามารถถามคำถามและรับการอัปเดตในช่อง #capy-ui matrix
แอปพลิเคชั่นง่าย ๆ โดยใช้ CAPY:
const capy = @import ( "capy" );
const std = @import ( "std" );
pub usingnamespace capy . cross_platform ;
pub fn main () ! void {
try capy . init ();
var window = try capy . Window . init ();
try window . set (
capy . column (.{ . spacing = 10 }, .{ // have 10px spacing between each column's element
capy . row (.{ . spacing = 5 }, .{ // have 5px spacing between each row's element
capy . button (.{ . label = "Save" , . onclick = @ptrCast ( & buttonClicked ) }),
capy . button (.{ . label = "Run" , . onclick = @ptrCast ( & buttonClicked ) })
}),
// 'expanded' means the widget will take all the space it can
// in the parent container
capy . expanded (
capy . textArea (.{ . text = "Hello World!" })
)
})
);
window . setPreferredSize ( 800 , 600 );
window . show ();
capy . runEventLoop ();
}
fn buttonClicked ( button : * capy.Button ) ! void {
std . log . info ( "You clicked the button with text {s}" , .{ button . getLabel ()});
} มันง่ายที่จะเพิ่มบางอย่างเช่นปุ่มหรือพื้นที่ข้อความ ตัวอย่างสามารถใช้เพื่อสังเกตเห็นพารามิเตอร์ของวิดเจ็ตมักจะอยู่ในโครงสร้างที่ไม่ระบุชื่อ ( .{ .label = "Save" } ) นอกจากนี้คุณยังสามารถเห็นได้ว่าเพียงแค่ห่อวิดเจ็ตด้วย capy.Expanded( ... ) จะบอกให้ใช้พื้นที่ทั้งหมดที่สามารถทำได้
การมีส่วนร่วมอาจเป็นเรื่องง่ายเหมือนการเปิดปัญหาและ detailling สิ่งที่คุณพบหรือคุณต้องการมีคุณสมบัติอะไร
หากคุณต้องการช่วยเหลือโครงการโดยตรงคุณสามารถแยกโครงการแล้วสร้างคำขอดึง
แพลตฟอร์มจะได้รับการพิจารณาเฉพาะในกรณีที่สามารถสร้างขึ้นจากระบบปฏิบัติการอื่น ๆ ทุกแห่ง
ตำนาน:
✅ windows x86_64
✅ windows i386
- macos m1
- macos x86_64
✅ Linux x86_64
✅ Linux i386
✅ Linux Aarch64 (Pinephone, Pinebook ... )
✅ FreeBSD x86_64
- Android
- iOS
✅ WebAssembly
หมายเหตุ: เนื่องจากไม่มีไลบรารี GUI "อย่างเป็นทางการ" สำหรับ Linux GTK 4 ได้รับเลือกเนื่องจากเป็นห้องที่ใช้งานได้และสามารถกำหนดค่าได้ใน distros มากที่สุด นอกจากนี้ยังเป็นเหตุผลที่ Libadwaita จะไม่ถูกนำมาใช้เนื่องจากมีความหมายสำหรับ Gnome และ Gnome เท่านั้นโดยการไม่อนุญาตให้มีการออกแบบและการรวมเข้ากับ DES อื่น ๆ
สำหรับตอนนี้ไม่ใช่ทุกแพลตฟอร์มที่รองรับส่วนประกอบเดียวกัน ดังนั้นนี่คือรายการของรายการที่ได้รับการสนับสนุน:
| win32 | แม็กอส | GTK | Android | wasm | |
|---|---|---|---|---|---|
| ปุ่ม | |||||
| ผ้าใบ | |||||
| ช่องทำเครื่องหมาย | |||||
| แบบเลื่อนลง | |||||
| ภาพ | |||||
| ฉลาก | |||||
| เมนู | |||||
| การนำทาง | |||||
| การนำทาง | |||||
| ที่เลื่อนได้ | |||||
| ตัวเลื่อน | |||||
| แท็บ | |||||
| textarea | |||||
| ฟิลด์ข้อความ | |||||
| หน้าต่าง |