X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNewGeom%2FNewGeom_Module.cpp;h=cb422b659c850801ca655f136328d0d9118a3013;hb=0c64a21a042cfdd26920de8b2fbb11604547d4d0;hp=88d61de5bbb4f0f32c2a65d8bc39d4ebfba2445d;hpb=5352bbb1915f98d1f02b1cb953a2de19b286a28c;p=modules%2Fshaper.git diff --git a/src/NewGeom/NewGeom_Module.cpp b/src/NewGeom/NewGeom_Module.cpp index 88d61de5b..cb422b659 100644 --- a/src/NewGeom/NewGeom_Module.cpp +++ b/src/NewGeom/NewGeom_Module.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -41,6 +42,7 @@ #include #include #include +#include extern "C" { @@ -150,6 +152,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) { @@ -159,13 +162,17 @@ 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())); + // the display all results is not necessary anymore, it was commented in XGUI_Workshop, + // so it should be commented here + //QTimer::singleShot(1000, myWorkshop, SLOT(displayAllResults())); } else myWorkshop->updateCommandStatus(); @@ -205,20 +212,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) { @@ -269,7 +281,11 @@ 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; @@ -351,8 +367,21 @@ QAction* NewGeom_Module::addFeature(const QString& theWBName, const QString& the 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); @@ -375,7 +404,7 @@ QAction* NewGeom_Module::addNestedFeature(const QString& theWBName, const QList& theNestedActions) { int aMenu = createMenu(theWBName, -1, -1, 50); - int aTool = createTool(theWBName); + int aTool = createTool(theWBName, theWBName); int aId = myActionsList.size(); myActionsList.append(theInfo.id); @@ -427,12 +456,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; } @@ -506,6 +555,7 @@ void NewGeom_Module::selectionChanged() //****************************************************** void NewGeom_Module::contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle) { + myWorkshop->contextMenuMgr()->updateViewerMenu(); myWorkshop->contextMenuMgr()->addViewerMenu(theMenu); LightApp_Module::contextMenuPopup(theClient, theMenu, theTitle); }