BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
PointwiseAxisItem.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/PointwiseAxisItem.h
6 //! @brief Defines pointwise axis item
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 
15 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_POINTWISEAXISITEM_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_POINTWISEAXISITEM_H
17 
20 
21 class PointwiseAxis;
23 
24 //! Item for non-uniform axis with specified coordinates.
25 class BA_CORE_API_ PointwiseAxisItem : public BasicAxisItem, public SaveLoadInterface {
26  static const QString P_NATIVE_AXIS_UNITS;
27 
28 public:
29  static const QString P_FILE_NAME;
30 
31  explicit PointwiseAxisItem();
32  ~PointwiseAxisItem() override;
33 
34  // setters, getters
35  void init(const IAxis& axis, const QString& units_label);
36  const IAxis* axis() const;
37  const QString getUnitsLabel() const;
38 
39  // virtual function overloads
40  bool containsNonXMLData() const override;
41  QDateTime lastModified() const override;
42  QString fileName() const override;
43  std::unique_ptr<IAxis> createAxis(double scale) const override;
44 
45  void updateIndicators();
46 
47 private:
48  bool load(const QString& projectDir) override;
49  bool save(const QString& projectDir) override;
50  void setLastModified(const QDateTime& dtime);
51 
52  bool checkValidity() const;
53 
54  //! Sets internal m_instrument to containing SpecularInstrumentItem
55  void findInstrument();
56 
58  std::unique_ptr<IAxis> m_axis;
59  QDateTime m_last_modified;
60 };
61 
62 #endif // BORNAGAIN_GUI_COREGUI_MODELS_POINTWISEAXISITEM_H
Defines various axis items.
Defines save/load interface.
virtual std::unique_ptr< IAxis > createAxis(double scale) const
Definition: AxesItems.cpp:72
Interface for one-dimensional axes.
Definition: IAxis.h:25
Item for non-uniform axis with specified coordinates.
~PointwiseAxisItem() override
const SpecularInstrumentItem * m_instrument
std::unique_ptr< IAxis > m_axis
static const QString P_FILE_NAME
static const QString P_NATIVE_AXIS_UNITS
Axis containing arbitrary (non-equidistant) coordinate values.
Definition: PointwiseAxis.h:37
Purely virtual interface to handle non-XML data save and load.
virtual QString fileName() const =0
Reports file name to save/load non-XML data.
virtual bool load(const QString &projectDir)=0
Loads non-XML data from projectDir and returns success flag.
virtual bool containsNonXMLData() const =0
Checks if object owns non-XML data.
virtual bool save(const QString &projectDir)=0
Saves non-XML data in projectDir and returns success flag.
QString lastModified(const QString &fileName)
Returns a string representing modification time of given file.
QString projectDir(const QString &projectFileName)
Returns project directory deduced from project file name.