# Is there any callback for the mouse click when adding a new markup?

**URL:** https://discourse.slicer.org/t/is-there-any-callback-for-the-mouse-click-when-adding-a-new-markup/25695
**Category:** Development
**Created:** [October 14, 2022, 12:09am UTC](https://discourse.slicer.org/t/is-there-any-callback-for-the-mouse-click-when-adding-a-new-markup/25695 "2022-10-14T00:09:49Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Eduardo\_Fares](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/eduardo_fares/32/15908_2.png) [@Eduardo\_Fares](https://discourse.slicer.org/u/Eduardo_Fares)
#### Post date: [October 14, 2022, 12:09am UTC](https://discourse.slicer.org/t/is-there-any-callback-for-the-mouse-click-when-adding-a-new-markup/25695/1 "2022-10-14T00:09:49Z")

</div>

Hello, I am developing a new application for 3D Slicer, however I cannot find a resolution to my problem. I am running a way to add control points via mouse click, the way I found in the repository script.

```python
selectionNode = slicer.mrmlScene.GetNodeByID("vtkMRMLSelectionNodeSingleton")
selectionNode.SetReferenceActivePlaceNodeClassName("vtkMRMLMarkupsFiducialNode")
interactionNode = slicer.mrmlScene.GetNodeByID("vtkMRMLInteractionNodeSingleton")
placeModePersistence = 1
interactionNode.SetPlaceModePersistence(placeModePersistence)
# mode 1 is Place, can also be accessed via slicer.vtkMRMLInteractionNode().Place
interactionNode.SetCurrentInteractionMode(1)

```

Would it be possible to associate some callback for when a new control point is added?  
Thank you all for your attention.

---

<div class="post-metadata">

### Author: ![jamesobutler](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jamesobutler/32/7511_2.png) [@jamesobutler](https://discourse.slicer.org/u/jamesobutler)
#### Post date: [October 14, 2022, 12:19am UTC](https://discourse.slicer.org/t/is-there-any-callback-for-the-mouse-click-when-adding-a-new-markup/25695/2 "2022-10-14T00:19:50Z")

</div>

I think you’re looking for the PointPositionDefinedEvent. `slicer.vtkMRMLMarkupsNode.PointPositionDefinedEvent`

[https://apidocs.slicer.org/main/classvtkMRMLMarkupsNode.html#aceeef8806df28e3807988c38510e56caaf1067cd7bcb1bd0992112b22daf219d5](https://apidocs.slicer.org/main/classvtkMRMLMarkupsNode.html#aceeef8806df28e3807988c38510e56caaf1067cd7bcb1bd0992112b22daf219d5)

---

<div class="post-metadata">

### Author: ![Eduardo\_Fares](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/eduardo_fares/32/15908_2.png) [@Eduardo\_Fares](https://discourse.slicer.org/u/Eduardo_Fares)
#### Post date: [October 14, 2022, 2:05pm UTC](https://discourse.slicer.org/t/is-there-any-callback-for-the-mouse-click-when-adding-a-new-markup/25695/3 "2022-10-14T14:05:43Z")

</div>

> [@jamesobutler](#):
>
> slicer.vtkMRMLMarkupsNode.PointPositionDefinedEvent

It’s worked, thank you!!  
I made a new function:

```auto
def AddNewMarkup(self, caller, event):
        markupsNode = caller
        sliceView = markupsNode.GetAttribute("Markups.PointPositionDefinedEvent")
        movingMarkupIndex = markupsNode.GetDisplayNode().GetActiveControlPoint()
        addingMarkup = slicer.vtkMRMLMarkupsNode.PointAddedEvent 
        if addingMarkup >= 0:
            newMarkup = f"fiducial_{movingMarkupIndex+1}"
            self.mMarkupid.addItem(newMarkup)
            self.mMarkupid.setCurrentIndex(movingMarkupIndex)
        else:
            self.interactionNode.SetCurrentInteractionMode(0)

```

and I call it by:  
`self.tnode.AddObserver(slicer.vtkMRMLMarkupsNode.PointPositionDefinedEvent, self.AddNewMarkup)`
