+
+//=================================================================================
+// function : getSourceObjects
+// purpose : virtual method to get source objects
+//=================================================================================
+QList<GEOM::GeomObjPtr> EntityGUI_PolylineDlg::getSourceObjects()
+{
+ return myWPlaneList;
+}
+
+//=================================================================================
+// function : setPreviewManager ( OCCViewer_ViewManager )
+// purpose : Sets view manager to control the displayed objects.
+//=================================================================================
+void EntityGUI_PolylineDlg::setPreviewManager( OCCViewer_ViewManager* theManager )
+{
+ myPreviewManager = theManager;
+
+ if ( getPreviewManager() )
+ {
+ if( OCCViewer_Viewer* aViewer = getPreviewManager()->getOCCViewer() )
+ {
+ Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext();
+ if( !aCtx.IsNull() )
+ {
+ // Add Z layer to show temporary objects
+ int aZLayer = -1;
+ aViewer->getViewer3d()->AddZLayer( aZLayer );
+ setPreviewZLayer( aZLayer );
+ }
+ }
+ }
+}
+
+//=================================================================================
+// function : getPreviewManager()
+// purpose :
+//=================================================================================
+OCCViewer_ViewManager* EntityGUI_PolylineDlg::getPreviewManager()
+{
+ return myPreviewManager;
+}
+
+//=================================================================================
+// function : setPreviewZLayer( theZLayer )
+// purpose : Sets Z layer to show temporary objects.
+//=================================================================================
+void EntityGUI_PolylineDlg::setPreviewZLayer( int theZLayer )
+{
+ if ( theZLayer != myPreviewZLayer )
+ myPreviewZLayer = theZLayer;
+}
+
+//=================================================================================
+// function : getPreviewZLayer()
+// purpose :
+//=================================================================================
+int EntityGUI_PolylineDlg::getPreviewZLayer() const
+{
+ return myPreviewZLayer;
+}
+
+//=================================================================================
+// function : displayPreview()
+// purpose :
+//=================================================================================
+void EntityGUI_PolylineDlg::displayPreview()
+{
+ if ( getPreviewManager() )
+ {
+ if ( OCCViewer_Viewer* aViewer = getPreviewManager()->getOCCViewer() )
+ {
+ // Disable changing of OCCViewer's selection to use vertex of curve selection
+ disconnect(getPreviewManager(), SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)),
+ aViewer, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
+
+ Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext();
+ if ( !aCtx.IsNull() )
+ {
+ CurveCreator_Displayer* aDisplayer = new CurveCreator_Displayer( aCtx, getPreviewZLayer() );
+ myCurve->setDisplayer( aDisplayer );
+
+ Handle(AIS_InteractiveObject) anAISObj = myCurve->getAISObject( true );
+ aDisplayer->display( anAISObj, true );
+
+ // Set color for temporary AIS_InteractiveObject
+ anAISObj->Attributes()->WireAspect()->SetColor( Quantity_NOC_VIOLET );
+ aCtx->Redisplay( anAISObj );
+ }
+ }
+ }
+}
+
+//=================================================================================
+// function : erasePreview()
+// purpose :
+//=================================================================================
+void EntityGUI_PolylineDlg::erasePreview()
+{
+ CurveCreator_Displayer* aDisplayer = myCurve ? myCurve->getDisplayer() : 0;
+ if( getPreviewManager() )
+ {
+ if( OCCViewer_Viewer* aViewer = getPreviewManager()->getOCCViewer() )
+ {
+ Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext();
+ if( !aCtx.IsNull() && aDisplayer )
+ aDisplayer->eraseAll( true );
+
+ // Enable changing of OCCViewer's selection
+ connect(getPreviewManager(), SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)),
+ aViewer, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
+ }
+ }
+
+ setPreviewManager( NULL );
+ if ( myCurve )
+ {
+ delete myCurve;
+ myCurve = NULL;
+ }
+}
+
+//=================================================================================
+// function : isCheckToSelect()
+// purpose :
+//=================================================================================
+bool EntityGUI_PolylineDlg::isCheckToSelect()
+{
+#ifdef SET_PLANE
+ return myPlnSelButton->isChecked();
+#endif
+ return myPolylineSelButton->isChecked();
+}