void WorkspacePresenter::ungroupWorkspaces() { auto view = lockView(); auto selected = view->getSelectedWorkspaceNames(); if (selected.size() == 0) { view->showCriticalUserMessage("Error Ungrouping Workspaces", "Select a group workspace to Ungroup."); return; } try { // workspace name auto wsname = selected[0]; std::string algName("UnGroupWorkspace"); Mantid::API::IAlgorithm_sptr alg = Mantid::API::AlgorithmManager::Instance().create(algName, -1); alg->initialize(); alg->setProperty("InputWorkspace", wsname); // execute the algorithm bool bStatus = alg->execute(); if (!bStatus) { view->showCriticalUserMessage("MantidPlot - Algorithm error", " Error in UnGroupWorkspace algorithm"); } } catch (...) { view->showCriticalUserMessage("MantidPlot - Algorithm error", " Error in UnGroupWorkspace algorithm"); } }
/** This method executes the ListInstruments algorithm * and fills the instrument box with instrument lists returned by ICat API * @return shared pointer to workspace which contains instrument names */ std::vector<std::string> ICatUtils::executeListInstruments() { QString algName("CatalogListInstruments"); const int version=-1; Mantid::API::IAlgorithm_sptr alg; try { alg = Mantid::API::AlgorithmManager::Instance().create(algName.toStdString(),version); } catch(...) { throw std::runtime_error("Error when Populating the instrument list box"); } Poco::ActiveResult<bool> result(alg->executeAsync()); while( !result.available() ) { QCoreApplication::processEvents(); } if(!alg->isExecuted()) { //if the algorithm failed check the session id passed is valid if(!isSessionValid(alg)) { //at this point session is invalid, popup loginbox to login if(login()) { //now populate instrument box std::vector<std::string> instruments =executeListInstruments(); return instruments; } else { throw std::runtime_error("Please Login to the information catalog using the login menu provided to do the investigation search."); } } else { return std::vector<std::string>(); } } std::vector<std::string>instrlist; try { instrlist= alg->getProperty("InstrumentList"); } catch (Mantid::Kernel::Exception::NotFoundError&) { throw; } return instrlist; }
bool ICatUtils::login() { QString algName("CatalogLogin"); const int version =-1; Mantid::API::IAlgorithm_sptr alg; try { alg = Mantid::API::AlgorithmManager::Instance().create(algName.toStdString(),version); } catch(...) { throw std::runtime_error("Error when Populating the instrument list box"); } if(!m_applicationWindow) {return false;} MantidQt::API::InterfaceManager interfaceManager; MantidQt::API::AlgorithmDialog *dlg = interfaceManager.createDialog(alg.get(), m_applicationWindow); if(!dlg) return false; if(dlg->exec()==QDialog::Accepted) { delete dlg; Poco::ActiveResult<bool> result(alg->executeAsync()); while( !result.available() ) { QCoreApplication::processEvents(); } if(!alg->isExecuted()) { return false; } return true; } else { return false; } }
void WorkspacePresenter::groupWorkspaces() { auto view = lockView(); auto selected = view->getSelectedWorkspaceNames(); std::string groupName("NewGroup"); // get selected workspaces if (selected.size() < 2) { view->showCriticalUserMessage("Cannot Group Workspaces", "Select at least two workspaces to group "); return; } if (m_adapter->doesWorkspaceExist(groupName)) { if (!view->askUserYesNo("", "Workspace " + groupName + " already exists. Do you want to replace it?")) return; } try { std::string algName("GroupWorkspaces"); Mantid::API::IAlgorithm_sptr alg = Mantid::API::AlgorithmManager::Instance().create(algName, -1); alg->initialize(); alg->setProperty("InputWorkspaces", selected); alg->setPropertyValue("OutputWorkspace", groupName); // execute the algorithm bool bStatus = alg->execute(); if (!bStatus) { view->showCriticalUserMessage("MantidPlot - Algorithm error", " Error in GroupWorkspaces algorithm"); } } catch (...) { view->showCriticalUserMessage("MantidPlot - Algorithm error", " Error in GroupWorkspaces algorithm"); } }