Masonry —— Rust GUI 框架
Masonry 是一个 Rust GUI 框架。
Masonry 提供了用于创建窗口的平台(使用 Glazier 作为后端),每个窗口都包含一个 Widget 树。它还提供了用于在 runtime 检测 Widget 树的工具,可编写单元测试,方便开发者调试和维护应用程序。
基于 Masonry,开发者可实现即时模式 (immediate-mode) GUI、Elm 架构、函数式响应 GUI 等。
示例代码
use masonry::widget::{ Button, CrossAxisAlignment, Flex, Label, Portal, SizedBox, TextBox, WidgetMut, }; use masonry::{ Action, AppDelegate, AppLauncher, Color, DelegateCtx, Env, WidgetId, WindowDescription, WindowId, }; struct Delegate { next_task: String, } impl AppDelegate for Delegate { fn on_action( &mut self, ctx: &mut DelegateCtx, action: Action, ) { match action { Action::ButtonPressed | Action::TextEntered(_) => { let mut root: WidgetMut<Portal<Flex>> = ctx.get_root(); if self.next_task != "" { let mut flex = root.child_mut(); flex.add_child(Label::new(self.next_task.clone())); } } Action::TextChanged(new_text) => { self.next_task = new_text.clone(); } _ => {} } } } fn main() { // The main button and text box with some space below, // all inside a scrollable area. let root_widget = Portal::new( Flex::column() .with_child( Flex::row() .with_child(TextBox::new("")) .with_child(Button::new("Add task")), ) .with_spacer(VERTICAL_WIDGET_SPACING), ) .constrain_horizontal(true); let main_window = WindowDescription::new(root_widget) .title("To-do list") .window_size((400.0, 400.0)); AppLauncher::with_window(main_window) .with_delegate(Delegate { next_task: String::new(), }) .launch() .expect("Failed to launch application"); }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | API 网关策略的二三事
作者暴渊,API7.ai 技术工程师,Apache APISIX Committer。 近些年随着云原生和微服务架构的日趋发展,API 网关以流量入口的角色在技术架构中扮演着越来越重要的作用。API 网关主要负责接收所有请求的流量并进行处理转发至上游服务,API 网关的策略决定了 API 网关处理这些流量的逻辑与规则,直接决定了实际的业务流量行为。 什么是 API 网关策略? API 网关一般位于所有的上游服务之前,当用户向服务发送请求后请求会先到 API 网关,API 网关接收到请求之后一般会判断几件事情: 请求是否合法,比如是否来自被禁止访问的用户列表中; 这个请求是否通过认证,访问的内容是否是经过授权的; 请求是否触发了某些限制规则,比如限流限速等; 请求应该转发给哪个上游服务。 经过这一系列步骤,这个请求要么不符合预设的规则被拒绝,要么经过了层层处理正确到达指定的上游服务中。我们将这些处理规则称之为 API 网关的策略。这些规则由网关的管理员在网关运行时不断添加至网关中,网关接受这些规则并根据这些规则作出正确的流量处理行为。 以 API 网关 Apache APISIX 为例,...
- 下一篇
Linux 6.3 将提供对 Steam Deck 控制器的初始支持
V 社最新提交的 Steam HID 驱动补丁添加对 Steam Deck 控制器的初始支持,一旦该补丁集在 Linux 6.3 中合并, 即意味着 SteamDeck 的手柄可以在 Linux 系统的任意应用中使用,而不仅限 Steam 客户端。 内核中的 Hid-Steam 板块最初是为支持 Steam 控制器手柄而创建的 HID 内核驱动程序。早在 2018 年,Rodrigo Rivas Costa 通过逆向分析为 V 社的 Steam Controller 手柄开发内核驱动程序,不过当时的驱动程序仅限用于 Steam Controller 手柄,且只有基础的按键/摇杆功能,在电池监控、震动反馈、加速度计/陀螺仪、LED 等方面表现不佳。 ▼ Steam Controller 手柄 而 Linux 6.3 中针对Steam Deck 手柄的最新驱动补集丁则由 V 社的员工 Vicki Pfau 进行提交,第一批补丁提供了对 Steam Deck 控制器界面的初步支持,对于 Steam Deck控制器手柄,则仅支持简单的输入和切换到蜥蜴模式(Valve 硬件 kb/m 仿真模式)...
相关文章
文章评论
共有0条评论来说两句吧...