diff options
author | 2019-09-05 09:37:54 +0200 | |
---|---|---|
committer | 2019-09-05 09:37:54 +0200 | |
commit | b81ab91e671c4dc65567e6c68a205eecd7f87f32 (patch) | |
tree | 119973d3f6675b373082070b2e113e3ab35d4ebb /examples/tour | |
parent | ced3ffc22570048711fefba638782a31d0e06035 (diff) | |
download | iced-b81ab91e671c4dc65567e6c68a205eecd7f87f32.tar.gz iced-b81ab91e671c4dc65567e6c68a205eecd7f87f32.tar.bz2 iced-b81ab91e671c4dc65567e6c68a205eecd7f87f32.zip |
Complete examples `README`
Diffstat (limited to 'examples/tour')
-rw-r--r-- | examples/tour/README.md | 35 | ||||
-rw-r--r-- | examples/tour/main.rs | 10 | ||||
-rw-r--r-- | examples/tour/tour.rs | 12 |
3 files changed, 46 insertions, 11 deletions
diff --git a/examples/tour/README.md b/examples/tour/README.md new file mode 100644 index 00000000..0e9d6eda --- /dev/null +++ b/examples/tour/README.md @@ -0,0 +1,35 @@ +# Tour + +A simple UI tour showcasing different widgets that can be built using Iced. It +also shows how the library can be integrated into an existing system. + +The example is built on top of [`ggez`], a game library for Rust. Currently, it +is using a [personal fork] to [add a `FontCache` type] and +[fix some issues with HiDPI]. + +The implementation consists of different modules: + - __[`tour`]__ contains the actual GUI code: __state__, __messages__, + __update logic__ and __view logic__. + - __[`renderer`]__ implements a simple renderer for each of the used widgets on + top of the graphics module of [`ggez`]. + - __[`widget`]__ re-exposes Iced's built-in widgets with the renderer type parameter + replaced with the implemented [`renderer`], for convenience. + - __[`main`]__ integrates Iced with [`ggez`] and connects the [`tour`] with + the [`renderer`]. + +``` +cargo run --example tour +``` + +[![Tour - Iced][gui_gif]][gui_gfycat] + +[`ggez`]: https://github.com/ggez/ggez +[`tour`]: tour/tour.rs +[`renderer`]: tour/renderer +[`widget`]: tour/widget.rs +[`main`]: tour/main.rs +[personal fork]: https://github.com/hecrj/ggez +[add a `FontCache` type]: https://github.com/ggez/ggez/pull/679 +[fix some issues with HiDPI]: https://github.com/hecrj/ggez/commit/dfe2fd2423c51a6daf42c75f66dfaeaacd439fb1 +[gui_gif]: https://thumbs.gfycat.com/VeneratedSourAurochs-small.gif +[gui_gfycat]: https://gfycat.com/veneratedsouraurochs diff --git a/examples/tour/main.rs b/examples/tour/main.rs index 0a6a2005..901a976a 100644 --- a/examples/tour/main.rs +++ b/examples/tour/main.rs @@ -16,8 +16,8 @@ pub fn main() -> ggez::GameResult { let (context, event_loop) = { &mut ggez::ContextBuilder::new("iced", "ggez") .window_mode(ggez::conf::WindowMode { - width: 850.0, - height: 850.0, + width: 1280.0, + height: 1024.0, ..ggez::conf::WindowMode::default() }) .build()? @@ -133,14 +133,14 @@ impl event::EventHandler for Game { let screen = graphics::screen_coordinates(context); let (messages, cursor) = { - let layout = self.tour.layout(); + let view = self.tour.view(); let content = Column::new() .width(screen.w as u16) .height(screen.h as u16) .align_items(iced::Align::Center) .justify_content(iced::Justify::Center) - .push(layout); + .push(view); let renderer = &mut Renderer::new( context, @@ -165,7 +165,7 @@ impl event::EventHandler for Game { }; for message in messages { - self.tour.react(message); + self.tour.update(message); } mouse::set_cursor_type(context, into_cursor_type(cursor)); diff --git a/examples/tour/tour.rs b/examples/tour/tour.rs index c2126675..d0be99b0 100644 --- a/examples/tour/tour.rs +++ b/examples/tour/tour.rs @@ -24,7 +24,7 @@ impl Tour { } } - pub fn react(&mut self, event: Message) { + pub fn update(&mut self, event: Message) { match event { Message::BackPressed => { self.steps.go_back(); @@ -38,7 +38,7 @@ impl Tour { } } - pub fn layout(&mut self) -> Element<Message> { + pub fn view(&mut self) -> Element<Message> { let Tour { steps, back_button, @@ -67,7 +67,7 @@ impl Tour { let element: Element<_> = Column::new() .max_width(500) .spacing(20) - .push(steps.layout(self.debug).map(Message::StepMessage)) + .push(steps.view(self.debug).map(Message::StepMessage)) .push(controls) .into(); @@ -136,8 +136,8 @@ impl Steps { self.steps[self.current].update(msg, debug); } - fn layout(&mut self, debug: bool) -> Element<StepMessage> { - self.steps[self.current].layout(debug) + fn view(&mut self, debug: bool) -> Element<StepMessage> { + self.steps[self.current].view(debug) } fn advance(&mut self) { @@ -262,7 +262,7 @@ impl<'a> Step { } } - fn layout(&mut self, debug: bool) -> Element<StepMessage> { + fn view(&mut self, debug: bool) -> Element<StepMessage> { match self { Step::Welcome => Self::welcome().into(), Step::Radio { selection } => Self::radio(*selection).into(), |