#include <ModelAPI_Data.h>
#include <ModelAPI_AttributeDocRef.h>
#include <ModelAPI_Object.h>
-#include <ModelAPI_ResultPart.h>
#include <ModelAPI_Session.h>
#include <ModelAPI_ResultGroup.h>
#include <ModelAPI_ResultParameter.h>
#include <ModuleBase_IModule.h>
+#include <ModuleBase_Tools.h>
#include <QAction>
#include <QContextMenuEvent>
void XGUI_ContextMenuMgr::createActions()
{
- QAction* aAction = new QAction(QIcon(":pictures/edit.png"), tr("Edit..."), this);
- addAction("EDIT_CMD", aAction);
-
- aAction = new QAction(QIcon(":pictures/activate.png"), tr("Activate"), this);
- addAction("ACTIVATE_PART_CMD", aAction);
-
- aAction = new QAction(QIcon(":pictures/assembly.png"), tr("Deactivate"), this);
- addAction("DEACTIVATE_PART_CMD", aAction);
-
- aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this);
+ QAction* aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this);
QMainWindow* aDesktop = myWorkshop->mainWindow();
if (!aDesktop)
aDesktop = myWorkshop->salomeConnector()->desktop();
bool hasResult = false;
bool hasFeature = false;
bool hasParameter = false;
- foreach(ObjectPtr aObj, aObjects)
- {
- FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObj);
- ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
- ResultParameterPtr aConstruction = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aResult);
-
- hasResult = (aResult.get() != NULL);
- hasFeature = (aFeature.get() != NULL);
- hasParameter = (aConstruction.get() != NULL);
- if (hasFeature && hasResult && hasParameter)
- break;
- }
+ ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter);
+
//Process Feature
if (aSelected == 1) {
ObjectPtr aObject = aObjects.first();
if (aObject) {
- ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObject);
- if (aPart) {
- if (aMgr->activeDocument() == aPart->partDoc())
- aMenu->addAction(action("DEACTIVATE_PART_CMD"));
- else
- aMenu->addAction(action("ACTIVATE_PART_CMD"));
- } else if (hasFeature && aObject->document() == aMgr->activeDocument()) {
- aMenu->addAction(action("EDIT_CMD"));
- } else {
- if (aDisplayer->isVisible(aObject)) {
+ if (!hasFeature) {
+ if (aObject->isDisplayed()) {
if (aDisplayer->canBeShaded(aObject)) {
if (aDisplayer->displayMode(aObject) == XGUI_Displayer::Shading)
aMenu->addAction(action("WIREFRAME_CMD"));
}
aMenu->addSeparator();
aMenu->addAction(action("HIDE_CMD"));
- } else if (!hasParameter) {
+ } else if (hasResult && (!hasParameter)) {
aMenu->addAction(action("SHOW_CMD"));
}
- if (hasParameter)
- aMenu->addAction(action("EDIT_CMD"));
- else
+
+ ResultPartPtr aPartRes = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObject);
+ if (aPartRes) {
+ aMenu->addAction(action("SHOW_CMD"));
+ }
+
+ if (!(hasParameter || hasFeature))
aMenu->addAction(action("SHOW_ONLY_CMD"));
}
- } else { // If feature is 0 the it means that selected root object (document)
- if (aMgr->activeDocument() != aMgr->moduleDocument())
- aMenu->addAction(action("ACTIVATE_PART_CMD"));
- }
+ }
} else {
if (hasResult && (!hasParameter)) {
aMenu->addAction(action("SHOW_CMD"));
aMenu->addAction(action("COLOR_CMD"));
aMenu->addSeparator();
+ ModuleBase_IModule* aModule = myWorkshop->module();
+ if (aModule) {
+ aModule->addObjectBrowserMenu(aMenu);
+ aMenu->addSeparator();
+ }
aMenu->addActions(myWorkshop->objectBrowser()->actions());
- ModuleBase_IModule* aModule = myWorkshop->module();
- if (aModule)
- aModule->addObjectBrowserItems(aMenu);
if (aMenu->actions().size() > 0) {
return aMenu;
QMenu* XGUI_ContextMenuMgr::viewerMenu() const
{
QMenu* aMenu = new QMenu();
- addViewerItems(aMenu);
+ addViewerMenu(aMenu);
if (aMenu->actions().size() > 0) {
return aMenu;
}
return 0;
}
-void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const
+void XGUI_ContextMenuMgr::addViewerMenu(QMenu* theMenu) const
{
bool aIsDone = false;
ModuleBase_IModule* aModule = myWorkshop->module();
if (aModule)
- aIsDone = aModule->addViewerItems(theMenu, myActions);
+ aIsDone = aModule->addViewerMenu(theMenu, myActions);
if (!aIsDone) {
XGUI_SelectionMgr* aSelMgr = myWorkshop->selector();
QObjectPtrList aObjects = aSelMgr->selection()->selectedObjects();
if (aObjects.size() > 0) {
- //if (aObjects.size() == 1)
- // theMenu->addAction(action("EDIT_CMD"));
bool isVisible = false;
bool isShading = false;
bool canBeShaded = false;
foreach(ObjectPtr aObject, aObjects)
{
ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObject);
- if (aRes && myWorkshop->displayer()->isVisible(aRes)) {
+ if (aRes && aRes->isDisplayed()) {
isVisible = true;
canBeShaded = myWorkshop->displayer()->canBeShaded(aObject);
isShading = (myWorkshop->displayer()->displayMode(aObject) == XGUI_Displayer::Shading);
theMenu->addAction(action("HIDE_CMD"));
} else
theMenu->addAction(action("SHOW_CMD"));
- //theMenu->addAction(action("DELETE_CMD"));
}
if (myWorkshop->displayer()->objectsCount() > 0)
theMenu->addAction(action("HIDEALL_CMD"));