<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2016-06-16 15:52 GMT+02:00 Elvis Stansvik <span dir="ltr"><<a href="mailto:elvis.stansvik@orexplore.com" target="_blank">elvis.stansvik@orexplore.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div>The MouseEvents.py example [1] currently does:<br><br>class MyInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):<br> <br>    def __init__(self,parent=None):<br>        self.AddObserver("MiddleButtonPressEvent",self.middleButtonPressEvent)<br>        self.AddObserver("MiddleButtonReleaseEvent",self.middleButtonReleaseEvent)<br> <br>    def middleButtonPressEvent(self,obj,event):<br>        print("Middle Button pressed")<br>        self.OnMiddleButtonDown()<br>        return<br> <br>    def middleButtonReleaseEvent(self,obj,event):<br>        print("Middle Button released")<br>        self.OnMiddleButtonUp()<br>        return<br><br>But I don't understand the reason for calling e.g. self.OnMiddleButtonDown() ? Since this is not an override of a virtual function (which is not possible in Python), but simply adding another observer, I don't think it is needed? (..and I would think it would mean OnMiddleButtonDown is called twice, right?).<br></div></div></div></div></div></blockquote><div><br></div><div>Sorry, I realize I wasn't really clear here: What I mean is that, if the interactor style above is used, the behavior of vtkInteractorStyleTrackballCamera (the base class) will still be there, even if the call to self.OnMiddleButtonDown() is removed, since the base class will observe the interactor. That's why I don't understand the need for the self.OnMiddleButtonDown() call in the example.<br><br></div><div>This ties in to my other question (another mail), since what I want to do is to actually override the behavior of the base interactor style (similar to how you can in C++, but I need to find some other mechanism to do so, overriding of virtual functions won't work from Python).<br><br></div><div>Elvis<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><br></div>This leads me to another question: What if I really do want to override the behavior that the parent interactor style provides (or modify it by manipulating the event), what are my options?<br><br></div>I saw at<br><br>    <a href="http://www.vtk.org/Wiki/VTK/Examples/Python/Interaction/MouseEventsObserver" target="_blank">http://www.vtk.org/Wiki/VTK/Examples/Python/Interaction/MouseEventsObserver</a><br><br></div>that you can remove all observers of an event from the interactor, but that seems like quite a hack :/ In my case, I'm interested in locking the camera rotation to a certain axis, but perhaps a custom interactor style is not the way to go?<br><br></div>Elvis<br><div><div><div><div><div><div><div><div><br>[1] <a href="http://www.vtk.org/Wiki/VTK/Examples/Python/Interaction/MouseEvents" target="_blank">http://www.vtk.org/Wiki/VTK/Examples/Python/Interaction/MouseEvents</a><br></div></div></div></div></div></div></div></div></div>
</blockquote></div><br></div></div>