اعتبارًا من الآن ، لا يكون Capy جاهزًا للاستخدام في الإنتاج لأنني ما زلت أقوم بإجراء تغييرات كسر
يستهدف CAPY إصدار ZIG 0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (إصدارات متعرجين مرشحين) ، لا يعمل على zig 0.13.0
Capy هي مكتبة واجهة المستخدم الرسومية لرجال التعرج . يهدف بشكل أساسي إلى إنشاء تطبيقات باستخدام عناصر التحكم الأصلية من نظام التشغيل. Capy هي مكتبة واجهة المستخدم التعريفية تهدف إلى أن تكون سهلة الكتابة وتنوعا.
لقد تم تحقيقه بهدف تمكين تطبيقات واجهة المستخدم المستقلة ، أو التكامل في الألعاب أو أي عملية عرض أخرى غير عازمة.
إذا كنت تبدأ مشروعًا جديدًا ، فما عليك سوى استنساخ 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( ... ) سيخبرها أن تأخذ كل المساحة التي يمكنها.
يمكن أن تكون المساهمة بسيطة مثل فتح مشكلة وفكك ما هو الأخطاء التي واجهتها أو الميزة التي ترغب في الحصول عليها.
إذا كنت ترغب في مساعدة المشروع بشكل مباشر أكثر ، فيمكنك تغطية المشروع ثم إنشاء طلب سحب.
لا يتم دعم المنصة إلا إذا كان يمكن بناؤها من كل نظام تشغيل آخر.
الأساطير:
✅ Windows x86_64
✅ Windows I386
؟ ماكوس M1
؟ MacOS X86_64
✅ Linux x86_64
✅ Linux I386
✅ Linux AARCH64 (PinePhone ، Pinebook ...)
✅ FreeBSD x86_64
؟ Android
؟ iOS
webassembly
ملاحظة: نظرًا لعدم وجود مكتبة واجهة المستخدم الرسومية "الرسمية" لـ Linux ، فقد تم اختيار GTK 4 لأنها هي التي تعمل ويمكن تكوينها على معظم التوزيعات. هذا هو السبب في أنه لن يتم تبني libadwaita ، لأنه مخصص للجنوم والجنوم فقط عن طريق عدم السماح بالتصميم والتكامل مع DES الآخرين.
في الوقت الحالي ، لا يدعم كل منصة نفس المكونات. لذا ، إليك قائمة بألواح مدعومة:
| Win32 | ماكوس | GTK | Android | WASM | |
|---|---|---|---|---|---|
| زر | ✅ | ✅ | ✅ | ✅ | ✅ |
| قماش | ✅ | ✅ | ✅ | ||
| مربع الاختيار | ✅ | ✅ | |||
| اسقاط | ✅ | ✅ | |||
| صورة | ✅ | ✅ | |||
| ملصق | ✅ | ✅ | ✅ | ✅ | ✅ |
| قائمة طعام | |||||
| ملاحة | |||||
| التنقل | ✅ | ||||
| قابل للتمرير | ✅ | ✅ | |||
| شريط التمرير | ✅ | ✅ | ✅ | ||
| علامات التبويب | ✅ | ✅ | |||
| Textarea | ✅ | ✅ | |||
| Textfield | ✅ | ✅ | ✅ | ✅ | |
| نافذة | ✅ | ✅ | ✅ | ✅ | ✅ |