X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNewGeom%2FNewGeom_Module.cpp;h=75f33a64f9a32f8bb840b259b24d1f4e52427f3b;hb=592b8a38b3c9e2a6a7d3d1d180b1f9b5406c4415;hp=a569af01598bb1939a8d8caf16033dc602fbc2cd;hpb=18a83fe9a77ee80f6d06c36a492012ffd10195fb;p=modules%2Fshaper.git diff --git a/src/NewGeom/NewGeom_Module.cpp b/src/NewGeom/NewGeom_Module.cpp index a569af015..75f33a64f 100644 --- a/src/NewGeom/NewGeom_Module.cpp +++ b/src/NewGeom/NewGeom_Module.cpp @@ -4,6 +4,7 @@ #include "NewGeom_Module.h" #include "NewGeom_DataModel.h" #include "NewGeom_OCCSelector.h" +#include #include #include @@ -14,6 +15,8 @@ #include #include +#include +#include #include #include @@ -28,6 +31,7 @@ #include #include +#include #include #include @@ -39,6 +43,7 @@ #include #include #include +#include extern "C" { @@ -118,7 +123,9 @@ void NewGeom_Module::initialize(CAM_Application* theApp) myWorkshop->startApplication(); LightApp_Application* anApp = dynamic_cast(theApp); if (anApp) + { connect(anApp, SIGNAL(preferenceResetToDefaults()), this, SLOT(onDefaultPreferences())); + } } //****************************************************** @@ -148,6 +155,7 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy) aViewAct->setEnabled(true); myWorkshop->objectBrowser()->setVisible(true); aObjDoc->setVisible(true); + desktop()->tabifyDockWidget(aObjDoc, myWorkshop->propertyPanel()); } if (!mySelector) { @@ -157,13 +165,14 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy) mySelector = createSelector(OCCViewManagers.first()); } } + // it should be pefromed after the selector creation in order to have AISContext + myWorkshop->activateModule(); //action(myEraseAll)->setEnabled(false); if (myIsOpened) { myWorkshop->objectBrowser()->rebuildDataTree(); myWorkshop->updateCommandStatus(); myIsOpened = false; - QTimer::singleShot(1000, myWorkshop, SLOT(displayAllResults())); } else myWorkshop->updateCommandStatus(); @@ -182,8 +191,11 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy) aResMgr->setValue("Study", "store_positions", false); // Synchronize displayed objects - if (mySelector && mySelector->viewer()) { - Handle(AIS_InteractiveContext) aContext = mySelector->viewer()->getAISContext(); + Handle(AIS_InteractiveContext) aContext; + if (mySelector && mySelector->viewer()) + aContext = mySelector->viewer()->getAISContext(); + + if (!aContext.IsNull()) { XGUI_Displayer* aDisp = myWorkshop->displayer(); QObjectPtrList aObjList = aDisp->displayedObjects(); @@ -203,20 +215,25 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy) } } if (!aFound) { - aDisp->erase(aObj, false); + aObj->setDisplayed(false); + //aDisp->erase(aObj, false); } } + Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY)); } - + myProxyViewer->activateViewer(true); return isDone; } //****************************************************** bool NewGeom_Module::deactivateModule(SUIT_Study* theStudy) { + myProxyViewer->activateViewer(false); setMenuShown(false); setToolShown(false); + myWorkshop->deactivateModule(); + QObject* aObj = myWorkshop->objectBrowser()->parent(); QDockWidget* aObjDoc = dynamic_cast(aObj); if (aObjDoc) { @@ -257,6 +274,8 @@ void NewGeom_Module::onViewManagerAdded(SUIT_ViewManager* theMgr) { if (!mySelector) { mySelector = createSelector(theMgr); + myWorkshop->module()->activateSelectionFilters(); + myWorkshop->synchronizeViewer(); } } @@ -267,10 +286,16 @@ void NewGeom_Module::onViewManagerRemoved(SUIT_ViewManager* theMgr) if (theMgr->getType() == OCCViewer_Viewer::Type()) { OCCViewer_Viewer* aViewer = static_cast(theMgr->getViewModel()); if (mySelector->viewer() == aViewer) { - myWorkshop->displayer()->eraseAll(false); + XGUI_Displayer* aDisp = myWorkshop->displayer(); + QObjectPtrList aObjects = aDisp->displayedObjects(); + foreach(ObjectPtr aObj, aObjects) + aObj->setDisplayed(false); + Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY)); myProxyViewer->setSelector(0); delete mySelector; mySelector = 0; + + myWorkshop->module()->clearViewer(); } } } @@ -293,6 +318,8 @@ void NewGeom_Module::onDefaultPreferences() LightApp_Preferences* pref = preferences(); if (pref) pref->retrieve(); + + myWorkshop->displayer()->redisplayObjects(); } //****************************************************** @@ -332,14 +359,38 @@ CAM_DataModel* NewGeom_Module::createDataModel() return aDataModel; } +QAction* NewGeom_Module::addFeature(const QString& theWBName, const ActionInfo& theInfo) +{ + return addFeature(theWBName, + theInfo.id, + theInfo.text, + theInfo.toolTip, + theInfo.icon, + theInfo.shortcut, + theInfo.checkable); +} + //****************************************************** QAction* NewGeom_Module::addFeature(const QString& theWBName, const QString& theId, const QString& theTitle, const QString& theTip, const QIcon& theIcon, const QKeySequence& theKeys, bool isCheckable) { + static QString aLastTool = ""; + static int aNb = 0; + if (aLastTool.isEmpty()) + aLastTool = theWBName; + else if (theWBName != aLastTool) { + aLastTool = theWBName; + if (aNb > 20) { + desktop()->addToolBarBreak(); + aNb = 0; + } + } + aNb++; + int aMenu = createMenu(theWBName, -1, -1, 50); - int aTool = createTool(theWBName); + int aTool = createTool(theWBName, theWBName); int aId = myActionsList.size(); myActionsList.append(theId); @@ -352,17 +403,41 @@ QAction* NewGeom_Module::addFeature(const QString& theWBName, const QString& the aAction->setData(theId); int aItemId = createMenu(aId, aMenu, -1, 10); int aToolId = createTool(aId, aTool); + return aAction; } -QAction* NewGeom_Module::addFeature(const QString& theWBName, const ActionInfo& theInfo) +bool NewGeom_Module::isFeatureOfNested(const QAction* theAction) { - return addFeature(theWBName, - theInfo.id, - theInfo.text, - theInfo.toolTip, - theInfo.icon, - theInfo.shortcut); + return dynamic_cast(theAction); +} + +QAction* NewGeom_Module::addFeatureOfNested(const QString& theWBName, + const ActionInfo& theInfo, + const QList& theNestedActions) +{ + int aMenu = createMenu(theWBName, -1, -1, 50); + int aTool = createTool(theWBName, theWBName); + + int aId = myActionsList.size(); + myActionsList.append(theInfo.id); + SUIT_Desktop* aDesk = application()->desktop(); + NewGeom_NestedButton* anAction = new NewGeom_NestedButton(aDesk, theNestedActions); + anAction->setData(theInfo.id); + anAction->setCheckable(theInfo.checkable); + anAction->setChecked(theInfo.checked); + anAction->setEnabled(theInfo.enabled); + anAction->setVisible(theInfo.visible); + anAction->setIcon(theInfo.icon); + anAction->setText(theInfo.text); + anAction->setToolTip(theInfo.toolTip); + anAction->setShortcut(theInfo.shortcut); + anAction->setFont(theInfo.font); + + //int aItemId = createMenu(aId, aMenu, -1, 10); + int aToolId = createTool(anAction, aTool, aId); + + return anAction; } @@ -394,12 +469,32 @@ void NewGeom_Module::addDesktopMenuSeparator(const char* theMenuSourceText, cons createMenu(separator(), aMenu, -1, theMenuPosition); } +bool NewGeom_Module::addActionInToolbar( QAction* theAction, const QString& theToolBarTitle ) +{ + if( !theAction ) + return false; + + SUIT_Desktop* aDesktop = application()->desktop(); + if( !aDesktop ) + return false; + + QtxActionToolMgr* aToolMgr = aDesktop->toolMgr(); + if( !aToolMgr ) + return false; + + aToolMgr->append( theAction, theToolBarTitle ); + return true; +} + //****************************************************** QList NewGeom_Module::commandList() const { QList aActions; - for (int i = 0; i < myActionsList.size(); i++) - aActions.append(action(i)); + for (int i = 0; i < myActionsList.size(); i++) { + QAction* aCmd = action(i); + if (aCmd && myActionsList.contains(aCmd->data().toString())) + aActions.append(aCmd); + } return aActions; } @@ -473,7 +568,8 @@ void NewGeom_Module::selectionChanged() //****************************************************** void NewGeom_Module::contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle) { - myWorkshop->contextMenuMgr()->addViewerItems(theMenu); + myWorkshop->contextMenuMgr()->updateViewerMenu(); + myWorkshop->contextMenuMgr()->addViewerMenu(theMenu); LightApp_Module::contextMenuPopup(theClient, theMenu, theTitle); } @@ -518,6 +614,7 @@ void NewGeom_Module::preferencesChanged(const QString& theSection, const QString } aProp->setValue(aValue); + myWorkshop->displayer()->redisplayObjects(); } void NewGeom_Module::inspectSalomeModules() @@ -528,3 +625,8 @@ void NewGeom_Module::inspectSalomeModules() Config_ModuleReader::addDependencyModule(eachModule.toStdString()); } } + +bool NewGeom_Module::abortAllOperations() +{ + return workshop()->operationMgr()->abortAllOperations(); +}