#define OPERATION_PARAMETER_COLOR "255, 255, 0"
PartSet_CustomPrs::PartSet_CustomPrs(ModuleBase_IWorkshop* theWorkshop)
- : myWorkshop(theWorkshop)
+ : myWorkshop(theWorkshop), myIsActive(false)
{
initPrs();
}
bool PartSet_CustomPrs::isActive()
{
- Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
+ return myIsActive;
+ /*Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
- return !aContext.IsNull() && aContext->IsDisplayed(anOperationPrs);
+ return !aContext.IsNull() && aContext->IsDisplayed(anOperationPrs);*/
}
bool PartSet_CustomPrs::activate(const FeaturePtr& theFeature, const bool theUpdateViewer)
Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
if (anOperationPrs->canActivate(theFeature)) {
+ myIsActive = true;
anOperationPrs->setFeature(theFeature);
if (theFeature.get()) {
displayPresentation(theUpdateViewer);
bool PartSet_CustomPrs::deactivate(const bool theUpdateViewer)
{
+ myIsActive = false;
bool isModified = false;
Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
if (!aContext.IsNull() && !aContext->IsDisplayed(anOperationPrs)) {
- PartSet_Module* aModule = dynamic_cast<PartSet_Module*>(myWorkshop->module());
-
- XGUI_Workshop* aWorkshop = workshop();
- aWorkshop->displayer()->displayAIS(myOperationPrs, false/*load object in selection*/, theUpdateViewer);
- aContext->SetZLayer(anOperationPrs, aModule->getVisualLayerId());
+ if (anOperationPrs->hasShapes()) {
+ PartSet_Module* aModule = dynamic_cast<PartSet_Module*>(myWorkshop->module());
+ XGUI_Workshop* aWorkshop = workshop();
+ aWorkshop->displayer()->displayAIS(myOperationPrs, false/*load object in selection*/, theUpdateViewer);
+ aContext->SetZLayer(anOperationPrs, aModule->getVisualLayerId());
+ }
}
else {
- anOperationPrs->Redisplay();
- if (theUpdateViewer)
- workshop()->displayer()->updateViewer();
+ if (!anOperationPrs->hasShapes())
+ erasePresentation(theUpdateViewer);
+ else {
+ anOperationPrs->Redisplay();
+ if (theUpdateViewer)
+ workshop()->displayer()->updateViewer();
+ }
}
}
// [it should be hiddend] or the new AIS depend on it [it should be visualized]
Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
- if (!aContext.IsNull() && aContext->IsDisplayed(anOperationPrs)) {
- // if there are performance poblems, to improve them, the necessity of redisplay can be checked
- //bool aChanged = anOperationPrs->dependOn(theObject);
- anOperationPrs->updateShapes();
- //aChanged = aChanged || anOperationPrs->dependOn(theObject);
- //if (aChanged)
- anOperationPrs->Redisplay();
- isModified = true;
- if (theUpdateViewer)
- workshop()->displayer()->updateViewer();
+ if (!aContext.IsNull()) {
+ if (aContext->IsDisplayed(anOperationPrs)) {
+ // if there are performance poblems, to improve them, the necessity of redisplay can be checked
+ //bool aChanged = anOperationPrs->dependOn(theObject);
+ anOperationPrs->updateShapes();
+ //aChanged = aChanged || anOperationPrs->dependOn(theObject);
+ //if (aChanged)
+ anOperationPrs->Redisplay();
+ isModified = true;
+ if (theUpdateViewer)
+ workshop()->displayer()->updateViewer();
+ }
+ else {
+ anOperationPrs->updateShapes();
+ displayPresentation(theUpdateViewer);
+ }
}
return isModified;
}