# HG changeset patch # User Emmanuel Gil Peyrot # Date 1602252805 -7200 # Node ID 2e074d185151a5f0f59a945315c604aaa779c302 # Parent 72e63d6a3f8a67ae760146941a0bf06ab7e13138 Simplify tool buttons. diff --git a/src/main.rs b/src/main.rs --- 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);