Skip to content
Snippets Groups Projects
WorkspaceTreeWidgetSimple.cpp 2.63 KiB
Newer Older
#include "MantidQtWidgets/Common/WorkspacePresenter/WorkspaceTreeWidgetSimple.h"
#include <MantidQtWidgets/Common/MantidTreeWidget.h>
#include <MantidQtWidgets/Common/MantidTreeWidgetItem.h>
#include "MantidQtWidgets/Common/MantidTreeModel.h"

#include <MantidAPI/AlgorithmManager.h>
#include <MantidAPI/FileProperty.h>
#include <MantidAPI/MatrixWorkspace.h>
#include <MantidAPI/WorkspaceGroup.h>
#include <MantidAPI/ITableWorkspace.h>

#include <QMenu>
#include <QSignalMapper>

using namespace Mantid::API;
using namespace Mantid::Kernel;

namespace MantidQt {
Elliot Oram's avatar
Elliot Oram committed
namespace MantidWidgets {

WorkspaceTreeWidgetSimple::WorkspaceTreeWidgetSimple(QWidget *parent)
    : WorkspaceTreeWidget(new MantidTreeModel(), parent),
      m_plotSpectrum(new QAction("spectrum...", this)),
      m_plotSpectrumWithErrs(new QAction("spectrum with errors...", this)),
      m_plotColorfill(new QAction("colorfill", this)) {
  connect(m_plotSpectrum, SIGNAL(triggered()), this,
          SLOT(onPlotSpectrumClicked()));
  connect(m_plotSpectrumWithErrs, SIGNAL(triggered()), this,
          SLOT(onPlotSpectrumWithErrorsClicked()));
  connect(m_plotColorfill, SIGNAL(triggered()), this,
          SLOT(onPlotColorfillClicked()));
Elliot Oram's avatar
Elliot Oram committed
WorkspaceTreeWidgetSimple::~WorkspaceTreeWidgetSimple() {}
Elliot Oram's avatar
Elliot Oram committed

void WorkspaceTreeWidgetSimple::popupContextMenu() {
  QTreeWidgetItem *treeItem = m_tree->itemAt(m_menuPosition);
  selectedWsName = "";
  if (treeItem)
    selectedWsName = treeItem->text(0);
  else
    m_tree->selectionModel()->clear();

  QMenu *menu(nullptr);

  // If no workspace is here then have load items
Elliot Oram's avatar
Elliot Oram committed
  if (selectedWsName.isEmpty())
    menu = m_loadMenu;
Elliot Oram's avatar
Elliot Oram committed
    menu = new QMenu(this);
    menu->setObjectName("WorkspaceContextMenu");

    // plot submenu first
    QMenu *plotSubMenu(new QMenu("Plot", menu));
    plotSubMenu->addAction(m_plotSpectrum);
    plotSubMenu->addAction(m_plotSpectrumWithErrs);
    plotSubMenu->addAction(m_plotColorfill);
    menu->addMenu(plotSubMenu);
    menu->addSeparator();
Elliot Oram's avatar
Elliot Oram committed
    menu->addAction(m_rename);
    menu->addAction(m_saveNexus);

Elliot Oram's avatar
Elliot Oram committed
    menu->addSeparator();
    menu->addAction(m_delete);
  }

  // Show the menu at the cursor's current position
  menu->popup(QCursor::pos());
}

void WorkspaceTreeWidgetSimple::onPlotSpectrumClicked() {
  emit plotSpectrumClicked(getSelectedWorkspaceNamesAsQList());
}

void WorkspaceTreeWidgetSimple::onPlotSpectrumWithErrorsClicked() {
  emit plotSpectrumWithErrorsClicked(getSelectedWorkspaceNamesAsQList());
void WorkspaceTreeWidgetSimple::onPlotColorfillClicked() {
  emit plotColorfillClicked(getSelectedWorkspaceNamesAsQList());
}

Elliot Oram's avatar
Elliot Oram committed
} // namespace MantidWidgets
} // namespace MantidQt