Info

This question is closed. Reopen it to edit or answer.

How to switch between two buttons with callbacks being impoly and imellipse respectively

1 view (last 30 days)
I created two toggle buttons in a figure, one button's callback is impoly and another one is imellipse. I click the impoly button and then the imellipse button. The ideal is that the impoly callback is cancelled and the imellipse is implementing. But how to do that? Usually what I do is to have the third botton to fire an 'ESC' to cancel the clicked button and then move to the button wanted, which is not an elegant way. I tried to debug the matlab's switch between 'zoomin' and 'zoomout'. It seems the switch is dealed within its built-in functions.
Thank you!
  2 Comments
Jun Li
Jun Li on 29 May 2013
I think it could be a bug or unsolved issue for MATLAB. The error is 'Error while evaluating figure WindowButtonMotionFcn'. Again I guess is that some context isn't saved when the first callback is interrupted by the second. This includes the callback of WindowButtonMotionFcn. I think this link (<http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/148650>) could be a similiar question.
Jun Li
Jun Li on 30 May 2013
And I cannot play around with the 'Interruptible' and 'BusyAction', as I believe that the impoly and imellipse use 'drawnow' and 'uiwait'. I suggest the Mathworks should properly design their interruption and callbacks mechanism.

Answers (2)

Image Analyst
Image Analyst on 28 May 2013
Why can't you just issue the escape immediately upon entering the callback? Even if you're not in the middle of drawing something are there any bad side effects of issuing an unnecessary escape?
  2 Comments
Jun Li
Jun Li on 29 May 2013
It doesn't work. I guess because it's 'a callback in a callback', the matlab does not allow to cancel the previous callback, otherwise the current callback will not be able to find the return interrupt piont.
Image Analyst
Image Analyst on 29 May 2013
Call the Mathworks or ask Yair. But what I'd do is to disable the two buttons and just throw up some text with instructions that say to right click or type escape to abort. Then when your code continues, you can recognize that they aborted because the coordinates will not be right, and then you enable the two buttons again.

Kevin
Kevin on 16 Sep 2014
Edited: Kevin on 16 Sep 2014
Somebody was able to solve this problem? Thank you so much in advance!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!