/** * Zoom in on a given peak in a given peaks list according to the current viewing dimensions. * @param peaksWS : Peaks list from which a choosen peak will be zoomed into. * @param peakIndex : Index of the peak in the peaks list to zoom into. */ void CompositePeaksPresenter::zoomToPeak(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS, const int peakIndex) { auto iterator = getPresenterIteratorFromWorkspace(peaksWS); auto subjectPresenter = *iterator; auto boundingBox = subjectPresenter->getBoundingBox(peakIndex); m_zoomablePlottingWidget->zoomToRectangle(boundingBox); }
/** * Remove a peaks list altogether from the reporting and peaks overlays. * @param peaksWS : Peaks list to remove. */ void CompositePeaksPresenter::remove(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS) { if(useDefault()) { return; } auto iterator = getPresenterIteratorFromWorkspace(peaksWS); m_subjects.erase(iterator); }
/** * Allow the peaks list to be hidden or visible. * @param peaksWS : Peaks list to show/hide. * @param shown : True to show. */ void CompositePeaksPresenter::setShown(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS, const bool shown) { if(useDefault()) { return m_default->setShown(shown); } auto iterator = getPresenterIteratorFromWorkspace(peaksWS); (*iterator)->setShown(shown); }
/** * Set to show the background radius. * @param ws : Workspace upon which the backgoround radius should be shown/hidden. * @param shown : True to show. */ void CompositePeaksPresenter::setBackgroundRadiusShown(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> ws, const bool shown) { if(useDefault()) { return m_default->showBackgroundRadius(shown); } auto iterator = getPresenterIteratorFromWorkspace(ws); (*iterator)->showBackgroundRadius(shown); }
/** * Sort the peaks workspace. * @param peaksWS : Peaks list to sort. * @param columnToSortBy : Column to sort by. * @param sortedAscending : Direction of the sort. True for Ascending. */ void CompositePeaksPresenter::sortPeaksWorkspace(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS, const std::string& columnToSortBy, const bool sortedAscending) { auto iterator = getPresenterIteratorFromWorkspace(peaksWS); auto subjectPresenter = *iterator; subjectPresenter->sortPeaksWorkspace(columnToSortBy, sortedAscending); // We want to zoom out now, because any currently selected peak will be wrong. m_zoomablePlottingWidget->resetView(); m_zoomedPeakIndex = -1; m_zoomedPresenter.reset(); }
/** @param ws: PeakWorkspace to get the colour for. @return the background colour corresponding to the peaks workspace. */ QColor CompositePeaksPresenter::getBackgroundColour(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> ws) const { if(useDefault()) { throw std::runtime_error("Background colours from palette cannot be fetched until nested presenters are added."); } SubjectContainer::const_iterator iterator = getPresenterIteratorFromWorkspace(ws); const int pos = static_cast<int>(std::distance(m_subjects.begin(), iterator)); return m_palette.backgroundIndexToColour(pos); }
/** * Determine if the background is to be shown for a particular workspace. * @param ws * @return */ bool CompositePeaksPresenter::getShowBackground( boost::shared_ptr<const Mantid::API::IPeaksWorkspace> ws) const { if (useDefault()) { throw std::runtime_error("Get show background cannot be fetched until " "nested presenters are added."); } SubjectContainer::const_iterator iterator = getPresenterIteratorFromWorkspace(ws); return (*iterator)->getShowBackground(); }
/** Set the background colour of the peaks. @ workspace containing the peaks to re-colour @ colour to use for re-colouring */ void CompositePeaksPresenter::setBackgroundColour(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> ws,const QColor colour) { SubjectContainer::iterator iterator = getPresenterIteratorFromWorkspace(ws); // Update the palette background colour. const int pos = static_cast<int>(std::distance(m_subjects.begin(), iterator)); m_palette.setBackgroundColour(pos, colour); // Apply the background colour (*iterator)->setBackgroundColor(colour); }
/** * Remove a peaks list altogether from the reporting and peaks overlays. * @param peaksWS : Peaks list to remove. */ void CompositePeaksPresenter::remove( boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS) { if (useDefault()) { return; } auto iterator = getPresenterIteratorFromWorkspace(peaksWS); if (iterator != m_subjects.end()) { m_subjects.erase(iterator); } if (m_subjects.empty()) { this->m_zoomablePlottingWidget->detach(); } }
/** * Determine if the presenter is hidden. * @param peaksWS to use to find the right presenter. * @return True if hidden. */ bool CompositePeaksPresenter::getIsHidden(boost::shared_ptr<const Mantid::API::IPeaksWorkspace> peaksWS) const { auto iterator = getPresenterIteratorFromWorkspace(peaksWS); auto subjectPresenter = *iterator; return subjectPresenter->isHidden(); }