#include "XGUI_Preferences.h"
#include <ModelAPI_Events.h>
-#include <ModelAPI_PluginManager.h>
+#include <ModelAPI_Session.h>
#include <ModelAPI_Feature.h>
#include <ModelAPI_Data.h>
#include <ModelAPI_AttributeDocRef.h>
if (!aFeatureMsg->isInternal()) {
addFeature(aFeatureMsg);
}
- return;
}
// Process creation of Part
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_CREATED)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_CREATED)) {
const ModelAPI_ObjectUpdatedMessage* aUpdMsg =
dynamic_cast<const ModelAPI_ObjectUpdatedMessage*>(theMessage);
onFeatureCreatedMsg(aUpdMsg);
mySalomeConnector->createPreferences();
myUpdatePrefs = false;
}
- return;
}
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_PLUGIN_LOADED)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_PLUGIN_LOADED)) {
myUpdatePrefs = true;
- return;
}
// Redisplay feature
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_TO_REDISPLAY)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_TO_REDISPLAY)) {
const ModelAPI_ObjectUpdatedMessage* aUpdMsg =
dynamic_cast<const ModelAPI_ObjectUpdatedMessage*>(theMessage);
onFeatureRedisplayMsg(aUpdMsg);
- return;
}
//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.
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) {
const ModelAPI_ObjectUpdatedMessage* anUpdateMsg =
dynamic_cast<const ModelAPI_ObjectUpdatedMessage*>(theMessage);
onFeatureUpdatedMsg(anUpdateMsg);
- return;
}
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED)) {
const ModelAPI_ObjectDeletedMessage* aDelMsg =
dynamic_cast<const ModelAPI_ObjectDeletedMessage*>(theMessage);
onObjectDeletedMsg(aDelMsg);
- return;
}
- if (theMessage->eventID() == Events_LongOp::eventID()) {
+ else if (theMessage->eventID() == Events_LongOp::eventID()) {
if (Events_LongOp::isPerformed())
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
//QTimer::singleShot(10, this, SLOT(onStartWaiting()));
else
QApplication::restoreOverrideCursor();
- return;
}
//An operation passed by message. Start it, process and commit.
- if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OPERATION_LAUNCHED)) {
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OPERATION_LAUNCHED)) {
const Config_PointerMessage* aPartSetMsg =
dynamic_cast<const Config_PointerMessage*>(theMessage);
//myPropertyPanel->cleanContent();
updateCommandStatus();
}
}
- return;
+ } else {
+ //Show error dialog if error message received.
+ const Events_Error* anAppError = dynamic_cast<const Events_Error*>(theMessage);
+ if (anAppError) {
+ emit errorOccurred(QString::fromLatin1(anAppError->description()));
+ }
}
- //Show error dialog if error message received.
- const Events_Error* anAppError = dynamic_cast<const Events_Error*>(theMessage);
- if (anAppError) {
- emit errorOccurred(QString::fromLatin1(anAppError->description()));
+ if (!isSalomeMode()) {
+ PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ DocumentPtr aDoc = aMgr->rootDocument();
+ if (aDoc->isModified() != myMainWindow->isModifiedState())
+ myMainWindow->setModifiedState(aDoc->isModified());
}
}
void XGUI_Workshop::onOperationStarted()
{
ModuleBase_Operation* aOperation = myOperationMgr->currentOperation();
- aOperation->setNestedFeatures(myActionsMgr->nestedCommands(aOperation->id()));
-
+ if (this->isSalomeMode())
+ aOperation->setNestedFeatures(mySalomeConnector->nestedActions(aOperation->id()));
+ else
+ aOperation->setNestedFeatures(myActionsMgr->nestedCommands(aOperation->id()));
+
if (aOperation->getDescription()->hasXmlRepresentation()) { //!< No need for property panel
connectWithOperation(aOperation);
for (; anIt != aLast; anIt++) {
aWidget = *anIt;
aWidget->setFeature(aOperation->feature());
- //QObject::connect(aWidget, SIGNAL(valuesChanged()), aOperation, SLOT(storeCustomValue()));
QObject::connect(aWidget, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged()));
// Init default values
- if (!aOperation->isEditOperation()) {
- //aWidget->storeValue(aOperation->feature());
-
+ if (!aOperation->isEditOperation() && !aWidget->isComputedDefault()) {
aWidget->storeValue();
}
}
QString::fromStdString(theMessage->tooltip()),
QIcon(theMessage->icon().c_str()),
QKeySequence(), isUsePropPanel);
- salomeConnector()->setNestedActions(aFeatureId, aNestedFeatures.split(" "));
+ salomeConnector()->setNestedActions(aFeatureId, aNestedFeatures.split(" ", QString::SkipEmptyParts));
myActionsMgr->addCommand(aAction);
myModule->featureCreated(aAction);
} else {
/*
* Saves document with given name.
*/
-void XGUI_Workshop::saveDocument(QString theName)
+void XGUI_Workshop::saveDocument(const QString& theName, std::list<std::string>& theFileNames)
{
QApplication::restoreOverrideCursor();
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
- aDoc->save(theName.toLatin1().constData());
+ aDoc->save(theName.toLatin1().constData(), theFileNames);
QApplication::restoreOverrideCursor();
}
//******************************************************
void XGUI_Workshop::onExit()
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
if (aDoc->isModified()) {
int anAnswer = QMessageBox::question(
void XGUI_Workshop::onOpen()
{
//save current file before close if modified
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
if (aDoc->isModified()) {
//TODO(sbh): re-launch the app?
if (myCurrentDir.isEmpty()) {
return onSaveAs();
}
- saveDocument(myCurrentDir);
+ std::list<std::string> aFiles;
+ saveDocument(myCurrentDir, aFiles);
updateCommandStatus();
+ myMainWindow->setModifiedState(false);
return true;
}
}
}
myCurrentDir = aTempDir;
+ if (!isSalomeMode()) {
+ myMainWindow->setCurrentDir(myCurrentDir, false);
+ myMainWindow->setModifiedState(false);
+ }
return onSave();
}
void XGUI_Workshop::onUndo()
{
objectBrowser()->treeView()->setCurrentIndex(QModelIndex());
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
if (aDoc->isOperation())
operationMgr()->abortOperation();
void XGUI_Workshop::onRedo()
{
objectBrowser()->treeView()->setCurrentIndex(QModelIndex());
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
if (aDoc->isOperation())
operationMgr()->abortOperation();
foreach (XGUI_Command* aCmd, aMenuBar->features())
aCommands.append(aCmd);
}
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
if (aMgr->hasRootDocument()) {
QAction* aUndoCmd;
QAction* aRedoCmd;
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*)));
+//TODO(sbh): KeyReleasedProblem
+ connect(myPropertyPanel, SIGNAL(keyReleased(QKeyEvent*)), myOperationMgr,
+ SLOT(onKeyReleased(QKeyEvent*)));
connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), myOperationMgr,
SLOT(onWidgetActivated(ModuleBase_ModelWidget*)));
//******************************************************
void XGUI_Workshop::changeCurrentDocument(ObjectPtr theObj)
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
if (theObj) {
ResultPartPtr aPart = boost::dynamic_pointer_cast<ModelAPI_ResultPart>(theObj);
if (aPart) {
//**************************************************************
void XGUI_Workshop::activateLastPart()
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aDoc = aMgr->rootDocument();
std::string aGrpName = ModelAPI_ResultPart::group();
ObjectPtr aLastPart = aDoc->object(aGrpName, aDoc->size(aGrpName) - 1);
QMessageBox::No | QMessageBox::Yes, QMessageBox::No);
// ToDo: definbe deleting method
if (aRes == QMessageBox::Yes) {
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
aMgr->rootDocument()->startOperation();
foreach (ObjectPtr aObj, theList)
{
//**************************************************************
void XGUI_Workshop::updateCommandsOnViewSelection()
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
XGUI_Selection* aSelection = mySelector->selection();
if (aSelection->getSelected().size() == 0)
//**************************************************************
void XGUI_Workshop::registerValidators() const
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
}
//**************************************************************
void XGUI_Workshop::displayAllResults()
{
- PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aRootDoc = aMgr->rootDocument();
displayDocumentResults(aRootDoc);
for (int i = 0; i < aRootDoc->size(ModelAPI_ResultPart::group()); i++) {