#include <ModuleBase_OperationAction.h>
#include <ModuleBase_OperationFeature.h>
#include <ModuleBase_ViewerPrs.h>
+#include <ModuleBase_Tools.h>
#include <XGUI_ModuleConnector.h>
#include <XGUI_Workshop.h>
#include <ModelAPI_ResultPart.h>
#include <ModelAPI_ResultParameter.h>
+#include <QMainWindow>
#include <QAction>
#include <QMenu>
#include <QEvent>
{
QAction* aAction;
- aAction = new QAction(tr("Auxiliary"), this);
+ QWidget* aParent = myModule->workshop()->desktop();
+ aAction = ModuleBase_Tools::createAction(QIcon(), tr("Auxiliary"), aParent);
aAction->setCheckable(true);
addAction("AUXILIARY_CMD", aAction);
- aAction = new QAction(QIcon(":icons/activate.png"), tr("Activate"), this);
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onActivatePart(bool)));
+ aAction = ModuleBase_Tools::createAction(QIcon(":icons/activate.png"), tr("Activate"), aParent,
+ this, SLOT(onActivatePart(bool)));
myActions["ACTIVATE_PART_CMD"] = aAction;
// Activate PartSet
- aAction = new QAction(QIcon(":icons/activate.png"), tr("Activate"), this);
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onActivatePartSet(bool)));
+ aAction = ModuleBase_Tools::createAction(QIcon(":icons/activate.png"), tr("Activate"), aParent,
+ this, SLOT(onActivatePartSet(bool)));
myActions["ACTIVATE_PARTSET_CMD"] = aAction;
- aAction = new QAction(QIcon(":icons/edit.png"), tr("Edit..."), this);
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onEdit(bool)));
+ aAction = ModuleBase_Tools::createAction(QIcon(":icons/edit.png"), tr("Edit..."), aParent,
+ this, SLOT(onEdit(bool)));
myActions["EDIT_CMD"] = aAction;
-
- aAction = new QAction(QIcon(), tr("Select parent feature"), this);
- aAction->setCheckable(false);
- connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onSelectParentFeature()));
- myActions["SELECT_PARENT_CMD"] = aAction;
}
}
}
-bool PartSet_MenuMgr::addViewerMenu(QMenu* theMenu, const QMap<QString, QAction*>& theStdActions) const
+bool PartSet_MenuMgr::addViewerMenu(const QMap<QString, QAction*>& theStdActions,
+ QWidget* theParent,
+ QMap<int, QAction*>& theMenuActions) const
{
+ int anIndex = 0;
+
ModuleBase_Operation* anOperation = myModule->workshop()->currentOperation();
if (!PartSet_SketcherMgr::isSketchOperation(anOperation) &&
!PartSet_SketcherMgr::isNestedSketchOperation(anOperation))
bool hasFeature = false;
QList<ModuleBase_ViewerPrsPtr> aPrsList = aSelection->getSelected(ModuleBase_ISelection::Viewer);
- ResultPtr aResult;
- FeaturePtr aFeature;
- foreach(ModuleBase_ViewerPrsPtr aPrs, aPrsList) {
- aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aPrs->object());
- if (aResult.get() != NULL) {
- const GeomShapePtr& aShape = aPrs->shape();
- if (aShape.get() && aShape->isEqual(aResult->shape()))
- hasFeature = true;
- else
- hasAttribute = true;
- } else {
- aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aPrs->object());
- hasFeature = (aFeature.get() != NULL);
+ if (aPrsList.size() > 1) {
+ hasFeature = true;
+ } else if (aPrsList.size() == 1) {
+ ResultPtr aResult;
+ FeaturePtr aFeature;
+ foreach(ModuleBase_ViewerPrsPtr aPrs, aPrsList) {
+ aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aPrs->object());
+ if (aResult.get() != NULL) {
+ const GeomShapePtr& aShape = aPrs->shape();
+ if (aShape.get() && aShape->isEqual(aResult->shape()))
+ hasFeature = true;
+ else
+ hasAttribute = true;
+ } else {
+ aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aPrs->object());
+ hasFeature = (aFeature.get() != NULL);
+ }
}
- }
- if (aPrsList.size() == 1) {
const GeomShapePtr& aShape = aPrsList.first()->shape();
if (aShape.get() && !aShape->isNull() && aShape->shapeType() == GeomAPI_Shape::VERTEX) {
// Find 2d coordinates
SketchPlugin_ConstraintCoincidence::ENTITY_B());
if (myCoinsideLines.size() > 0) {
aIsDetach = true;
- QMenu* aSubMenu = theMenu->addMenu(tr("Detach"));
+ QMenu* aSubMenu = new QMenu(tr("Detach"), theParent);
+ theMenuActions[anIndex++] = aSubMenu->menuAction();
QAction* aAction;
int i = 0;
foreach (FeaturePtr aCoins, myCoinsideLines) {
}
}
}
- if ((!aIsDetach) && hasFeature) {
- theMenu->addAction(theStdActions["DELETE_CMD"]);
+ if (!hasAttribute) {
+ bool isAuxiliary;
+ if (canSetAuxiliary(isAuxiliary)) {
+ QAction* anAction = action("AUXILIARY_CMD");
+ theMenuActions[anIndex++] = anAction;
+ anAction->setChecked(isAuxiliary);
+ }
}
- if (hasAttribute)
- return true;
- bool isAuxiliary;
- if (canSetAuxiliary(isAuxiliary)) {
- QAction* anAction = action("AUXILIARY_CMD");
- theMenu->addAction(anAction);
- anAction->setChecked(isAuxiliary);
+
+ if (!aIsDetach && hasFeature) {
+ // Delete item should be the last in the list of actions
+ theMenuActions[1000] = theStdActions["DELETE_CMD"];
}
+
return true;
}
myModule->editFeature(aFeature);
}
-void PartSet_MenuMgr::onSelectParentFeature()
-{
- QObjectPtrList aObjects = myModule->workshop()->selection()->selectedObjects();
- if (aObjects.size() != 1)
- return;
-
- SessionPtr aMgr = ModelAPI_Session::get();
- ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>( aObjects.first() );
- if( !aResult.get() )
- return;
-
- FeaturePtr aParentFeature = aResult->document()->feature( aResult );
- QObjectPtrList aSelection;
- aSelection.append( aParentFeature );
- myModule->workshop()->selection()->setSelectedObjects( aSelection );
-}
-
bool PartSet_MenuMgr::eventFilter(QObject* theObj, QEvent* theEvent)
{
if (theEvent->type() == QEvent::MouseButtonDblClick) {