3个版本
0.0.3 | 2021年3月25日 |
---|---|
0.0.2 | 2021年3月4日 |
0.0.1 | 2021年3月4日 |
#845 在 GUI
在 panoramix-derive 中使用
170KB
4.5K SLoC
Panoramix
Panoramix是Rust编程语言的实验性GUI框架。
该框架是数据驱动和声明式的,从React中获得一些灵感,并在Druid工具集之上实现(因此得名)。
它旨在使用简单、符合Rust语法的代码:Panoramix不使用unsafe代码、cells、mutexes或DSL宏。
入门
以下是我们“hello world”示例
use panoramix::elements::{Button, Label};
use panoramix::{component, Column, CompCtx, Element, NoEvent, RootHandler};
#[component]
fn HelloBox(_ctx: &CompCtx, _props: ()) -> impl Element {
Column!(
Label::new("Hello world!"),
Button::new("Say hello").on_click(|_, _| {
println!("Hello world");
})
)
}
fn main() -> Result<(), panoramix::PlatformError> {
RootHandler::new(HelloBox::new(()))
.with_tracing(true)
.launch()
}
贡献
欢迎提出问题和提交PR。
特别欢迎添加“基本块”小部件的PR。
有关提交PR时应遵循的规则,请参阅CONTRIBUTING.md。问题没有强制格式,但如果您提交了一个问题,请遵循常识性规则:要有礼貌,要专业,要有计划消灭您遇到的每个人,如果您有问题,请包括详细的复现步骤。
有关项目代码的高级展示,请参阅ARCHITECTURE.md。
要提问和讨论开发工作,请访问Druid的Zulip聊天中的#panoramix
频道。
用法
在您的Cargo.toml
中添加以下内容
panoramix = "0.1.0"
如果您想使用最新版本,请添加以下内容代替
panoramix = { git = "https://github.com/PoignardAzur/panoramix.git" }
注意Linux用户:Panoramix是基于Druid构建的,使用GTK后端,需要GTK3的开发版本。有关安装信息,请参阅GTK安装页面。
例如,在基于Ubuntu的发行版中,您应该运行sudo apt install libgtk-3-dev
。
路线图
短期路线图如下
- 编写更多测试,并尝试使我们所使用的每项功能都更具可测试性(特别是Druid)。
- 编写基准测试。
- 改进错误处理,并编写辅助宏。
- 尽可能简化常见、简单的任务(例如编写任务列表、编写菜单等)。
从长远来看,有两个主要目标
- 实现与React的功能兼容。
- 使用Panoramix构建一个类似chrome-devtools的调试框架。 TODO - 编写关于此的博客文章。
有关详细信息,请参阅ROADMAP.md。
作者
这个crate几乎全部由Olivier FAURE编写。任何其他贡献者都将添加到AUTHORS.md。
本项目得以实现得益于Raph Levien和Colin Rofls极其整洁且易于接近的工作,以及他们的一些指导,以及与Druid社区的互动。特别是,Panoramix受到Crochet的启发。
依赖项
~10–18MB
~226K SLoC