#[macro_use] extern crate conrod;
extern crate find_folder;
extern crate piston_window;
use piston_window::{EventLoop, PistonWindow, UpdateEvent, WindowSettings};
fn main() {
const WIDTH: u32 = 600;
const HEIGHT: u32 = 300;
let mut window: PistonWindow =
WindowSettings::new("FileNavigator Demo", [WIDTH, HEIGHT])
.opengl(piston_window::OpenGL::V3_2)
.vsync(true)
.samples(4)
.exit_on_esc(true)
.build()
.unwrap();
window.set_ups(60);
let mut ui = conrod::Ui::new(conrod::Theme::default());
let assets = find_folder::Search::KidsThenParents(3, 5).for_folder("assets").unwrap();
let font_path = assets.join("fonts/NotoSans/NotoSans-Regular.ttf");
ui.fonts.insert_from_file(font_path).unwrap();
let mut text_texture_cache =
conrod::backend::piston_window::GlyphCache::new(&mut window, WIDTH, HEIGHT);
let image_map = conrod::image::Map::new();
let conrod_directory = find_folder::Search::KidsThenParents(3, 5).for_folder("conrod").unwrap();
while let Some(event) = window.next() {
if let Some(e) = conrod::backend::piston_window::convert_event(event.clone(), &window) {
ui.handle_event(e);
}
event.update(|_| {
ui.set_widgets(|ref mut ui| {
use conrod::{Canvas, Colorable, FileNavigator, Positionable, Sizeable, Widget};
widget_ids!(CANVAS, FILE_NAVIGATOR);
Canvas::new().color(conrod::color::DARK_CHARCOAL).set(CANVAS, ui);
FileNavigator::with_extension(&conrod_directory, &["rs", "toml"])
.color(conrod::color::LIGHT_BLUE)
.font_size(16)
.wh_of(CANVAS)
.middle_of(CANVAS)
.react(|event| println!("{:?}", &event))
.set(FILE_NAVIGATOR, ui);
});
});
window.draw_2d(&event, |c, g| {
if let Some(primitives) = ui.draw_if_changed(&image_map) {
fn texture_from_image<T>(img: &T) -> &T { img };
conrod::backend::piston_window::draw(c, g, primitives,
&mut text_texture_cache,
texture_from_image);
}
});
}
}