New Object View: Difference between revisions

From ParaQ Wiki
Jump to navigationJump to search
mNo edit summary
Line 12: Line 12:


=== Place the new object in the currently selected view, if possible ===
=== Place the new object in the currently selected view, if possible ===
This rule is a no-brainer.  One of the views in the GUI is always selected as the "active" view.  It is the view that most of the GUI components follow and where activity is supposed to take place.  It would be very confusing indeed if new objects did not go into this view.
Despite the obvious nature of this rule, there are some caveats that need to be addressed.
==== Hiding filter inputs ====
It is the behavior of many filters to turn off the visibility of their input so that the new object may be seen.  We should certainly follow this behavior, but we should be careful to ensure that the visibility of the input is ''not'' turned off in any other view.  For example, consider the following ParaView 3 screenshot with two views both showing the same object.  The view on the left is the active view.
[[Image:InputVisibilityBefore.png|600px]]
Now, if we were to add a clip filter, the clip filter geometry should be added to the left view and the visibility of the input should be removed from the left view.  The right view should be left alone.  (Note that this does not currently work like it should.)
[[Image:InputVisibilityAfter.png|600px]]
==== Input not visible in active window ====
We should get the same logical behavior even if the active view does not have the input visible (but another view might).  Consider the previous example, except that the active (left) window does not show the data that we are filtering.
[[Image:FilterNoVisInputBefore.png|600px]]
When the filter completes, the active view shows the filtered data along with any other data it might have been viewing.  Again, any other views remain untouched.
[[Image:FilterNoVisInputAfter.png|600px]]


=== Place the new object in an empty view frame, if available ===
=== Place the new object in an empty view frame, if available ===

Revision as of 18:10, 10 October 2006

When we create a new source or filter with ParaView, we obviously want to see the object once we hit accept. With ParaView 2, there was no question as to where to put the result since there was only one place to put it. With the introduction of multiple views in ParaView 3, the appropriate view to display the pipeline object's data becomes ambiguous. ParaView 3 also supports multiple types of views, further complicating the decision making processes. Currently, the process for creating a plot from a 3D object is to create the filter, then divide up the view, then assign the view type to the new view area, then finally add the new pipeline object to the view. Although explicit, that is far too many steps to establish a new plot.

Without a user mind reading device, which is not on the current feature list of ParaView 3.0, it is impossible to always accurately predict the desired behavior of the user. We must realize that, no matter what decision making processes we use, ParaView will make mistakes. With that in mind, we have two major criteria for the process of placing new objects. First, the processes should be simple. There should be few rules to the process and the rules should be intuitive (or at least make sense). Second, the result should be easy to "fix" if ParaView makes the wrong decision.

Immediately below is the proposed set of rules for placing new pipeline objects in views. The rules are to be traversed in order until an applicable one is reached. At that time the rule is applied and the process ends. Note that although the motivation for this discussion was for placing plot-type objects, these rules are designed to be generic enough for any object type.

  1. #Place the new object in the currently selected view, if possible
  2. #Place the new object in an empty view frame, if available
  3. #Split the currently selected view and use the new view

The following sections are more detailed explanations of the rules as well as discussions of the ramifications and motivations for each.

Place the new object in the currently selected view, if possible

This rule is a no-brainer. One of the views in the GUI is always selected as the "active" view. It is the view that most of the GUI components follow and where activity is supposed to take place. It would be very confusing indeed if new objects did not go into this view.

Despite the obvious nature of this rule, there are some caveats that need to be addressed.

Hiding filter inputs

It is the behavior of many filters to turn off the visibility of their input so that the new object may be seen. We should certainly follow this behavior, but we should be careful to ensure that the visibility of the input is not turned off in any other view. For example, consider the following ParaView 3 screenshot with two views both showing the same object. The view on the left is the active view.

InputVisibilityBefore.png

Now, if we were to add a clip filter, the clip filter geometry should be added to the left view and the visibility of the input should be removed from the left view. The right view should be left alone. (Note that this does not currently work like it should.)

InputVisibilityAfter.png

Input not visible in active window

We should get the same logical behavior even if the active view does not have the input visible (but another view might). Consider the previous example, except that the active (left) window does not show the data that we are filtering.

FilterNoVisInputBefore.png

When the filter completes, the active view shows the filtered data along with any other data it might have been viewing. Again, any other views remain untouched.

FilterNoVisInputAfter.png

Place the new object in an empty view frame, if available

If the current view is empty, use that

Do a depth first search, starting with the upper left

Split the currently selected view and use the new view