SMTK  @SMTK_VERSION@
Simulation Modeling Tool Kit
Public Member Functions | Static Public Member Functions | Protected Types | Protected Slots | Protected Member Functions | List of all members
pqSMTKBoxItemWidget Class Reference

Display a 3-D box with draggable handles for editing a DoubleItem. More...

#include <pqSMTKBoxItemWidget.h>

Inheritance diagram for pqSMTKBoxItemWidget:
[legend]
Collaboration diagram for pqSMTKBoxItemWidget:
[legend]

Public Member Functions

 pqSMTKBoxItemWidget (const smtk::extension::qtAttributeItemInfo &info, Qt::Orientation orient=Qt::Horizontal)
 
bool createProxyAndWidget (vtkSMProxy *&proxy, pqInteractivePropertyWidget *&widget) override
 Subclasses must override this method to create the ParaView widget of their choice.
 
- Public Member Functions inherited from pqSMTKAttributeItemWidget
void markForDeletion () override
 Indicates that the item should be deleted. More...
 
 pqSMTKAttributeItemWidget (const qtAttributeItemInfo &info, Qt::Orientation orient=Qt::Horizontal)
 
 pqSMTKAttributeItemWidget (smtk::attribute::ItemPtr, QWidget *p, smtk::extension::qtBaseView *bview, Qt::Orientation orient=Qt::Horizontal)
 
pqInteractivePropertyWidget * propertyWidget ()
 
- Public Member Functions inherited from smtk::extension::qtItem
 qtItem (const qtAttributeItemInfo &info)
 
smtk::attribute::ItemPtr item () const
 
template<typename ItemType >
std::shared_ptr< ItemType > itemAs () const
 
qtUIManageruiManager () const
 
smtk::attribute::ResourcePtr attributeResource () const
 Return the underlying Attribute Resource.
 
QPointer< QWidget > widget ()
 
QPointer< QWidget > parentWidget ()
 
bool isLeafItem ()
 
virtual void setLabelVisible (bool)
 
virtual bool isFixedWidth () const
 
void showAdvanceLevelOverlay (bool)
 
bool useSelectionManager () const
 
void setReadOnly (bool mode)
 
bool isReadOnly () const
 
virtual QWidget * lastEditor () const
 Returns editor widget, used when setting tab order.
 
virtual void updateTabOrder (QWidget *)
 Sets previous widget for tabbing order.
 

Static Public Member Functions

static qtItemcreateBoxItemWidget (const qtAttributeItemInfo &info)
 
- Static Public Member Functions inherited from pqSMTKAttributeItemWidget
static OverrideWhen OverrideWhenConvert (const std::string &str)
 
static std::string OverrideWhenConvert (OverrideWhen val)
 
static FallbackStrategy FallbackStrategyConvert (const std::string &str)
 
static std::string FallbackStrategyConvert (FallbackStrategy val)
 
static GeometrySource GeometrySourceConvert (const std::string &str)
 
static std::string GeometrySourceConvert (GeometrySource val)
 
static void setHideWidgetWhenInactive (bool val)
 Set visibility behavior of 3D widgets when Qt widget is inactive.
 
static bool hideWidgetWhenInactive ()
 

Protected Types

enum  ItemBindings {
  ItemBindings::AxisAlignedBounds, ItemBindings::AxisAlignedMinMax, ItemBindings::AxisAlignedCenterDeltas, ItemBindings::EulerAngleBounds,
  ItemBindings::EulerAngleMinMax, ItemBindings::EulerAngleCenterDeltas, ItemBindings::Invalid
}
 Describe how an attribute's items specify a bounding box. More...
 

Protected Slots

bool updateItemFromWidgetInternal () override
 Retrieve property values from ParaView proxy and store them in the attribute's Item.
 
bool updateWidgetFromItemInternal () override
 Retrieve property values from the attribute's Item and update the ParaView proxy.
 
- Protected Slots inherited from pqSMTKAttributeItemWidget
void updateItemData () override
 Create Qt widgets as required (may be called multiple times if Item is reconfigured).
 
virtual void ignoreWidgetValues ()
 
virtual void acceptWidgetValues ()
 
virtual bool updateItemFromWidgetInternal ()=0
 Update smtk::attribute::Item(s) from widget, returning true if changes were made.
 
virtual bool updateWidgetFromItemInternal ()=0
 Update proxy properties from smtk::attribute::Item(s), returning true if changes were made.
 
- Protected Slots inherited from smtk::extension::qtItem
virtual void onAdvanceLevelChanged (int levelIdx)
 
virtual void onChildWidgetSizeChanged ()
 

Protected Member Functions

bool fetchBoxItems (ItemBindings &binding, std::vector< smtk::attribute::DoubleItemPtr > &items, smtk::attribute::StringItemPtr &control)
 Starting with the widget's assigned item (which may be a GroupItem or a DoubleItem), determine and return bound items. More...
 
void setControlState (const std::string &controlState, QCheckBox *controlWidget)
 
- Protected Member Functions inherited from pqSMTKAttributeItemWidget
bool eventFilter (QObject *obj, QEvent *event) override
 An event filter that watches for the associated Qt widget to be hidden or shown. More...
 
virtual void update3DWidgetVisibility (bool visible)
 Hide 3-d widgets when the Qt widget is hidden, show the widget when the Qt widget reappears. More...
 
void createWidget () override
 Initialize Qt widgets used to represent our smtk::attribute::Item.
 
virtual void clearChildWidgets ()
 Remove existing widgets in order to prepare for reconfiguration. More...
 
virtual void updateUI ()
 Actually create widgets for whole of Item (label, editor, and conditional children).
 
virtual void createEditor ()
 Create the widget(s) that allow editing of the Item (as opposed to labels and conditional child widgets).
 
bool validateControlItem (const smtk::attribute::StringItemPtr &item)
 Subclasses may call this to validate that a string item is appropriate for controlling the interaction state of the widget (i.e., the possibly tri-state checkbox that ParaView's Qt widgets provide to control render-view widget visibility).
 
- Protected Member Functions inherited from smtk::extension::qtItem
virtual void setLocalAdvanceLevel (unsigned int level)
 
virtual void addChildItem (qtItem *)
 
virtual void removeChildItem (qtItem *)
 
virtual void clearChildItems ()
 
QList< qtItem * > & childItems ()
 

Additional Inherited Members

- Public Types inherited from pqSMTKAttributeItemWidget
enum  OverrideWhen { OverrideWhen::Unset, OverrideWhen::Never }
 Specify when the widget may override values in the item. More...
 
enum  FallbackStrategy { FallbackStrategy::Hide, FallbackStrategy::Force }
 Specify how to size/place a widget. More...
 
enum  GeometrySource {
  GeometrySource::Item, GeometrySource::Associations, GeometrySource::Links, GeometrySource::Scene,
  GeometrySource::BestGuess, GeometrySource::None
}
 Specify how to size/place a widget. More...
 
using qtItem = smtk::extension::qtItem
 
using qtAttributeItemInfo = smtk::extension::qtAttributeItemInfo
 
- Public Slots inherited from pqSMTKAttributeItemWidget
virtual void updateItemFromWidget ()
 
virtual void updateWidgetFromItem ()
 
void setOutputOptional (int optionEnabled)
 Change whether the item is enabled (and thus the widget active). More...
 
void renderViewEventually () const
 Cause the active view (in which the widget appears) to re-render.
 
- Public Slots inherited from smtk::extension::qtItem
virtual void updateItemData ()
 Tell the qtItem to update itself based on changes to its underlying attribute item.
 
- Signals inherited from smtk::extension::qtItem
void widgetSizeChanged ()
 Signal indicates that the underlying widget's size has been modified.
 
void modified ()
 Signal indicates that the underlying item has been modified.
 
void childModified (qtItem *item)
 Signal indicates that the child from the underlying item has been modified More...
 
void editingWidgetChanged ()
 Indicates editing widget changed. More...
 
- Protected Attributes inherited from pqSMTKAttributeItemWidget
Internalm_p
 
- Protected Attributes inherited from smtk::extension::qtItem
QPointer< QWidget > m_widget
 
bool m_isLeafItem
 
bool m_useSelectionManager
 
bool m_readOnly
 
bool m_markedForDeletion
 
qtAttributeItemInfo m_itemInfo
 
QList< smtk::extension::qtItem * > m_childItems
 

Detailed Description

Display a 3-D box with draggable handles for editing a DoubleItem.

For now, this code assumes that the DoubleItem has 6 entries and they are ordered (xmin, xmax, ymin, ymax, zmin, zmax). It also assumes the box must be axis-aligned (since there is no way to store rotations in addition to the 6 double values without getting fancy). In the future, other item types (such as a GroupItem holding children specifying corner points and rotations) may be supported.

Currently, there is no support to initialize the box coordinates; the item's values will be copied to the 3-D representation only if they exist and there is no default or if they are non-default. In the future, flags in the qtAttributeItemInfo may be used to determine a default box based on model geometry loaded into ParaView, as the underlying widget supports this.

Member Enumeration Documentation

◆ ItemBindings

enum pqSMTKBoxItemWidget::ItemBindings
strongprotected

Describe how an attribute's items specify a bounding box.

Enumerator
AxisAlignedBounds 

1 item with 6 values (xmin, xmax, ymin, ymax, zmin, zmax)

AxisAlignedMinMax 

2 items with 3 values each (xlo, ylo, zlo), (xhi, yhi, zhi)

AxisAlignedCenterDeltas 

2 items with 3 values each (xc, yc, zc), (dx, dy, dz)

EulerAngleBounds 

1 item with 6 values (min/max as above), 1 item with (roll, pitch, yaw)

EulerAngleMinMax 

3 items with 3 values each (xlo, ylo, zlo), (xhi, yhi, zhi), (roll, pitch, yaw)

EulerAngleCenterDeltas 

3 items with 3 values each (xc, yc, zc), (dx, dy, dz), (roll, pitch, yaw)

Invalid 

No consistent set of items detected.

Member Function Documentation

◆ fetchBoxItems()

bool pqSMTKBoxItemWidget::fetchBoxItems ( ItemBindings binding,
std::vector< smtk::attribute::DoubleItemPtr > &  items,
smtk::attribute::StringItemPtr control 
)
protected

Starting with the widget's assigned item (which may be a GroupItem or a DoubleItem), determine and return bound items.

If errors are encountered, this method returns false. If the name of a DoubleItem is provided, then the AxisAlignedBounds binding is assumed and that item is returned as the sole entry of \items. Otherwise, the named item must be a Group holding items called out as via one of the remaining valid ItemBindings enumerants.

Angles must be provided in degrees and are Tait-Bryan angles as used by VTK (i.e., rotations about y then x then z axes). These are similar to Euler angles and sometimes called as such. See https://en.wikipedia.org/wiki/Euler_angles#Intrinsic_rotations for more information. VTK uses the Y_1 X_2 Z_3 ordering.

Finally, the control parameter may be set to null or populated with a discrete-valued string item depending on whether the view configuration for the item specifies the name of an appropriate item. If non-null, the iteraction item will be tied to the "Show Box" checkbox of paraview's Qt widget. Its discrete values must be "active" and "inactive".


The documentation for this class was generated from the following files: