#widgets #druid #repo #merging #optimistic #progress-bar #version

druid-widget-nursery

druid的额外控件,尚未准备好加入druid正版本

1个不稳定版本

0.1.0 2023年2月7日

#2 in #druid

Download history 14/week @ 2024-03-11 49/week @ 2024-03-18 78/week @ 2024-03-25 34/week @ 2024-04-01 26/week @ 2024-04-15 2/week @ 2024-04-22 31/week @ 2024-05-13 16/week @ 2024-05-20 7/week @ 2024-05-27 9/week @ 2024-06-03 9/week @ 2024-06-10 7/week @ 2024-06-17 36/week @ 2024-06-24

62 每月下载次数
用于 saqif

MIT/Apache

770KB
7.5K SLoC

druid-widget-nursery

Rust

此存储库包含(或,在撰写本文时,将包含)与druid一起工作的控件。存储库遵循乐观合并政策,其理念是降低合并PR的门槛,这有望带来良好的贡献者体验,进而鼓励更多人成为整个druid系列crate的常规合作者。

我们不会坚持在更新到druid的新版本时所有控件都必须构建,因此您会发现CI允许失败。修复这些构建失败将是第一次贡献的好机会,人们总是愿意在这里或在zulip上帮助解决这个问题。

总之,此存储库PR的默认假设是合并,但此政策包括可能更改或逆转先前PR的未来PR。有关更多信息,我建议您阅读此处和上面链接的乐观合并文章,它提供了管理开源项目的一种有趣方法,无论此处是否使用。

请注意,对于CI,我们使用cargo clippy --all-targets --all-features

使用此库

将以下内容添加到您的Cargo.toml中。您需要从此存储库的Cargo.toml中获取当前druid rev

druid-widget-nursery = { git = "https://github.com/linebender/druid-widget-nursery" }

[patch.'https://github.com/linebender/druid'.druid]
git = "https://github.com/linebender/druid"
rev = "<copy the current druid rev from this repository's Cargo.toml>"

Cargo.toml中的rev应与此存储库的[dependencies.druid]下的rev匹配。这确保了您的应用程序依赖于与该库相同的druid版本 - 否则,您可能会遇到安装多个版本的druid的问题。有关上述覆盖语法的更多信息,请参阅Cargo的patch文档

一旦安装了druid-widget-nursery,您就可以像往常一样使用use druid_widget_nursery::YourWidgetNameHere导入各种控件。有关使用各种控件的特定示例,请参阅示例目录。

控件

如果您添加了一个新的控件,请在此处添加其名称和简要说明。

  • 树形控件

    Tree example

  • 导航控件,可以显示不同的子控件/视图。

  • 下拉菜单:使用最近添加的子窗口的基本下拉菜单控件

  • 下拉菜单选择:从下拉列表中选择一个项目的基本控件

    Select example

  • 列表选择:从列表中选择一个项目的基本控件

  • 动画器:运行多个动画的辅助工具,具有不同的曲线/时间/依赖关系

  • 动画辅助:简单的过渡辅助工具。

  • PartialWidget:如果其数据存在,则显示控件的控件

    Multivalue example

  • MultiRadio:通过内部控件表示多个值的单选按钮

  • MultiCheckbox:通过内部控件表示多个值的复选框

  • 开关器:当关联的Prism返回Some()时,显示第一个控件

  • LazySwitcher:类似于开关器,但内部控件是按需懒加载的。

  • TooltipController:在鼠标悬停时弹出文本提示的便捷方式

  • OnMonitor:防止子窗口超出监视器边界的辅助控件

  • 分割:多个可调整大小的分割

  • ListFilter:过滤其内部控件列表的控件

  • TitleBar:作为窗口标题栏处理的控件。(仅在Windows上)

  • 高级版本的滑块,也允许键盘输入。

    Advanced Slider example

  • material_icons::Icon:绘制材料图标的辅助工具。

进度条改进

  • 基于druid中的现有进度条。
  • 使样式选项更具可配置性,使用主题值作为默认值,在控件中提供选项以覆盖。
  • 移除了对控件宽度的约束,控件现在将扩展以适应其容器。
  • 未来想法:添加可选配置,用于覆盖进度条上的文本。
  • 未来想法:绘制整个圆角矩形进度条,然后将其截断,因此渐变的大小不是根据当前进度,而是始终根据完整的进度条。至少作为一个选项。
  • 待办事项:宽度和高度是否应完全可配置,都调整到填充其容器?
  • 待办事项:更广泛地审查主题值,担心它们可能没有得到一致的使用。

控件请求

如果您需要某些控件,并且认为它可能对其他人有用,请随意提交PR,将其添加到此列表中。

  • 一个非常好的、通用的用于布置项目集合的控件。
    • 我们可以使用不同的方法(来自HTML世界的flexboxgrid)。
    • 这最终可能是多个控件,用于不同的用例。
  • 一个类似于druid::widget::Scroll的控件,但也支持缩放其内容。
  • 颜色选择器

控件存储库链接

也许您已经制作了自己的控件集合,它们不足以进入druid本身,但仍将有助于其他druid用户。提交PR以将它们添加到此处!

  • druid-graphs:一个用于绘制图形作为控件的alpha质量库,灵感来自matplotlib。目前仅支持几种图形类型,欢迎合作!与druid-lens-compose配合良好。
  • druid_table : 一个表格/数据网格小部件(目前也包含一些插值/可视化功能)。使用 druid_bindings
  • druid-enums: 一个用于查看枚举的小部件,根据其数据的变体显示不同的部件。

依赖项

~9–22MB
~318K SLoC