#include "XGUI_ViewerProxy.h"
#include "XGUI_PropertyPanel.h"
#include "XGUI_ContextMenuMgr.h"
+#include "XGUI_ModuleConnector.h"
#include <Model_Events.h>
#include <ModelAPI_PluginManager.h>
#include <ModelAPI_AttributeDocRef.h>
#include <ModelAPI_Object.h>
+#include <PartSetPlugin_Part.h>
+
#include <Events_Loop.h>
#include <Events_Error.h>
#include <ModuleBase_Operation.h>
this, SLOT(onContextMenuCommand(const QString&, bool)));
myViewerProxy = new XGUI_ViewerProxy(this);
+
+ myModuleConnector = new XGUI_ModuleConnector(this);
connect(myOperationMgr, SIGNAL(operationStarted()), SLOT(onOperationStarted()));
connect(myOperationMgr, SIGNAL(operationResumed()), SLOT(onOperationStarted()));
connect(myOperationMgr, SIGNAL(operationStopped(ModuleBase_Operation*)), SLOT(onOperationStopped(ModuleBase_Operation*)));
connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit()));
connect(myOperationMgr, SIGNAL(operationStarted()), myActionsMgr, SLOT(update()));
- connect(myOperationMgr, SIGNAL(operationStopped()), myActionsMgr, SLOT(update()));
+ connect(myOperationMgr, SIGNAL(operationStopped(ModuleBase_Operation*)), myActionsMgr, SLOT(update()));
connect(this, SIGNAL(errorOccurred(const QString&)), myErrorDlg, SLOT(addError(const QString&)));
}
Events_ID aFeatureUpdatedId = aLoop->eventByName(EVENT_FEATURE_UPDATED);
aLoop->registerListener(this, aFeatureUpdatedId);
aLoop->registerListener(this, Events_Loop::eventByName(EVENT_FEATURE_CREATED));
- aLoop->registerListener(this, Events_Loop::eventByName(EVENT_FEATURE_DELETED));
activateModule();
if (myMainWindow) {
bool aHasPart = false;
for (aIt = aFeatures.begin(); aIt != aFeatures.end(); ++aIt) {
FeaturePtr aFeature = (*aIt);
- if (aFeature->getKind() == "Part") {
+ if (aFeature->getKind() == PARTSET_PART_KIND) {
aHasPart = true;
break;
}
}
}
- // Process deletion of a part
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_DELETED)) {
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
- if (aMgr->currentDocument() == aMgr->rootDocument())
- activatePart(FeaturePtr()); // Activate PartSet
- }
-
//Update property panel on corresponding message. If there is no current operation (no
//property panel), or received message has different feature to the current - do nothing.
static Events_ID aFeatureUpdatedId = Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED);
//An operation passed by message. Start it, process and commit.
const Config_PointerMessage* aPartSetMsg = dynamic_cast<const Config_PointerMessage*>(theMessage);
if (aPartSetMsg) {
+ // Clear previous content
+ myPropertyPanel->cleanContent();
ModuleBase_Operation* anOperation =
(ModuleBase_Operation*)(aPartSetMsg->pointer());
const Events_Error* anAppError = dynamic_cast<const Events_Error*>(theMessage);
if (anAppError) {
emit errorOccurred(QString::fromLatin1(anAppError->description()));
- myErrorDlg->show();
- myErrorDlg->raise();
- myErrorDlg->activateWindow();
}
}
showPropertyPanel();
- ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aOperation);
+ ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aOperation, myModuleConnector);
QWidget* aContent = myPropertyPanel->contentWidget();
qDeleteAll(aContent->children());
aFactory.createWidget(aContent);
QString::fromStdString(theMessage->tooltip()),
QIcon(theMessage->icon().c_str()),
QKeySequence(), isUsePropPanel);
- myActionsMgr->addCommand(aAction);
salomeConnector()->setNestedActions(aId, aNestedFeatures.split(" "));
+ myActionsMgr->addCommand(aAction);
myPartSetModule->featureCreated(aAction);
} else {
objectBrowser()->treeView()->setCurrentIndex(QModelIndex());
PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
DocumentPtr aDoc = aMgr->rootDocument();
+ if (aDoc->isOperation())
+ operationMgr()->abortOperation();
aDoc->redo();
updateCommandStatus();
}
connect(aOkBtn, SIGNAL(clicked()), myOperationMgr, SLOT(onCommitOperation()));
QPushButton* aCancelBtn = myPropertyPanel->findChild<QPushButton*>(XGUI::PROP_PANEL_CANCEL);
connect(aCancelBtn, SIGNAL(clicked()), myOperationMgr, SLOT(onAbortOperation()));
+
+ connect(myPropertyPanel, SIGNAL(keyReleased(const std::string&, QKeyEvent*)),
+ myOperationMgr, SLOT(onKeyReleased(const std::string&, QKeyEvent*)));
}
//******************************************************
PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
if (thePart) {
DocumentPtr aFeaDoc;
- if (thePart->data()) {
+ if (!XGUI_Tools::isModelObject(thePart)) {
aFeaDoc = thePart->data()->docRef("PartDocument")->value();
} else {
ObjectPtr aObject = boost::dynamic_pointer_cast<ModelAPI_Object>(thePart);
activatePart(FeaturePtr());
else if (theId == "DELETE_CMD")
deleteFeatures(aFeatures);
+ else if (theId == "SHOW_CMD")
+ showFeatures(aFeatures, true);
+ else if (theId == "HIDE_CMD")
+ showFeatures(aFeatures, false);
}
//**************************************************************
PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
aMgr->rootDocument()->startOperation();
foreach (FeaturePtr aFeature, theList) {
- if (aFeature->getKind() == "Part") {
+ if (aFeature->getKind() == PARTSET_PART_KIND) {
DocumentPtr aDoc;
- if (aFeature->data()) {
+ if (!XGUI_Tools::isModelObject(aFeature)) {
aDoc = aFeature->data()->docRef("PartDocument")->value();
} else {
ObjectPtr aObject = boost::dynamic_pointer_cast<ModelAPI_Object>(aFeature);
aDoc->close();
}
} else {
- if (!aFeature->data()) {
+ if (XGUI_Tools::isModelObject(aFeature)) {
ObjectPtr aObject = boost::dynamic_pointer_cast<ModelAPI_Object>(aFeature);
aFeature = aObject->featureRef();
}
aMgr->rootDocument()->finishOperation();
}
}
+
+//**************************************************************
+void XGUI_Workshop::showFeatures(QFeatureList theList, bool isVisible)
+{
+// foreach (FeaturePtr aFeature, theList) {
+// }
+}