Ab sofort ist Capy nicht bereit für die Produktion, da ich noch Breaking -Änderungen vornehme
Capy Targets Zig Version 0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (Nominierte Zig-Versionen) funktioniert nicht auf ZIG 0.13.0
Capy ist eine GUI -Bibliothek für Zig . Es ist hauptsächlich für das Erstellen von Anwendungen vorgesehen, die native Steuerelemente aus dem Betriebssystem verwenden. Capy ist eine deklarative UI -Bibliothek, die leicht zu schreiben und vielseitig zu schreiben ist.
Es wurde mit dem Ziel erstellt, eigenständige UI-Anwendungen zu stärken, die Integration in Spiele oder ein anderer Rendering-Prozess ist ein Nichtgänger.
Wenn Sie ein neues Projekt starten, klonen Sie einfach eine Capy-Template und befolgen Sie die Build-Anweisungen.
Andernfalls oder für weitere Informationen finden Sie in den Dokumenten.
Sie können Fragen stellen und Aktualisierungen des #Capy-UI-Matrixkanals erhalten.
Eine einfache Anwendung mit 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 ()});
} Es ist einfach, so etwas wie eine Schaltfläche oder einen Textbereich hinzuzufügen. Das Beispiel kann bereits verwendet werden, um zu bemerken, dass die Parameter eines Widgets normalerweise in anonymen Strukturen eingeschlossen sind ( .{ .label = "Save" } ). Sie können auch sehen, dass das einfache Wickeln eines Widgets mit capy.Expanded( ... ) es ihm anweisen wird, den gesamten Platz zu nehmen, den es kann.
Der Beitrag kann so einfach sein, wie ein Problem zu eröffnen und auf den Fehler zu detaillieren, auf den Sie gestoßen sind oder welche Funktion Sie haben möchten.
Wenn Sie dem Projekt direkter helfen möchten, können Sie das Projekt aufgeben und dann eine Pull -Anfrage erstellen.
Eine Plattform wird nur als unterstützt angesehen, wenn sie aus jedem anderen Betriebssystem gebaut werden kann.
Legenden:
✅ 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
HINWEIS: Da es keine "offizielle" GUI -Bibliothek für Linux gibt, wurde GTK 4 ausgewählt, da sie funktioniert und auf den meisten Distributionen konfiguriert werden kann. Es ist auch der Grund, warum Libadwaita nicht übernommen wird, da es nur für Gnome und Gnome bestimmt ist, nur durch das Auslassen von Styling und Integration in andere DES.
Im Moment unterstützt nicht jede Plattform dieselben Komponenten. Hier ist eine Liste der unterstützten:
| Win32 | macos | Gtk | Android | Wasm | |
|---|---|---|---|---|---|
| Taste | ✅ | ✅ | ✅ | ✅ | ✅ |
| Leinwand | ✅ | ✅ | ✅ | ||
| Kontrollkästchen | ✅ | ✅ | |||
| Runterfallen | ✅ | ✅ | |||
| Bild | ✅ | ✅ | |||
| Etikett | ✅ | ✅ | ✅ | ✅ | ✅ |
| Speisekarte | |||||
| Navigation | |||||
| Navigationsidebar | ✅ | ||||
| Scrollbar | ✅ | ✅ | |||
| Schieberegler | ✅ | ✅ | ✅ | ||
| Registerkarten | ✅ | ✅ | |||
| Textbereich | ✅ | ✅ | |||
| Textfeld | ✅ | ✅ | ✅ | ✅ | |
| Fenster | ✅ | ✅ | ✅ | ✅ | ✅ |