#include <XGUI_QtEvents.h>
#include <XGUI_DataModel.h>
#include <XGUI_InspectionPanel.h>
+#include <XGUI_CompressFiles.h>
#ifndef HAVE_SALOME
#include <AppElements_Button.h>
//#define DEBUG_FEATURE_NAME
//#define DEBUG_CLEAN_HISTORY
+#ifdef HAVE_SALOME
+static QString MyFilter(QObject::tr("SHAPER files (*.shaper *.opp)"));
+static QString MyFilter2(QObject::tr("SHAPER files (*.shaper)"));
+static QString MyExtension(".shaper");
+#else
+static QString MyFilter(QObject::tr("OpenParts files (*.opp);;All files (*.*)"));
+static QString MyFilter2(QObject::tr("OpenParts files (*.opp)"));
+static QString MyExtension(".opp");
+#endif
+
+
//******************************************************
XGUI_Workshop::XGUI_Workshop(XGUI_SalomeConnector* theConnector)
: QObject(),
- myCurrentDir(QString()),
myModule(NULL),
mySalomeConnector(theConnector),
myPropertyPanel(0),
delete myDisplayer;
delete myDataModelXMLReader;
+ delete mySelectionActivate;
+ delete myMenuMgr;
+ clearTemporaryDir();
}
//******************************************************
salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
- aAction = salomeConnector()->addDesktopCommand("AUTOCOMPUTE_CMD", tr("Block auto-apply"),
+ aAction = salomeConnector()->addDesktopCommand("AUTOCOMPUTE_CMD", tr("Auto rebuild"),
tr("Blocks immediate apply of modifications"),
QIcon(":pictures/autoapply.png"), QKeySequence(),
- true, "MEN_DESK_EDIT");
+ false, "MEN_DESK_EDIT");
salomeConnector()->addActionInToolbar( aAction, aToolBarTitle );
- connect(aAction, SIGNAL(toggled(bool)), this, SLOT(onAutoApply(bool)));
+ connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onAutoApply()));
salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT");
} else if (anAnswer == QMessageBox::Cancel) {
return;
}
- myCurrentDir = "";
+ myCurrentFile = QString();
}
//show file dialog, check if readable and open
- QString aDirectory = QFileDialog::getExistingDirectory(desktop(), tr("Select directory"));
- openDirectory(aDirectory);
+ QString aFile = QFileDialog::getOpenFileName(desktop(), tr("Open file"), QString(), MyFilter);
+ if (!aFile.isNull())
+ openFile(aFile);
}
//******************************************************
-void XGUI_Workshop::openDirectory(const QString& theDirectory)
+void XGUI_Workshop::openFile(const QString& theDirectory)
{
- myCurrentDir = theDirectory;
- if (myCurrentDir.isEmpty())
+ myCurrentFile = theDirectory;
+ if (myCurrentFile.isEmpty())
return;
- QFileInfo aFileInfo(myCurrentDir);
+ QFileInfo aFileInfo(myCurrentFile);
if (!aFileInfo.exists() || !aFileInfo.isReadable()) {
QMessageBox::critical(desktop(), tr("Warning"), tr("Unable to open the file."));
- myCurrentDir = "";
+ myCurrentFile = QString();
return;
}
module()->closeDocument();
SessionPtr aSession = ModelAPI_Session::get();
aSession->closeAll();
- aSession->load(myCurrentDir.toLatin1().constData());
+
+ clearTemporaryDir();
+ if (!XGUI_CompressFiles::uncompress(myCurrentFile, myTmpDir.path()))
+ return;
+
+ aSession->load(myTmpDir.path().toLatin1().constData());
myObjectBrowser->rebuildDataTree();
// Open first level of data tree
updateCommandStatus();
#ifndef HAVE_SALOME
- myMainWindow->setCurrentDir(myCurrentDir, true);
+ myMainWindow->setCurrentDir(myCurrentFile, true);
#endif
#ifdef _DEBUG
{
if(!myOperationMgr->abortAllOperations(XGUI_OperationMgr::XGUI_InformationMessage))
return false;
- if (myCurrentDir.isEmpty()) {
+ if (myCurrentFile.isEmpty()) {
return onSaveAs();
}
SessionPtr aMgr = ModelAPI_Session::get();
aMgr->blockAutoUpdate(false);
std::list<std::string> aFiles;
- saveDocument(myCurrentDir, aFiles);
+ saveDocument(myTmpDir.path(), aFiles);
+ if (!XGUI_CompressFiles::compress(myCurrentFile, aFiles))
+ return false;
+
updateCommandStatus();
#ifndef HAVE_SALOME
myMainWindow->setModifiedState(false);
{
if(!myOperationMgr->abortAllOperations(XGUI_OperationMgr::XGUI_InformationMessage))
return false;
- QFileDialog dialog(desktop());
- dialog.setWindowTitle(tr("Select directory to save files..."));
- dialog.setFileMode(QFileDialog::Directory);
- dialog.setFilter(QDir::AllDirs);
- dialog.setOptions(QFileDialog::HideNameFilterDetails | QFileDialog::ShowDirsOnly);
- dialog.setViewMode(QFileDialog::Detail);
-
- if (!dialog.exec()) {
- return false;
- }
-
- QString aTempDir = dialog.selectedFiles().first();
- QDir aDir(aTempDir);
- if (aDir.exists() && !aDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries).isEmpty()) {
- int answer = QMessageBox::question(
- desktop(),
- // Title of the dialog which asks user if he wants to save study
- // in existing non-empty folder
- tr("Save"),
- tr("The directory already contains some files, save anyway?"),
- QMessageBox::Save | QMessageBox::Cancel);
- if (answer == QMessageBox::Cancel) {
- return false;
+ myCurrentFile = QFileDialog::getSaveFileName(desktop(), tr("Select name to save file..."),
+ QString(), MyFilter2);
+ if (!myCurrentFile.isNull()) {
+ if (!myCurrentFile.endsWith(MyExtension)) {
+ myCurrentFile += MyExtension;
}
}
- myCurrentDir = aTempDir;
+ else
+ return false;
#ifndef HAVE_SALOME
- myMainWindow->setCurrentDir(myCurrentDir, false);
+ myMainWindow->setCurrentDir(myCurrentFile, false);
myMainWindow->setModifiedState(false);
#endif
return onSave();
}
if (aSelList.count() > theObjects.count()) {
// if something was found
- bool aBlocked = objectBrowser()->blockSignals(true);
objectBrowser()->setObjectsSelected(aSelList);
- objectBrowser()->blockSignals(aBlocked);
objectBrowser()->ensureVisible(aNewSel.first());
}
if (aHasHidden)
}
if (aSelList.count() > theObjects.count()) {
// if something was found
- bool aBlocked = objectBrowser()->blockSignals(true);
objectBrowser()->setObjectsSelected(aSelList);
- objectBrowser()->blockSignals(aBlocked);
objectBrowser()->ensureVisible(aNewSel.first());
}
}
bool isComputeBlocked = aMgr->isAutoUpdateBlocked();
#ifdef HAVE_SALOME
QAction* aUpdateCmd;
- QList<QAction*> aCommands = workshop()->salomeConnector()->commandList();
+ QList<QAction*> aCommands = mySalomeConnector->commandList();
foreach(QAction* aCmd, aCommands) {
if (aCmd->data().toString() == "AUTOCOMPUTE_CMD") {
aUpdateCmd = aCmd;
QIcon(":pictures/autoapply_start.png"));
#endif
}
+
+
+void XGUI_Workshop::clearTemporaryDir()
+{
+ QDir aDir(myTmpDir.path());
+ if (!aDir.isEmpty()) {
+ QStringList aEntries;
+ aDir.entryList(aEntries);
+ foreach(QString aFile, aEntries) {
+ aDir.remove(aFile);
+ }
+ }
+}
\ No newline at end of file