Skip to content

Create ruler and camera project reactions

Nick Laurenson requested to merge MoveRulerToCPP into master

Add Ruler and Camera Projection reaction. This function are similar to those implmented previously in applogic except:

  • The ruler has the possibility to measure distance between 3D points as illustrated bellow.

Previous MR description (for documentation purpose only):

Implement the camera projection and ruler functionality as reactions.

The feature were previously implemented in python in applogic (removed by lidarview!34 (closed)). But this has some drawback:

  • code duplication
  • button could be out of sync with the real view state, as the code wasn't relying on signals.
  • code coupling, as the buttons and ruler needed to be enabled/disabled and show/hide at different place to try to guaranty that they are synchronized with the view

@nicolas.cadart @melanie.carriere PTAL.

If you are new to the concept of behaviors and reactions, you can find some information here.

The new architecture pivots around two new concepts:

Reactions: these are action handlers. They implement logic to handle the triggering of an action. They also implement logic to keep the enable state for the action update-to-date based on current application state. eg. pqLoadStateReaction -- reaction of load state action, which encapsulates ParaView's response for load state action. Reactions require the QAction to which they are reacting to. Any custom user interface that wants a QAction to be behave exactly like Paraview's, simply instantiates the reaction for it and that's it! The rest it managed by the reaction.

Behaviors - these are abstract application behaviors eg. ParaView always remains connected to a server (builtin by default). This gets encapsulated into pqAlwaysConnectedBehavior. If any custom application wants to a particular behavior, simply instantiates the corresponding behavior!

Edited by Nick Laurenson

Merge request reports