#include "NewGeom_Module.h"
#include "NewGeom_DataModel.h"
#include "NewGeom_OCCSelector.h"
+#include <NewGeom_NestedButton.h>
#include <XGUI_Workshop.h>
#include <XGUI_PropertyPanel.h>
#include <ModuleBase_Operation.h>
#include <ModuleBase_Preferences.h>
+#include <ModuleBase_ActionInfo.h>
#include <LightApp_Application.h>
#include <LightApp_SelectionMgr.h>
#include <Config_PropManager.h>
#include <Config_ModuleReader.h>
+#include <AIS_ListOfInteractive.hxx>
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
+
#include <QDockWidget>
#include <QAction>
#include <QTimer>
}
}
+/**
+* Class for preferences management
+*/
class NewGeom_PrefMgr: public ModuleBase_IPrefMgr
{
public:
+ /// Constructor
+ /// \param theMgr preferences manager of SALOME
+ /// \param theModName name of the module
NewGeom_PrefMgr(LightApp_Preferences* theMgr, const QString& theModName):myMgr(theMgr), myModName(theModName) {}
virtual int addPreference(const QString& theLbl, int pId,
// switch off in this module
aResMgr->setValue("Study", "store_positions", false);
+ // Synchronize displayed objects
+ if (mySelector && mySelector->viewer()) {
+ Handle(AIS_InteractiveContext) aContext = mySelector->viewer()->getAISContext();
+ XGUI_Displayer* aDisp = myWorkshop->displayer();
+ QObjectPtrList aObjList = aDisp->displayedObjects();
+
+ AIS_ListOfInteractive aList;
+ aContext->DisplayedObjects(aList);
+ AIS_ListIteratorOfListOfInteractive aLIt;
+ Handle(AIS_InteractiveObject) anAISIO;
+ foreach (ObjectPtr aObj, aObjList) {
+ AISObjectPtr aPrs = aDisp->getAISObject(aObj);
+ Handle(AIS_InteractiveObject) aAIS = aPrs->impl<Handle(AIS_InteractiveObject)>();
+ bool aFound = false;
+ for (aLIt.Initialize(aList); aLIt.More(); aLIt.Next()) {
+ anAISIO = aLIt.Value();
+ if (anAISIO.Access() == aAIS.Access()) {
+ aFound = true;
+ break;
+ }
+ }
+ if (!aFound) {
+ aDisp->erase(aObj, false);
+ }
+ }
+ }
+
return isDone;
}
// because the displayed objects should be removed from the viewer, but
// the AIS context is obtained from the selector.
ModuleBase_Operation* anOperation = myWorkshop->operationMgr()->currentOperation();
- if (anOperation)
+ while (anOperation) {
anOperation->abort();
-
+ anOperation = myWorkshop->operationMgr()->currentOperation();
+ }
// Delete selector because it has to be redefined on next activation
if (mySelector) {
myProxyViewer->setSelector(0);
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,
aAction->setData(theId);
int aItemId = createMenu(aId, aMenu, -1, 10);
int aToolId = createTool(aId, aTool);
+
return aAction;
}
+
+QAction* NewGeom_Module::addNestedFeature(const QString& theWBName,
+ const ActionInfo& theInfo,
+ const QList<QAction*>& theNestedActions)
+{
+ int aMenu = createMenu(theWBName, -1, -1, 50);
+ int aTool = createTool(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;
+}
+
+
//******************************************************
QAction* NewGeom_Module::addDesktopCommand(const QString& theId, const QString& theTitle,
const QString& theTip, const QIcon& theIcon,
//******************************************************
void NewGeom_Module::contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle)
{
- myWorkshop->contextMenuMgr()->addViewerItems(theMenu);
+ myWorkshop->contextMenuMgr()->addViewerMenu(theMenu);
LightApp_Module::contextMenuPopup(theClient, theMenu, theTitle);
}