2 个版本
使用旧的 Rust 2015
0.1.1 | 2018 年 2 月 14 日 |
---|---|
0.1.0 | 2018 年 2 月 4 日 |
#887 in GUI
19KB
457 代码行
dardan_ui
dardan_ui 是一个基于 SDL2 的简单 GUI 工具包。该库应该易于使用,并类似于面向对象语言的 GUI 工具包。
我为什么要创建这个库?
- 我开始学习 Rust,这是一个提高我技能的好项目。
- 目前(据我所知)存在的 GUI 库很复杂、复杂或者需要作为服务器运行。
- (主观)其他库不够直观。
- (主观)在其他的库中创建自定义 ui 元素 是复杂的。
如何使用 (目标)
这是我打算在库完成时如何使用它。这里有一些简单的用例,但这个想法还不完整。
简单的 UI 应用程序
这是运行应用程序所需的内容,看起来相当简单
extern crate dardan_ui;
use dardan_ui::UiApp;
pub fn main() {
UiApp::new().run();
}
响应式窗口和侧边栏
extern crate dardan_ui;
use std::rc::Rc;
use std::cell::RefCell;
use dardan_ui::{UiApp, UiColor, UiPair, UiRelSize, UiUnit};
use dardan_ui::combos::UiRowCombo;
pub fn main() {
let mut app = UiApp::new();
let mut main_container = UiRowCombo::new();
let mut sidebar = UiRowCombo::new();
sidebar.set_background_color(UiColor::salmon());
main_container.add_child(UiRelSize::Px(200), Rc::new(RefCell::new(sidebar)));
let mut sector = UiRowCombo::new();
sector.set_background_color(UiColor::red());
main_container.add_child(UiRelSize::Max, Rc::new(RefCell::new(sector)));
app.set_main_element(Rc::new(RefCell::new(main_container)));
app.run();
}
尽管这并不难理解,但这似乎并不简单。通过使用宏,它可以像这样
extern crate dardan_ui;
ui!(
define UiRowCombo : main_container {
children : [
UiRowCombo : sidebar {
size_x : 200 px,
size_y : Max,
background_color : salmon
},
UiRowCombo : sector {
size_x : Max,
size_y : Max,
background_color : red
}
]
}
);
pub fn main() {
let mut app = UiApp::new();
ui!(set_main app main_container);
app.run();
}
如果我们不想在 main 中指定任何内容,那么我们可以用 ui![run main_container]
来替换整个 main 函数
贡献
因为这是我第一次用 Rust 开发的项目,所以会有很多错误,也有很多你可以改进的地方。其中一些是
- Rust 最佳实践(我是第一次用 Rust 编程)
- SDL2 的更好使用和改进(我也是第一次使用 SDL2)
- 文档(即使是有文档的地方,我的英语也不太好)
- 如果你发现错误并有新想法,只需为它们创建问题即可
- 实现问题中的任务
依赖项
~17MB
~356K SLoC