Hello,

*Overview*
I am attempting to control ParaView v3.14.1 with something other than a
mouse and keyboard. I don't know how to do this - I've taken some wild
guesses and bits 'n' pieces have started to work. I could really use some
help from someone that knows the inner-workings though.

*What I'd Like to Happen*
I have an class, foo, with some events and callbacks of its own. Foo is not
related to ParaView in any way other than foo needs to make ParaView do
stuff as it sees fit. In the callbacks, I'd like to do things like zoom,
pan and rotate. Eventually I'd like foo to be able add filters and such
too, but that's a long way down the road.

*What I've Tried*
foo has 3 events similar to OnButtonDown, OnMouseMove, and OnButtonUp. I
figure, why not just call these methods (within vtkPVInteractorStyle) from
foo? This is what I've been trying.
I have made foo a friend of vtkPVInteractorStyle. I've created a global
pointer variable, g_pInteractorStyle, which points to vtkPVInteractorStyle.
I've created a mutator and two integer variables - m_x and m_y - within foo
to hold mouse coordinates. Any time that GetEventPosition()[0/1] is called,
I save those values to local variables - x and y - and pass them into foo's
mutator. This way, any time a real mouse is used, foo gets updated
coordinates. This also now gives me starting points to pass into
OnMouseMove.
>From foo I first call g_pInteractorStyle->OnButtonDown(3, 0, 0). Ideally,
this will initiate zoom, which it seems to.
Following that, I make a series of calls following the pattern:
g_pInteractorStyle->Current->OnMouseMove(m_x, m_y + *offset*,
g_pInteractorStyle->CurrentRenderer, g_pInteractorStyle->Interactor), where
*offset* is some integer value from -49 to 49 and neither m_x or m_y change
during the series of calls.
Finally, I call g_pInteractorStyle->OnButtonup(3).

I have also commented out one line each from OnButonDown and OnButtonUp:
this->InvokeEvent(vtkCommand::[Start/End]InteractionEvent). With these two
lines in place, OnButtonUp causes a crash. Without these lines in place
(when they're commented out), ParaView acts just fine. I know this is NOT a
good fix and I'm open to other suggestions, but it (this aspect) seems to
be working at the moment.

I've also tried looking into the QT libraries and moving the cursor via QT.
Unfortunately, I've been unable to find the right cursor because nothing
I've done has had any effect on the cursor I'm staring at (tried setPos()
and setShape()).

*The Problem*
OnMouseMove() has caused problem after problem. In our current setup
OnButtonDown(3, 0, 0) works great. OnMouseMove() kills paraview when it
reaches vtkPVRenderView::Render() called from somewhere within
vtkPVGenericRenderWindowInteractor. In a weak attempt to "fix" the problem,
I tried commenting out this Render() call. Nothing too major seemed to
break except that I'm blind as i try to zoom until I release the mouse
button (tests were done using the mouse at first). In other words:
Everything still working, but no rendering during zoom - only renders upon
releasing the mouse. I now try it with foo, and it acts as though
OnButtonUp(3) was never called - the whole foo routine finishes then I use
the mouse and click somewhere to start a new interaction, and it zooms to
wherever it should have zoomed when it finished foo's routines.

So two options: I can either let it die every time it tries to render, or
hold off rendering until I finish "moving the mouse" and then still be
required to click the mouse somewhere when I'm finished.

This is broken. And something tells me I'm going about this in a very wrong
fashion. How should I be doing this?

Thanks,
David Zemon
Computer
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to