#include "XGUI_ObjectsBrowser.h"
#include "XGUI_SelectionMgr.h"
+#include <ModelAPI_Data.h>
+#include <ModelAPI_AttributeDocRef.h>
+
#include <QAction>
#include <QContextMenuEvent>
#include <QMenu>
{
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);
}
void XGUI_ContextMenuMgr::addAction(const QString& theId, QAction* theAction)
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();
- if (aFeature->getKind() != "Part") {
- QMenu* aMenu = new QMenu();
- aMenu->addAction(action("EDIT_CMD"));
- return aMenu;
+ //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;
}