Sampai sekarang, Capy belum siap digunakan dalam produksi karena saya masih membuat perubahan besar
Capy menargetkan zig versi 0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (versi zig yang dinominasikan) , itu tidak bekerja pada zig 0.13.0
Capy adalah perpustakaan GUI untuk zig . Ini terutama dimaksudkan untuk membuat aplikasi menggunakan kontrol asli dari sistem operasi. Capy adalah perpustakaan UI deklaratif yang bertujuan untuk mudah ditulis dan serbaguna.
Telah dibuat dengan tujuan untuk memberdayakan aplikasi UI mandiri, integrasi dalam permainan atau proses rendering lainnya adalah non-gol.
Jika Anda memulai proyek baru, cukup klon-capy-template dan ikuti instruksi build.
Jika tidak atau untuk informasi lebih lanjut, silakan lihat di dokumen.
Anda dapat mengajukan pertanyaan dan menerima pembaruan di saluran matriks #Capy-UI.
Aplikasi sederhana menggunakan 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 ()});
} Sangat mudah untuk menambahkan sesuatu seperti tombol atau area teks. Contohnya sudah dapat digunakan untuk melihat parameter widget biasanya terlampir dalam struct anonim ( .{ .label = "Save" } ). Anda juga dapat melihat bahwa hanya membungkus widget dengan capy.Expanded( ... ) akan memberitahukannya untuk mengambil semua ruang yang bisa dilakukan.
Kontribusi bisa sesederhana membuka masalah dan membedakan bug apa yang Anda temui atau fitur apa yang ingin Anda miliki.
Jika Anda ingin membantu proyek lebih langsung, Anda dapat membayar proyek dan kemudian membuat permintaan tarik.
Platform dianggap didukung hanya jika dapat dibangun dari setiap OS lainnya.
Legenda:
✅ 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
Catatan: Karena tidak ada perpustakaan "resmi" GUI untuk Linux, GTK 4 telah dipilih karena itu adalah yang berfungsi dan dapat dikonfigurasi pada sebagian besar distro. Itu juga alasan libadwaita tidak akan diadopsi, karena itu dimaksudkan untuk gnome dan gnome hanya dengan melarang gaya dan integrasi dengan DES lainnya.
Untuk saat ini, tidak setiap platform mendukung komponen yang sama. Jadi, inilah daftar yang didukung:
| Win32 | MacOS | GTK | Android | Wasm | |
|---|---|---|---|---|---|
| Tombol | ✅ | ✅ | ✅ | ✅ | ✅ |
| Kanvas | ✅ | ✅ | ✅ | ||
| Kotak centang | ✅ | ✅ | |||
| Dropdown | ✅ | ✅ | |||
| Gambar | ✅ | ✅ | |||
| Label | ✅ | ✅ | ✅ | ✅ | ✅ |
| Menu | |||||
| Navigasi | |||||
| NavigationsideBar | ✅ | ||||
| Bisa digulir | ✅ | ✅ | |||
| Slider | ✅ | ✅ | ✅ | ||
| Tab | ✅ | ✅ | |||
| TexTarea | ✅ | ✅ | |||
| Textfield | ✅ | ✅ | ✅ | ✅ | |
| Jendela | ✅ | ✅ | ✅ | ✅ | ✅ |