Masonry Rust GUI 框架开源项目

我要开发同款
匿名用户2023年02月06日
144阅读
开发技术Rust
所属分类GUI开发框架、程序开发
授权协议Apache

作品详情

Masonry是一个RustGUI框架。

Masonry提供了用于创建窗口的平台(使用Glazier 作为后端),每个窗口都包含一个Widget树。它还提供了用于在runtime检测Widget树的工具,可编写单元测试,方便开发者调试和维护应用程序。

基于Masonry,开发者可实现即时模式(immediate-mode)GUI、Elm架构、函数式响应GUI等。

示例代码

usemasonry::widget::{Button,CrossAxisAlignment,Flex,Label,Portal,SizedBox,TextBox,WidgetMut,};usemasonry::{Action,AppDelegate,AppLauncher,Color,DelegateCtx,Env,WidgetId,WindowDescription,WindowId,};structDelegate{next_task:String,}implAppDelegateforDelegate{fnon_action(&mutself,ctx:&mutDelegateCtx,action:Action,){matchaction{Action::ButtonPressed|Action::TextEntered(_)=>{letmutroot:WidgetMut<Portal<Flex>>=ctx.get_root();ifself.next_task!=""{letmutflex=root.child_mut();flex.add_child(Label::new(self.next_task.clone()));}}Action::TextChanged(new_text)=>{self.next_task=new_text.clone();}_=>{}}}}fnmain(){//Themainbuttonandtextboxwithsomespacebelow,//allinsideascrollablearea.letroot_widget=Portal::new(Flex::column().with_child(Flex::row().with_child(TextBox::new("")).with_child(Button::new("Addtask")),).with_spacer(VERTICAL_WIDGET_SPACING),).constrain_horizontal(true);letmain_window=WindowDescription::new(root_widget).title("To-dolist").window_size((400.0,400.0));AppLauncher::with_window(main_window).with_delegate(Delegate{next_task:String::new(),}).launch().expect("Failedtolaunchapplication");}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论