#include "XGUI_ObjectsBrowser.h"
#include "XGUI_SelectionMgr.h"
+#include <ModelAPI_Data.h>
+#include <ModelAPI_AttributeDocRef.h>
+
#include <QAction>
#include <QContextMenuEvent>
#include <QMenu>
QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
{
+ QList<QAction*> aActions;
XGUI_SelectionMgr* aSelMgr = myWorkshop->selector();
QFeatureList aFeatures = aSelMgr->selectedFeatures();
if (aFeatures.size() == 1) {
+ PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
FeaturePtr aFeature = aFeatures.first();
- QMenu* aMenu = new QMenu();
- if (aFeature->getKind() == "Part") {
- //TODO: Check that feature is active
- aMenu->addAction(action("ACTIVATE_PART_CMD"));
- } else {
- aMenu->addAction(action("EDIT_CMD"));
+ //Process Feature
+ if (aFeature) {
+ if (aFeature->getKind() == "Part") {
+ boost::shared_ptr<ModelAPI_Document> aFeaDoc = aFeature->data()->docRef("PartDocument")->value();
+ if (aMgr->currentDocument() == aFeaDoc)
+ aActions.append(action("DEACTIVATE_PART_CMD"));
+ else
+ aActions.append(action("ACTIVATE_PART_CMD"));
+ } else {
+ aActions.append(action("EDIT_CMD"));
+ }
+
+ // Process Root object (document)
+ } else { // If feature is 0 the it means that selected root object (document)
+ if (aMgr->currentDocument() != aMgr->rootDocument()) {
+ aActions.append(action("ACTIVATE_PART_CMD"));
+ }
}
+ }
+ if (aActions.size() > 0) {
+ QMenu* aMenu = new QMenu();
+ aMenu->addActions(aActions);
return aMenu;
}
return 0;