How to add a callback function to mouse-click event inside a Simulink model but outside any block or line?

11 views (last 30 days)
HI, I am creating a plugin tool for Simulink to help users during model development. When creating their Simulink model in Simulink workspace/window, whenever the user clicks somewhere inside the simulink workspace (but outside any block or line), I need to execute a callback function. How do I do this?
PS. I was able to add callback functions to blocks (by temporarily overriding their 'openfcn' function). I need something simillar so that I can execute a callback function when the user clicks outside of any block, but still inside the simulink workspace.
I NEED TO CALL THE CALLBACK FUNCTION WHEN CREATING THE SIMULINK MODEL, NOT WHILE RUNNING A SIMULATION.
Thank you!
  3 Comments
Bhisma Adhikari
Bhisma Adhikari on 18 Aug 2020
Hi Stozaki,
Thank you very much for your solution. For my intended use, this solution is not "best" though, because adding a contenxt menu option would make that added option always available (which is not something I want). I could circumvent this by dynamically editing and reloading sl_customization.m file during runtime to add/remove that option, but as I see, executing sl_refresh_customizations takes several seconds (something I cannot afford for my application).
If you could provide me a way to "intercept" mouse click events inside the simulink workspace (not inside a figure window), that would be very helpful.
stozaki
stozaki on 19 Aug 2020
Hello Bhisma,
If you use a left click on the Simulink canvas, the Quick Block Insert function will work.
The following is a workaround, but using the annotation's click function seems to work. Can you apply this?
I attached a simple model.
Regards,
stozaki

Sign in to comment.

Accepted Answer

Bhisma Adhikari
Bhisma Adhikari on 19 Aug 2020
Hi Stozaki,
Thank you very much for your solution! I appreciate your efforts to create testmodel.slx.
Actually, I was looking for a way just to capture the mouse click event on the Simulink canvas (blank area), not in a particular block/line/annotation, so that I can trigger some function. Perhaps, Simulink does not allow this (I don't know).
Your solution still requires creating an annotation element, which is not the best solution to my use-case, but is something I can settle with.
Thank you very much!

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!