#include <GeomValidators_ZeroOffset.h>
#include <GeomValidators_BooleanArguments.h>
#include <GeomValidators_Different.h>
+#include <GeomValidators_PartitionArguments.h>
#include <ModelAPI_Object.h>
PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
: ModuleBase_IModule(theWshop),
- myRestartingMode(RM_None), myVisualLayerId(0)
+ myRestartingMode(RM_None), myVisualLayerId(0), myHasConstraintShown(true)
{
new PartSet_IconFactory();
aFactory->registerValidator("GeomValidators_Different",
new GeomValidators_Different);
+
+ aFactory->registerValidator("GeomValidators_PartitionArguments",
+ new GeomValidators_PartitionArguments);
}
void PartSet_Module::registerFilters()
XGUI_Displayer* aDisplayer = aConnector->workshop()->displayer();
aDisplayer->updateViewer();
}
+ mySketchMgr->onShowConstraintsToggle(myHasConstraintShown);
}
ModuleBase_Operation* PartSet_Module::currentOperation() const
void PartSet_Module::clearViewer()
{
myCustomPrs->clearPrs();
+
+ XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
+ XGUI_Workshop* aWorkshop = aConnector->workshop();
+ XGUI_Displayer* aDisplayer = aWorkshop->displayer();
+ aDisplayer->deactivateSelectionFilters();
}
void PartSet_Module::propertyPanelDefined(ModuleBase_Operation* theOperation)
{
if (PartSet_SketcherMgr::constraintsIdList().contains(theCmdId)) {
// Show constraints if a constraint was anOperation
+ myHasConstraintShown = mySketchMgr->isConstraintsShown();
mySketchMgr->onShowConstraintsToggle(true);
}
ModuleBase_IModule::launchOperation(theCmdId);
// if the operation is panning or rotate or panglobal then do nothing
if ((theTrsfType == 1) || (theTrsfType == 3) || (theTrsfType == 4))
return;
-
ModuleBase_IViewer* aViewer = myWorkshop->viewer();
+ Handle(AIS_InteractiveContext) aContext = aViewer->AISContext();
+ if (aContext.IsNull())
+ return;
+
//Handle(V3d_View) aView = aViewer->activeView();
XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
XGUI_Workshop* aWorkshop = aConnector->workshop();
XGUI_Displayer* aDisplayer = aWorkshop->displayer();
- Handle(AIS_InteractiveContext) aContext = aViewer->AISContext();
-
Handle(V3d_Viewer) aV3dViewer = aContext->CurrentViewer();
Handle(V3d_View) aView;
double aScale = 0;
}
}
#else
- // Problem with MPV: At first time on creation it doesn't work because Part feature
- // creation event will be sent after
if (aActivePartIndex.isValid())
aTreeView->setExpanded(aActivePartIndex, false);
XGUI_DataModel* aDataModel = aWorkshop->objectBrowser()->dataModel();
// Update displayed objects in order to update active color
XGUI_Displayer* aDisplayer = aWorkshop->displayer();
QObjectPtrList aObjects = aDisplayer->displayedObjects();
- foreach(ObjectPtr aObj, aObjects)
- aDisplayer->redisplay(aObj, false);
+ bool aHidden;
+ foreach(ObjectPtr aObj, aObjects) {
+ //TODO: replace by redisplay event.
+ aHidden = !aObj->data() || !aObj->data()->isValid() ||
+ aObj->isDisabled() || (!aObj->isDisplayed());
+ if (!aHidden)
+ aDisplayer->redisplay(aObj, false);
+ }
aDisplayer->updateViewer();
}
}
{
// z layer is created for all started operations in order to visualize operation AIS presentation
// over the object
- Handle(V3d_Viewer) aViewer = myWorkshop->viewer()->AISContext()->CurrentViewer();
+ Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
+ if (aContext.IsNull())
+ return;
+
+ Handle(V3d_Viewer) aViewer = aContext->CurrentViewer();
if (myVisualLayerId == 0) {
if (myVisualLayerId == 0)
aViewer->AddZLayer(myVisualLayerId);
if (!aFound)
aViewer->AddZLayer(myVisualLayerId);
}
+ // if there is an active operation with validated widget,
+ // the filters of this widget should be activated in the created view
+ ModuleBase_Operation* aOperation = myWorkshop->currentOperation();
+ if (aOperation) {
+ ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
+ ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget();
+ if (anActiveWidget) {
+ ModuleBase_WidgetValidated* aWidgetValidated = dynamic_cast<ModuleBase_WidgetValidated*>
+ (anActiveWidget);
+ if (aWidgetValidated)
+ aWidgetValidated->activateFilters(true);
+ }
+ }
}