截至目前,Capy还没有准备好用于生产,因为我仍在进行破坏
Capy Targets Zig版本0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (提名的Zig版本) ,它在Zig 0.13.0上无效
Capy是Zig的GUI图书馆。它主要用于使用操作系统的本机控件创建应用程序。 CAPY是一个声明性的UI库,旨在易于编写和多功能。
它的目标是授权独立的UI应用程序,游戏中的集成或任何其他渲染过程是无目标的。
如果您要启动一个新项目,只需克隆Capy-Template并遵循构建说明。
否则或有关更多信息,请在文档中查看。
您可以提出问题并在#Capy-UI矩阵频道上接收更新。
使用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
? MacOS M1
? MacOS X86_64
✅linux x86_64
✅linux i386
✅linux aarch64(松树,松木...)
✅freeBSD X86_64
?安卓
? ios
✅Websembly
注意:由于没有针对Linux的“官方” GUI库,因此选择了GTK 4,因为它是在大多数发行版上进行配置的gui库。这也是Libadwaita不会被采用的原因,因为它仅通过与其他DES的造型和集成来适合Gnome和Gnome。
目前,并非每个平台都支持相同的组件。因此,这是支持的清单:
| Win32 | macos | GTK | 安卓 | WASM | |
|---|---|---|---|---|---|
| 按钮 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 帆布 | ✅ | ✅ | ✅ | ||
| 复选框 | ✅ | ✅ | |||
| 下拉 | ✅ | ✅ | |||
| 图像 | ✅ | ✅ | |||
| 标签 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 菜单 | |||||
| 导航 | |||||
| navigationsidebar | ✅ | ||||
| 可滚动 | ✅ | ✅ | |||
| 滑块 | ✅ | ✅ | ✅ | ||
| 选项卡 | ✅ | ✅ | |||
| Textarea | ✅ | ✅ | |||
| Textfield | ✅ | ✅ | ✅ | ✅ | |
| 窗户 | ✅ | ✅ | ✅ | ✅ | ✅ |