A partir de agora, Capy não está pronta para uso na produção, pois ainda estou fazendo mudanças de quebra
Capy Alvos Zig Versão 0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (versões ZIG nomeadas) , ele não funciona no ZIG 0.13.0
Capy é uma biblioteca da GUI para ZIG . É destinado principalmente à criação de aplicativos usando controles nativos do sistema operacional. Capy é uma biblioteca declarativa da interface do usuário que pretende ser fácil de escrever e versátil.
Foi feito com o objetivo de capacitar aplicativos de interface do usuário independentes, integração em jogos ou qualquer outro processo de renderização não é um objetivo.
Se você estiver iniciando um novo projeto, basta clonar o Capy-Template e seguir instruções de construção.
Caso contrário, ou para obter mais informações, consulte os documentos.
Você pode fazer perguntas e receber atualizações no canal da matriz #Capy-Ui.
Um aplicativo simples usando 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 ()});
} É fácil adicionar algo como um botão ou uma área de texto. O exemplo já pode ser usado para observar os parâmetros de um widget geralmente são incluídos em estruturas anônimas ( .{ .label = "Save" } ). Você também pode ver que simplesmente embrulhar um widget com capy.Expanded( ... ) pedirá para ocupar todo o espaço possível.
Contribuir pode ser tão simples quanto abrir um problema e detestar qual bug você encontrou ou qual recurso você deseja ter.
Se você deseja ajudar o projeto mais diretamente, poderá espalhar o projeto e criar uma solicitação de tração.
Uma plataforma é considerada suportada apenas se puder ser construída em todos os outros sistemas operacionais.
Lendas:
✅ 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
NOTA: Como não há biblioteca GUI "oficial" para Linux, o GTK 4 foi escolhido, pois é o que funciona e pode ser configurado nas distribuições mais distantes. É também a razão pela qual Libadwaita não será adotado, pois é destinado a Gnome e Gnome apenas, desaprovando o estilo e a integração com outros des.
Por enquanto, nem toda plataforma suporta os mesmos componentes. Então, aqui está uma lista dos que são suportados:
| Win32 | macos | Gtk | Android | WASM | |
|---|---|---|---|---|---|
| Botão | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tela | ✅ | ✅ | ✅ | ||
| Caixa de seleção | ✅ | ✅ | |||
| Suspenso | ✅ | ✅ | |||
| Imagem | ✅ | ✅ | |||
| Rótulo | ✅ | ✅ | ✅ | ✅ | ✅ |
| Menu | |||||
| Navegação | |||||
| NavigationsideBar | ✅ | ||||
| Rolável | ✅ | ✅ | |||
| Slider | ✅ | ✅ | ✅ | ||
| Guias | ✅ | ✅ | |||
| Textarea | ✅ | ✅ | |||
| TextField | ✅ | ✅ | ✅ | ✅ | |
| Janela | ✅ | ✅ | ✅ | ✅ | ✅ |