Skip to content

Commit

Permalink
Added a save button to MantidDOck widget
Browse files Browse the repository at this point in the history
Refs #10125
  • Loading branch information
DanNixon committed Aug 20, 2014
1 parent b2cb770 commit c918721
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
52 changes: 52 additions & 0 deletions Code/Mantid/MantidPlot/src/Mantid/MantidDock.cpp
Expand Up @@ -52,12 +52,14 @@ MantidDockWidget::MantidDockWidget(MantidUI *mui, ApplicationWindow *parent) :

FlowLayout * buttonLayout = new FlowLayout();
m_loadButton = new QPushButton("Load");
m_saveButton = new QPushButton("Save");
m_deleteButton = new QPushButton("Delete");
m_groupButton= new QPushButton("Group");
m_sortButton= new QPushButton("Sort");
if(m_groupButton)
m_groupButton->setEnabled(false);
buttonLayout->addWidget(m_loadButton);
buttonLayout->addWidget(m_saveButton);
buttonLayout->addWidget(m_deleteButton);
buttonLayout->addWidget(m_groupButton);
buttonLayout->addWidget(m_sortButton);
Expand All @@ -82,10 +84,16 @@ MantidDockWidget::MantidDockWidget(MantidUI *mui, ApplicationWindow *parent) :
m_loadMenu->addAction(liveDataAction);
m_loadButton->setMenu(m_loadMenu);

// Dialog box used for user to specify fodler to save multiple workspaces into
m_saveFolderDialog = new QFileDialog;
m_saveFolderDialog->setFileMode(QFileDialog::DirectoryOnly);
m_saveFolderDialog->setOption(QFileDialog::ShowDirsOnly);

// SET UP SORT
createSortMenuActions();
createWorkspaceMenuActions();

connect(m_saveButton,SIGNAL(clicked()),this,SLOT(saveWorkspaces()));
connect(m_deleteButton,SIGNAL(clicked()),this,SLOT(deleteWorkspaces()));
connect(m_tree,SIGNAL(itemClicked(QTreeWidgetItem*, int)),this,SLOT(clickedWorkspace(QTreeWidgetItem*, int)));
connect(m_tree,SIGNAL(itemSelectionChanged()),this,SLOT(workspaceSelected()));
Expand Down Expand Up @@ -657,6 +665,50 @@ void MantidDockWidget::workspaceSelected()
}
}

/**
* Save all selected workspaces
*/
void MantidDockWidget::saveWorkspaces()
{
QList<QTreeWidgetItem*> items = m_tree->selectedItems();
if(items.empty())
return;

// Call same save asction as popup menu for a single workspace
if(items.size() == 1)
{
m_mantidUI->saveNexusWorkspace();
}
else
{
m_saveFolderDialog->open(this, SLOT(saveWorkspacesToFolder(const QString &)));
}
}

/**
* Handler for the directory browser being closed when selecting save on multiple workspaces
*
* @param folder Path to folder to save workspaces in
*/
void MantidDockWidget::saveWorkspacesToFolder(const QString &folder)
{
QList<QTreeWidgetItem*> items = m_tree->selectedItems();

// Loop through multiple items selected from the mantid tree
QList<QTreeWidgetItem*>::iterator itr=items.begin();
for (itr = items.begin(); itr != items.end(); ++itr)
{
QString workspaceName = (*itr)->text(0);
QString filename = folder + "/" + workspaceName + ".nxs";

IAlgorithm_sptr saveAlg = AlgorithmManager::Instance().create("SaveNexus");
saveAlg->initialize();
saveAlg->setProperty("InputWorkspace", workspaceName.toStdString());
saveAlg->setProperty("Filename", filename.toStdString());
saveAlg->execute();
}
}

/**
deleteWorkspaces
*/
Expand Down
5 changes: 5 additions & 0 deletions Code/Mantid/MantidPlot/src/Mantid/MantidDock.h
Expand Up @@ -57,6 +57,7 @@ class MantidDockWidget: public QDockWidget

public slots:
void clickedWorkspace(QTreeWidgetItem*, int);
void saveWorkspaces();
void deleteWorkspaces();
void renameWorkspace();
void populateChildData(QTreeWidgetItem* item);
Expand All @@ -65,6 +66,8 @@ public slots:
void sortDescending();
void chooseByName();
void chooseByLastModified();
void saveWorkspacesToFolder(const QString &folder);

protected slots:
void popupMenu(const QPoint & pos);
void workspaceSelected();
Expand Down Expand Up @@ -115,12 +118,14 @@ private slots:
MantidUI * const m_mantidUI;

QPushButton *m_loadButton;
QPushButton *m_saveButton;
QMenu *m_loadMenu, *m_saveToProgram, *m_sortMenu;
QPushButton *m_deleteButton;
QPushButton *m_groupButton;
QPushButton *m_sortButton;
QSignalMapper *m_loadMapper, *m_programMapper;
QActionGroup *m_sortChoiceGroup;
QFileDialog *m_saveFolderDialog;

//Context-menu actions
QAction *m_showData, *m_showInst, *m_plotSpec, *m_plotSpecErr, *m_plotSpecDistr,
Expand Down

0 comments on commit c918721

Please sign in to comment.