#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
#include "HYDROGUI_OCCDisplayer.h"
+#include "HYDROGUI_Shape.h"
#include <HYDROData_Document.h>
#include <HYDROData_Iterator.h>
/**
* Returns Z layer of the operation preview.
- \ returns a layer position
+ \ returns a layer position
*/
int HYDROGUI_Operation::getPreviewZLayer() const
{
return myPreviewZLayer;
}
+/**
+ * Update Z layer for the operation preview.
+ \param theLayer a layer position
+ */
+void HYDROGUI_Operation::updatePreviewZLayer( int theLayer )
+{
+ setPreviewZLayer( theLayer );
+
+ HYDROGUI_Shape* aPreview = getPreviewShape();
+ if ( aPreview )
+ aPreview->setZLayer( getPreviewZLayer() );
+}
+
/**
* Set Z layer for the operation preview.
\param theLayer a layer position
myPreviewZLayer = theLayer;
}
+/**
+ * Returns a shape preview of the operation
+ */
+HYDROGUI_Shape* HYDROGUI_Operation::getPreviewShape() const
+{
+ return 0;
+}
+
/**
* Return the operation preview manager
*/
// pop the operation from the cached map of active operations
QStack<HYDROGUI_Operation*>& anOperations = myModule->getActiveOperations();
- if ( anOperations.top() == this )
- {
- anOperations.pop();
- }
- else {
- // find in the stack the current operation and remove it from the stack
- QVectorIterator<HYDROGUI_Operation*> aVIt( anOperations );
- aVIt.toBack();
- aVIt.previous(); // skip the top show/hide operation
- while ( aVIt.hasPrevious() )
+ if ( !anOperations.empty() ) {
+ if ( anOperations.top() == this )
+ anOperations.pop();
+ else
{
- HYDROGUI_Operation* anOp = aVIt.previous();
- if ( anOp == this )
- anOperations.remove( anOperations.lastIndexOf( anOp ) );
+ // find in the stack the current operation and remove it from the stack
+ QVectorIterator<HYDROGUI_Operation*> aVIt( anOperations );
+ aVIt.toBack();
+ aVIt.previous(); // skip the top show/hide operation
+ while ( aVIt.hasPrevious() )
+ {
+ HYDROGUI_Operation* anOp = aVIt.previous();
+ if ( anOp == this )
+ anOperations.remove( anOperations.lastIndexOf( anOp ) );
+ }
}
}
-
- // removes the Z layer, created for the operation preview
- if ( myPreviewManager && getPreviewZLayer() >= 0 )
- module()->getOCCDisplayer()->RemoveZLayer( myPreviewManager, getPreviewZLayer() );
+ // release the preview manager with removing the added preview Z layer
+ setPreviewManager( 0 );
}
void HYDROGUI_Operation::setDialogActive( const bool active )