Skip to content
Snippets Groups Projects
SpecularFrame.cpp 2.05 KiB
//  ************************************************************************************************
//
//  BornAgain: simulate and fit reflection and scattering
//
//! @file      GUI/View/Frame/SpecularFrame.cpp
//! @brief     Implements class SpecularFrame.
//!
//! @homepage  http://www.bornagainproject.org
//! @license   GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
//  ************************************************************************************************

#include "GUI/View/Frame/SpecularFrame.h"
#include "Base/Util/Assert.h"
#include "GUI/Model/Data/Data1DItem.h"
#include "GUI/Model/Device/DatafileItem.h"
#include "GUI/View/Canvas/SpecularDataCanvas.h"
#include "GUI/View/Setup/AxisPanel.h"
#include "GUI/View/Setup/FrameActions.h"
#include <QBoxLayout>
#include <QMenu>

SpecularFrame::SpecularFrame(Data1DItem* item)
    : m_specular_canvas(new SpecularDataCanvas)
    , m_axis_panel(new AxisPanel)
//    , m_data_item(item)
{
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    m_axis_panel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
    QObject::connect(gActions->toggle_properties_panel, &QAction::triggered, m_axis_panel,
                     &QWidget::setVisible);

    auto* hlayout = new QHBoxLayout(this);
    hlayout->setContentsMargins(0, 0, 0, 0);
    hlayout->setSpacing(0);
    hlayout->addWidget(m_specular_canvas);
    hlayout->addWidget(m_axis_panel);

    connect(m_specular_canvas, &SpecularDataCanvas::customContextMenuRequested, this,
            &SpecularFrame::onContextMenuRequest);

    m_axis_panel->setVisible(false);

    ASSERT(item);
    m_specular_canvas->setDataItem(item);
    m_axis_panel->setJobOrDatafileItem(item);
}

void SpecularFrame::onContextMenuRequest(const QPoint& point)
{
    QMenu menu;
    menu.addAction(gActions->reset_view);
    menu.addAction(gActions->save_plot);
    menu.addAction(gActions->toggle_properties_panel);
    menu.exec(point);
}