-// Copyright (C) 2014-2021 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <ModuleBase_OperationDescription.h>
#include <ModuleBase_ViewerPrs.h>
#include <ModuleBase_ResultPrs.h>
+#include <ModuleBase_Preferences.h>
#include <ModelAPI_ResultField.h>
#include <ModelAPI_Object.h>
#include <SketcherPrs_Tools.h>
#include <Events_Loop.h>
+#include <Events_MessageBool.h>
#include <Config_PropManager.h>
#include <Config_Keywords.h>
#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
#include <Graphic3d_Texture2Dmanual.hxx>
+#include <SUIT_ResourceMgr.h>
#define FEATURE_ITEM_COLOR "0,0,225"
Events_Loop* aLoop = Events_Loop::loop();
aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENT_CHANGED));
+ aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENTS_CLOSED));
aLoop->registerListener(this, Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY));
+ aLoop->registerListener(this, Events_Loop::eventByName(EVENT_FEATURE_LICENSE_VALID));
registerSelectionFilter(SF_GlobalFilter, new PartSet_GlobalFilter(myWorkshop));
registerSelectionFilter(SF_FilterInfinite, new PartSet_FilterInfinite(myWorkshop));
void PartSet_Module::createFeatures()
{
ModuleBase_IModule::createFeatures();
+
+ // send signal to initialization plugin about the state of the preferences: to create part or not
+ bool aCreate = ModuleBase_Preferences::resourceMgr()->booleanValue(
+ ModuleBase_Preferences::GENERAL_SECTION, "create_init_part", true);
+ Events_MessageBool aCreateMsg(Events_Loop::eventByName(EVENT_CREATE_PART_ON_START), aCreate);
+ aCreateMsg.send();
+
myRoot = new PartSet_RootNode();
myRoot->setWorkshop(workshop());
+ ModuleBase_IModule::loadProprietaryPlugins();
}
Handle(V3d_Viewer) aV3dViewer = aContext->CurrentViewer();
Handle(V3d_View) aView;
double aScale = 0;
- for (aV3dViewer->InitDefinedViews();
- aV3dViewer->MoreDefinedViews();
- aV3dViewer->NextDefinedViews()) {
- Handle(V3d_View) aV = aV3dViewer->DefinedView();
+ V3d_ListOfView::Iterator aDefinedViews(aV3dViewer->DefinedViews());
+ for (; aDefinedViews.More(); aDefinedViews.Next()) {
+ Handle(V3d_View) aV = aDefinedViews.Value();
double aS = aV->Scale();
if (aS > aScale) {
aScale = aS;
//******************************************************
void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMessage)
{
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENT_CHANGED)) {
+ if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENTS_CLOSED)) {
+ closeDocument();
+ } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENT_CHANGED)) {
SessionPtr aMgr = ModelAPI_Session::get();
if (!aMgr->hasModuleDocument()) // if document is closed, do not call the document creation
return;
mySketchMgr->previewSketchPlane()->createSketchPlane(aSketch, myWorkshop);
}
}
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_LICENSE_VALID)) {
+ std::shared_ptr<ModelAPI_FeaturesLicenseValidMessage> aMsg =
+ std::dynamic_pointer_cast<ModelAPI_FeaturesLicenseValidMessage>(theMessage);
+ myFeaturesValidLicense.insert(aMsg->features().begin(), aMsg->features().end());
+ processProprietaryFeatures();
+ }
}
//******************************************************
{
if (!aPart.get() && aObj->groupName() == ModelAPI_ResultParameter::group())
{
- QObjectPtrList aObjects = aWorkshop->objectBrowser()->selectedObjects();
+ QObjectPtrList aSelectedObjects = aWorkshop->objectBrowser()->selectedObjects();
FeaturePtr aFeature;
ResultParameterPtr aParam;
- foreach(ObjectPtr aObj, aObjects) {
- aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aObj);
+ foreach(ObjectPtr aSelected, aSelectedObjects) {
+ aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aSelected);
if (aParam.get())
break;
}
}
//******************************************************
-void PartSet_Module::onConflictingConstraints()
+void PartSet_Module::onRemoveConflictingConstraints()
{
- const std::set<ObjectPtr>& aConstraints = myOverconstraintListener->conflictingObjects();
- QObjectPtrList aObjectsList;
- std::set<ObjectPtr>::const_iterator aIt;
- for (aIt = aConstraints.cbegin(); aIt != aConstraints.cend(); aIt++) {
- if (mySketchReentrantMgr->isLastAutoConstraint(*aIt))
- aObjectsList.append(*aIt);
+ const std::set<ObjectPtr>& aConstraints = myOverconstraintListener->objectsToRemove();
+ std::set<ObjectPtr>::const_iterator anIt;
+
+ XGUI_Workshop* aWorkshop = getWorkshop();
+ XGUI_OperationMgr* anOpMgr = aWorkshop->operationMgr();
+
+ bool isAllowToNotify = ModuleBase_Preferences::resourceMgr()->booleanValue(SKETCH_TAB_NAME,
+ "notify_change_constraint");
+
+ if (isAllowToNotify) {
+ anIt = aConstraints.begin();
+ std::string aText("Conflict in constraints: \n");
+
+ for (; anIt != aConstraints.end(); anIt++)
+ {
+ ObjectPtr anObject = *anIt;
+ FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(anObject);
+ TCollection_AsciiString aStr(aFeature->name().c_str());
+ std::string aName(aStr.ToCString());
+ aText += aName + "\n";
+ }
+
+ XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
+ ModuleBase_Tools::warningAboutConflict(aConnector->desktop(),
+ aText);
}
- if (aObjectsList.size() > 0) {
- XGUI_Workshop* aWorkshop = getWorkshop();
+
+ ModuleBase_Operation* anOp = anOpMgr->currentOperation();
+ if (sketchMgr()->isNestedSketchOperation(anOp)) {
+ std::set<FeaturePtr> aFeatures;
+ for (anIt = aConstraints.cbegin(); anIt != aConstraints.cend(); anIt++)
+ aFeatures.insert(ModelAPI_Feature::feature(*anIt));
+
+ ModelAPI_Tools::removeFeaturesAndReferences(aFeatures);
+ }
+ else {
+ QObjectPtrList anObjectsList;
+ for (anIt = aConstraints.cbegin(); anIt != aConstraints.cend(); anIt++)
+ anObjectsList.append(*anIt);
+
QString aDescription = aWorkshop->contextMenuMgr()->action("DELETE_CMD")->text();
ModuleBase_Operation* anOpAction = new ModuleBase_Operation(aDescription);
- XGUI_OperationMgr* anOpMgr = aWorkshop->operationMgr();
-
- ModuleBase_Operation* anOp = anOpMgr->currentOperation();
- if (sketchMgr()->isNestedSketchOperation(anOp))
- anOp->abort();
anOpMgr->startOperation(anOpAction);
- aWorkshop->deleteFeatures(aObjectsList);
+ aWorkshop->deleteFeatures(anObjectsList);
anOpMgr->commitOperation();
- ModuleBase_Tools::flushUpdated(sketchMgr()->activeSketch());
}
+ ModuleBase_Tools::flushUpdated(sketchMgr()->activeSketch());
}