Skip to content
Snippets Groups Projects
Commit b549ec60 authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Enable specular plot canvas in specular data canvas

parent 7a039349
No related branches found
No related tags found
No related merge requests found
......@@ -18,46 +18,34 @@
#include "SavePlotAssistant.h"
#include "SpecularDataCanvas.h"
#include "SpecularDataItem.h"
#include "SpecularPlotCanvas.h"
#include "plot_constants.h"
SpecularDataCanvas::SpecularDataCanvas(QWidget* parent)
: SessionItemWidget(parent)
, m_customPlot(new QCustomPlot)
, m_resetViewAction(nullptr)
, m_savePlotAction(nullptr)
, m_plot_canvas(new SpecularPlotCanvas)
, m_reset_view_action(nullptr)
, m_save_plot_action(nullptr)
{
QVBoxLayout* vlayout = new QVBoxLayout(this);
vlayout->setMargin(0);
vlayout->setSpacing(0);
vlayout->setContentsMargins(0, 0, 0, 0);
vlayout->addWidget(m_customPlot);
vlayout->addWidget(m_plot_canvas);
setLayout(vlayout);
setStyleSheet("background-color:white;");
initGraph();
m_customPlot->xAxis->setTickLabelFont(QFont(QFont().family(), Constants::plot_tick_label_size));
m_customPlot->yAxis->setTickLabelFont(QFont(QFont().family(), Constants::plot_tick_label_size));
ColorMapUtils::setLogz(m_customPlot->yAxis, true);
m_customPlot->xAxis->setLabel("iteration");
m_customPlot->yAxis->setLabel("chi2");
m_customPlot->xAxis->setLabelFont(QFont(QFont().family(), Constants::plot_axes_label_size));
m_customPlot->yAxis->setLabelFont(QFont(QFont().family(), Constants::plot_axes_label_size));
initActions();
connect(m_customPlot, &QCustomPlot::mousePress, this,
connect(m_plot_canvas->customPlot(), &QCustomPlot::mousePress, this,
&SpecularDataCanvas::onMousePress, Qt::UniqueConnection);
}
void SpecularDataCanvas::setItem(SessionItem* intensityItem)
{
SessionItemWidget::setItem(intensityItem);
initGraphFromItem();
m_plot_canvas->setItem(intensityItem);
}
QSize SpecularDataCanvas::sizeHint() const { return QSize(500, 400); }
......@@ -66,7 +54,7 @@ QSize SpecularDataCanvas::minimumSizeHint() const { return QSize(128, 128); }
QList<QAction*> SpecularDataCanvas::actionList()
{
return QList<QAction*>() << m_resetViewAction << m_savePlotAction;
return QList<QAction*>() << m_reset_view_action << m_save_plot_action;
}
void SpecularDataCanvas::onResetViewAction() { specularDataItem()->resetView(); }
......@@ -75,7 +63,7 @@ void SpecularDataCanvas::onSavePlotAction()
{
QString dirname = AppSvc::projectManager()->userExportDir();
SavePlotAssistant saveAssistant;
saveAssistant.savePlot(dirname, m_customPlot, specularDataItem()->getOutputData());
saveAssistant.savePlot(dirname, m_plot_canvas->customPlot(), specularDataItem()->getOutputData());
}
void SpecularDataCanvas::onMousePress(QMouseEvent* event)
......@@ -91,31 +79,6 @@ void SpecularDataCanvas::onMousePress(QMouseEvent* event)
m_customPlot->replot();
}*/
void SpecularDataCanvas::initGraph()
{
m_customPlot->addGraph();
QPen pen(QColor(0, 0, 255, 200));
m_customPlot->graph()->setLineStyle(QCPGraph::lsLine);
m_customPlot->graph()->setPen(pen);
QFontMetrics fontMetric(font());
auto em = fontMetric.width('M'), fontAscent = fontMetric.ascent();
auto* axisRectangle = m_customPlot->axisRect();
axisRectangle->setAutoMargins(QCP::msTop | QCP::msBottom);
axisRectangle->setMargins(QMargins(em*4, fontAscent*2, em*2, fontAscent*2));
}
void SpecularDataCanvas::initGraphFromItem()
{
const auto underlying_data = specularDataItem()->getOutputData();
for (size_t i = 0, size = underlying_data->getAllocatedSize(); i < size; ++i) {
double x = underlying_data->getAxisValue(i, 0);
double y = underlying_data->operator[](i);
m_customPlot->graph()->addData(x, y);
}
}
SpecularDataItem* SpecularDataCanvas::specularDataItem()
{
SpecularDataItem* result = dynamic_cast<SpecularDataItem*>(currentItem());
......@@ -126,16 +89,16 @@ SpecularDataItem* SpecularDataCanvas::specularDataItem()
// TODO: try to reuse IntensityDataCanvas::initActions somehow
void SpecularDataCanvas::initActions()
{
m_resetViewAction = new QAction(this);
m_resetViewAction->setText("Reset");
m_resetViewAction->setIcon(QIcon(":/images/toolbar16light_refresh.svg"));
m_resetViewAction->setToolTip("Reset view\n"
m_reset_view_action = new QAction(this);
m_reset_view_action->setText("Reset");
m_reset_view_action->setIcon(QIcon(":/images/toolbar16light_refresh.svg"));
m_reset_view_action->setToolTip("Reset view\n"
"x,y,z axes range will be set to default");
connect(m_resetViewAction, &QAction::triggered, this, &SpecularDataCanvas::onResetViewAction);
connect(m_reset_view_action, &QAction::triggered, this, &SpecularDataCanvas::onResetViewAction);
m_savePlotAction = new QAction(this);
m_savePlotAction->setText("Save");
m_savePlotAction->setIcon(QIcon(":/images/toolbar16light_save.svg"));
m_savePlotAction->setToolTip("Save plot");
connect(m_savePlotAction, &QAction::triggered, this, &SpecularDataCanvas::onSavePlotAction);
m_save_plot_action = new QAction(this);
m_save_plot_action->setText("Save");
m_save_plot_action->setIcon(QIcon(":/images/toolbar16light_save.svg"));
m_save_plot_action->setToolTip("Save plot");
connect(m_save_plot_action, &QAction::triggered, this, &SpecularDataCanvas::onSavePlotAction);
}
......@@ -17,10 +17,10 @@
#include "SessionItemWidget.h"
#include "WinDllMacros.h"
#include "qcustomplot.h"
#include <QWidget>
class SpecularDataItem;
class SpecularPlotCanvas;
class BA_CORE_API_ SpecularDataCanvas : public SessionItemWidget
{
......@@ -42,14 +42,12 @@ public slots:
//void clearData();
private:
void initGraph();
void initGraphFromItem();
SpecularDataItem* specularDataItem();
void initActions();
QCustomPlot* m_customPlot;
QAction* m_resetViewAction;
QAction* m_savePlotAction;
SpecularPlotCanvas* m_plot_canvas;
QAction* m_reset_view_action;
QAction* m_save_plot_action;
};
#endif // SPECULARDATACANVAS_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment