X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_WorkshopListener.cpp;h=4f8d3c09c8b398875849778538fbb057a7c1c3af;hb=4de8d53fef7532b6843d79c970f55ad46f98da62;hp=3041162b1c34b2af8a37b2638fd4a261259ebfe7;hpb=c0e273c1479a9940dbe4f966853c82a6b8709d88;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_WorkshopListener.cpp b/src/XGUI/XGUI_WorkshopListener.cpp index 3041162b1..4f8d3c09c 100644 --- a/src/XGUI/XGUI_WorkshopListener.cpp +++ b/src/XGUI/XGUI_WorkshopListener.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2022 CEA/DEN, EDF R&D +// Copyright (C) 2014-2024 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -121,6 +121,7 @@ void XGUI_WorkshopListener::initializeEventListening() aLoop->registerListener(this, Events_Loop::eventByName("AbortOperation")); aLoop->registerListener(this, Events_Loop::eventByName(EVENT_AUTOMATIC_RECOMPUTATION_ENABLE)); aLoop->registerListener(this, Events_Loop::eventByName(EVENT_AUTOMATIC_RECOMPUTATION_DISABLE)); + aLoop->registerListener(this, ModelAPI_ObjectRenamedMessage::eventId()); } //****************************************************** @@ -193,10 +194,14 @@ void XGUI_WorkshopListener::processEvent(const std::shared_ptr& if (aWidgetSelector) workshop()->selector()->setSelected(aWidgetSelector->getAttributeSelection()); } - } else if (theMessage->eventID() == Events_Loop::eventByName("FinishOperation")/* || - theMessage->eventID() == Events_Loop::eventByName("AbortOperation")*/) - workshop()->facesPanel()->reset(false); // do not flush redisplay, it is flushed after event - + } + else if (theMessage->eventID() == Events_Loop::eventByName("FinishOperation")/* || + theMessage->eventID() == Events_Loop::eventByName("AbortOperation")*/) + { + XGUI_FacesPanel* aFacesPanel = workshop()->facesPanel(); + if (aFacesPanel) + aFacesPanel->reset(false); // do not flush redisplay, it is flushed after event + } //Update property panel on corresponding message. If there is no current operation (no //property panel), or received message has different feature to the current - do nothing. else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) { @@ -216,11 +221,16 @@ void XGUI_WorkshopListener::processEvent(const std::shared_ptr& // the viewer's update context is unblocked, the viewer's update works XGUI_Displayer* aDisplayer = workshop()->displayer(); aDisplayer->enableUpdateViewer(true); - } else if ((theMessage->eventID() == + } + else if ((theMessage->eventID() == Events_Loop::eventByName(EVENT_AUTOMATIC_RECOMPUTATION_ENABLE)) || (theMessage->eventID() == Events_Loop::eventByName(EVENT_AUTOMATIC_RECOMPUTATION_DISABLE))) { myWorkshop->updateAutoComputeState(); + } + else if (theMessage->eventID() == ModelAPI_ObjectRenamedMessage::eventId()) { + myWorkshop->updateGroupsText(); + myWorkshop->displayer()->updateViewer(); } else { //Show error dialog if error message received. std::shared_ptr anIngfoMsg = @@ -421,33 +431,31 @@ void XGUI_WorkshopListener:: //bool aHasPart = false; bool aDisplayed = false; - if (!isLoadedScript) { - for (aIt = anObjects.begin(); aIt != anObjects.end(); ++aIt) { - ObjectPtr anObject = *aIt; + for (aIt = anObjects.begin(); aIt != anObjects.end(); ++aIt) { + ObjectPtr anObject = *aIt; #ifdef DEBUG_RESULT_COMPSOLID - ResultPtr aRes = std::dynamic_pointer_cast(anObject); - if (aRes.get()) { - ResultCompSolidPtr aCompSolidRes = - std::dynamic_pointer_cast(aRes); - if (aCompSolidRes.get()) { - qDebug(QString("COMPSOLID, numberOfSubs = %1") - .arg(aCompSolidRes->numberOfSubs()).toStdString().c_str()); - } - if (ModelAPI_Tools::compSolidOwner(aRes)) - qDebug("COMPSOLID sub-object"); + ResultPtr aRes = std::dynamic_pointer_cast(anObject); + if (aRes.get()) { + ResultCompSolidPtr aCompSolidRes = + std::dynamic_pointer_cast(aRes); + if (aCompSolidRes.get()) { + qDebug(QString("COMPSOLID, numberOfSubs = %1") + .arg(aCompSolidRes->numberOfSubs()).toStdString().c_str()); } + if (ModelAPI_Tools::compSolidOwner(aRes)) + qDebug("COMPSOLID sub-object"); + } #endif - ResultBodyPtr aRes = std::dynamic_pointer_cast(anObject); - - if (aRes.get() && aRes->numberOfSubs() > 0) - for (int anIndex = 0; anIndex < aRes->numberOfSubs(); ++anIndex) - setDisplayed(aRes->subResult(anIndex), aDisplayed); - else - setDisplayed(anObject, aDisplayed); - } + ResultBodyPtr aRes = std::dynamic_pointer_cast(anObject); + if (aRes.get() && aRes->numberOfSubs() > 0) + for (int anIndex = 0; anIndex < aRes->numberOfSubs(); ++anIndex) + setDisplayed(aRes->subResult(anIndex), isLoadedScript, aDisplayed); + else + setDisplayed(anObject, isLoadedScript, aDisplayed); } + MAYBE_UNUSED bool isCustomized = customizeFeature(anObjects, aDisplayed); //if (myObjectBrowser) @@ -562,8 +570,13 @@ XGUI_Workshop* XGUI_WorkshopListener::workshop() const } -void XGUI_WorkshopListener::setDisplayed(ObjectPtr theObject, bool& theDisplayed) +void XGUI_WorkshopListener::setDisplayed( + ObjectPtr theObject, const bool theIsLoadedScript, bool& theDisplayed) { + if (theIsLoadedScript) { + theObject->setDisplayed(theDisplayed); + return; + } // the validity of the data should be checked here in order to avoid display of the objects, // which were created, then deleted, but flush for the creation event happens after that // we should not display disabled objects