예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 /**
  * 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);
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
0
 /**
  * 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();
 }
예제 #6
0
 /**
 @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);
 }
예제 #7
0
/**
 * 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();
}
예제 #8
0
    /**
    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);
    }
예제 #9
0
/**
 * 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();
  }
}
예제 #10
0
 /**
  * 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();
 }