Mercurial > tablet-emu
diff src/main.rs @ 4:2e074d185151
Simplify tool buttons.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Fri, 09 Oct 2020 16:13:25 +0200 |
parents | 72e63d6a3f8a |
children | cdbf3a2c9af8 |
line wrap: on
line diff
--- a/src/main.rs +++ b/src/main.rs @@ -239,16 +239,11 @@ fn build_ui(application: >k::Applicati let hbox = gtk::Box::new(gtk::Orientation::Horizontal, 0); let tools_box = gtk::Box::new(gtk::Orientation::Vertical, 0); - let tool1 = gtk::Button::with_label("Pen"); - let tool2 = gtk::Button::with_label("Rubber"); - let tool3 = gtk::Button::with_label("Brush"); - let tool4 = gtk::Button::with_label("Pencil"); - let tool5 = gtk::Button::with_label("Airbrush"); - - macro_rules! impl_tool_signal { - ($tool:ident) => { + macro_rules! impl_tool { + ($tool:tt) => { + let tool = gtk::Button::with_label($tool); let state_weak = Arc::downgrade(&state); - $tool.connect_clicked(move |b| { + tool.connect_clicked(move |b| { let state = state_weak.upgrade().unwrap(); let mut state = state.lock().unwrap(); state.selected_tool = match b.get_label().unwrap().as_str() { @@ -260,19 +255,14 @@ fn build_ui(application: >k::Applicati _ => unreachable!(), }; }); + tools_box.add(&tool); }; }; - impl_tool_signal!(tool1); - impl_tool_signal!(tool2); - impl_tool_signal!(tool3); - impl_tool_signal!(tool4); - impl_tool_signal!(tool5); - - tools_box.add(&tool1); - tools_box.add(&tool2); - tools_box.add(&tool3); - tools_box.add(&tool4); - tools_box.add(&tool5); + impl_tool!("Pen"); + impl_tool!("Rubber"); + impl_tool!("Brush"); + impl_tool!("Pencil"); + impl_tool!("Airbrush"); let drawing_area = gtk::DrawingArea::new(); drawing_area.set_size_request(WIDTH, HEIGHT);