Building GUIs with druid

With druid you can build GUI applications with Rust.

Checkout the folder druid/druid/examples of the repository for working examples.

Examples

Footer which sticks to the bottom

Flex::column()
with_child(Align::centered(layout))
with_flex_spacer(f64::MAX)
with_child(statusbar.align_horizontal(druid::UnitPoint::BOTTOM))

Access an attribute in an array in the data structure

#[derive(Clone, Data, Len)]
struct ServerData {
fq_domain: String,
ipv4: [u8; 4]
}

#[derive(Data, Len)]
struct DNSServer {
servers: Vec<ServerData>
}

let i = ...;
DNSServer::servers.as_ref().index(i).then(ServerData::fq_domain)

Modify anything other than text or disabled

This examples modifies the color of a label.

#[derive(Data, Len)]
struct DataState {
i0: f64,
i1: f64
}

let temp_label = Label::new(move |data: &DataState, _env: &Env| {
format!("{} < {}?", data.i0, data.i1)
})
.env_scope(move |env, data| {
env.set(druid::theme::TEXT_COLOR,
if data.i0 < data.i1 {
Color::WHITE
}
else {
Color::RED
});
});