BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DataSelector.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/DataSelector.h
6 //! @brief Defines class DataSelector
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_VIEWS_IMPORTDATAWIDGETS_CSVIMPORTASSISTANT_DATASELECTOR_H
16 #define BORNAGAIN_GUI_COREGUI_VIEWS_IMPORTDATAWIDGETS_CSVIMPORTASSISTANT_DATASELECTOR_H
17 
20 #include <QAction>
21 #include <QComboBox>
22 #include <QDialog>
23 #include <QLabel>
24 #include <QLineEdit>
25 #include <QSpinBox>
26 #include <QTableWidget>
27 #include <memory>
28 
29 class QBoxLayout;
30 
31 //! Dialog to hold DataSelector.
32 class DataSelector : public QDialog {
33  Q_OBJECT
34 public:
35  DataSelector(csv::DataArray csvArray, QWidget* parent = nullptr);
36  size_t firstLine() const;
37  size_t lastLine() const;
38  int intensityColumn() const { return m_tableWidget->intensityColumn(); }
39  int coordinateColumn() const { return m_tableWidget->coordinateColumn(); }
42  std::set<int> rowsToDiscard() const { return m_tableWidget->rowsToDiscard(); }
43  Axes::Units units() const;
45  {
46  m_data = std::move(csvArray);
47  updateData();
49  }
50  void setSeparator(char newSeparator)
51  {
52  m_separatorField->setText(QString(QChar(newSeparator)));
53  }
54 
55 public slots:
56  void onImportButton();
57  void onCancelButton();
58  void onColumnRightClick(const QPoint& position);
60 
61 signals:
62  void separatorChanged(char newSeparator);
63 
64 private:
65  size_t maxLines() const;
66  char separator() const;
67  void setColumnAs(csv::ColumnType coordOrInt);
68  void setColumnAs(int col, csv::ColumnType coordOrInt);
69  void setFirstRow();
70  void setLastRow();
71  void discardRow();
72  void resetSelection();
73  void updateSelection();
74  bool updateData();
75  QBoxLayout* createLayout();
76  void populateUnitsComboBox();
77  bool isInsideTable(QPoint point);
78  bool dataLooksGood();
79 
82  QLineEdit* m_separatorField;
86  QPushButton* m_importButton;
87  QPushButton* m_cancelButton;
88  QLabel* m_errorLabel;
89 };
90 #endif // BORNAGAIN_GUI_COREGUI_VIEWS_IMPORTDATAWIDGETS_CSVIMPORTASSISTANT_DATASELECTOR_H
Defines class CsvImportAssistant.
Defines class CsvImportTable.
int intensityColumn() const
int coordinateColumn() const
double coordinateMultiplier() const
std::set< int > rowsToDiscard() const
double intensityMultiplier() const
Dialog to hold DataSelector.
Definition: DataSelector.h:32
size_t lastLine() const
void setSeparator(char newSeparator)
Definition: DataSelector.h:50
bool dataLooksGood()
int intensityColumn() const
Definition: DataSelector.h:38
char separator() const
bool isInsideTable(QPoint point)
double coordinateMultiplier() const
Definition: DataSelector.h:41
void setColumnSlot(csv::ColumnType ct)
QLabel * m_errorLabel
Definition: DataSelector.h:88
std::set< int > rowsToDiscard() const
Definition: DataSelector.h:42
void setFirstRow()
double intensityMultiplier() const
Definition: DataSelector.h:40
csv::DataArray m_data
Definition: DataSelector.h:80
Axes::Units units() const
QLineEdit * m_separatorField
Definition: DataSelector.h:82
void populateUnitsComboBox()
void onCancelButton()
void setColumnAs(csv::ColumnType coordOrInt)
QPushButton * m_importButton
Definition: DataSelector.h:86
size_t firstLine() const
QComboBox * m_coordinateUnitsComboBox
Definition: DataSelector.h:85
QSpinBox * m_firstDataRowSpinBox
Definition: DataSelector.h:83
void separatorChanged(char newSeparator)
DataSelector(csv::DataArray csvArray, QWidget *parent=nullptr)
QSpinBox * m_lastDataRowSpinBox
Definition: DataSelector.h:84
void updateSelection()
bool updateData()
void onColumnRightClick(const QPoint &position)
void onImportButton()
QBoxLayout * createLayout()
size_t maxLines() const
QPushButton * m_cancelButton
Definition: DataSelector.h:87
int coordinateColumn() const
Definition: DataSelector.h:39
void setDataArray(csv::DataArray csvArray)
Definition: DataSelector.h:44
CsvImportTable * m_tableWidget
Definition: DataSelector.h:81
void resetSelection()
ColumnType
Definition: CsvNamespace.h:23
std::vector< std::vector< std::string > > DataArray
Definition: CsvNamespace.h:26