def canvas_event(item, event)
case event.event_type
when Gdk::Event::BUTTON_PRESS
return false if event.button != 1
case @current_state
when STATE_INIT
draw_curve(item, event.x, event.y)
@current_state = STATE_FIRST_PRESS
when STATE_FIRST_RELEASE
draw_curve(item, event.x, event.y)
@current_state = STATE_SECOND_PRESS
when STATE_SECOND_PRESS
draw_curve(item, event.x, event.y)
@current_state = STATE_INIT
else
raise format("shouldn't have reached here %d", @current_state)
end
when Gdk::Event::BUTTON_RELEASE
return false if event.button != 1
case @current_state
when STATE_FIRST_PRESS
draw_curve(item, event.x, event.y)
@current_state = STATE_FIRST_RELEASE
end
when Gdk::Event::MOTION_NOTIFY
case @current_state
when STATE_FIRST_PRESS
draw_curve(item, event.x, event.y)
end
end
false
end