BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
AxesItems.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/AxesItems.cpp
6 //! @brief Implements various axis items
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
16 #include "Base/Axis/FixedBinAxis.h"
17 
18 const QString BasicAxisItem::P_IS_VISIBLE = "Visibility";
19 const QString BasicAxisItem::P_NBINS = "Nbins";
20 const QString BasicAxisItem::P_MIN_DEG = "Min [deg]";
21 const QString BasicAxisItem::P_MAX_DEG = "Max [deg]";
22 const QString BasicAxisItem::P_TITLE = "Title";
23 const QString BasicAxisItem::P_TITLE_IS_VISIBLE = "Title Visibility";
24 
25 const int max_detector_pixels = 65536;
26 
27 BasicAxisItem::BasicAxisItem(const QString& type) : SessionItem(type)
28 {
30 }
31 
33 {
34  return getItemValue(P_NBINS).toInt();
35 }
36 
38 {
40 }
41 
43 {
44  return getItemValue(P_MIN_DEG).toDouble();
45 }
46 
47 void BasicAxisItem::setLowerBound(double value)
48 {
50 }
51 
53 {
54  return getItemValue(P_MAX_DEG).toDouble();
55 }
56 
57 void BasicAxisItem::setUpperBound(double value)
58 {
60 }
61 
62 QString BasicAxisItem::title() const
63 {
64  return getItemValue(P_TITLE).toString();
65 }
66 
67 void BasicAxisItem::setTitle(const QString& title)
68 {
70 }
71 
72 std::unique_ptr<IAxis> BasicAxisItem::createAxis(double scale) const
73 {
74  return std::make_unique<FixedBinAxis>(title().toStdString(), binCount(), lowerBound() * scale,
75  upperBound() * scale);
76 }
77 
79 
81 {
82  addProperty(P_IS_VISIBLE, true)->setVisible(false);
86  addProperty(P_TITLE, QString());
88 }
89 
90 // ---------------------------------------------------------------------------------------------- //
91 
92 const QString AmplitudeAxisItem::P_IS_LOGSCALE = "log10";
93 const QString AmplitudeAxisItem::P_LOCK_MIN_MAX = "Lock (min, max)";
94 
96 {
97  addProperty(P_LOCK_MIN_MAX, false)->setVisible(false);
101  setMinMaxEditor("ScientificDouble");
102 
103  mapper()->setOnPropertyChange([this](const QString& name) {
104  if (name == P_IS_LOGSCALE) {
105  if (getItemValue(P_IS_LOGSCALE).toBool())
106  setMinMaxEditor("ScientificDouble");
107  else
108  setMinMaxEditor("Default");
109  }
110  });
111 }
112 
114 {
115  return getItemValue(P_IS_LOGSCALE).toBool();
116 }
117 
119 {
121 }
122 
123 //! Sets editor for min, max values of axes
124 
125 void AmplitudeAxisItem::setMinMaxEditor(const QString& editorType)
126 {
129 }
const int max_detector_pixels
Definition: AxesItems.cpp:25
Defines various axis items.
Defines class FixedBinAxis.
bool isLogScale() const
Definition: AxesItems.cpp:113
static const QString P_IS_LOGSCALE
Definition: AxesItems.h:55
static const QString P_LOCK_MIN_MAX
Definition: AxesItems.h:56
void setMinMaxEditor(const QString &editorType)
Sets editor for min, max values of axes.
Definition: AxesItems.cpp:125
void setLogScale(bool value)
Definition: AxesItems.cpp:118
void register_basic_properties()
Definition: AxesItems.cpp:80
void setBinCount(int value)
Definition: AxesItems.cpp:37
static const QString P_NBINS
Definition: AxesItems.h:26
static const QString P_MAX_DEG
Definition: AxesItems.h:28
static const QString P_TITLE
Definition: AxesItems.h:29
double upperBound() const
Definition: AxesItems.cpp:52
QString title() const
Definition: AxesItems.cpp:62
static const QString P_IS_VISIBLE
Definition: AxesItems.h:25
int binCount() const
Definition: AxesItems.cpp:32
static const QString P_TITLE_IS_VISIBLE
Definition: AxesItems.h:30
double lowerBound() const
Definition: AxesItems.cpp:42
void setLowerBound(double value)
Definition: AxesItems.cpp:47
BasicAxisItem(const QString &type="BasicAxis")
Definition: AxesItems.cpp:27
void setUpperBound(double value)
Definition: AxesItems.cpp:57
virtual std::unique_ptr< IAxis > createAxis(double scale) const
Definition: AxesItems.cpp:72
static const QString P_MIN_DEG
Definition: AxesItems.h:27
void setTitle(const QString &title)
Definition: AxesItems.cpp:67
virtual ~BasicAxisItem()
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
static RealLimits limitless()
Creates an object withoud bounds (default)
Definition: RealLimits.cpp:130
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
Definition: RealLimits.cpp:125
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
SessionItem & setDecimals(int n)
QVariant value() const
Get value.
void setVisible(bool enabled)
Flags accessors.
SessionItem & setEditorType(const QString &editorType)
QString editorType() const
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem & setLimits(const RealLimits &value)
QString const & name(EShape k)
Definition: particles.cpp:21