21 #ifndef CSVIMPORTCONFIGURATIONWIDGET_H
22 #define CSVIMPORTCONFIGURATIONWIDGET_H
26 #include <QTableWidget>
28 #include <tulip/CSVContentHandler.h>
29 #include <tulip/tulipconf.h>
37 class CSVImportConfigurationWidget;
42 class CSVImportParameters;
48 class TLP_QT_SCOPE PropertyConfigurationWidget:
public QWidget {
51 PropertyConfigurationWidget(
unsigned int propertyNumber,
const QString& propertyName,
bool propertyNameIsEditable,
52 const std::string& PropertyType, QWidget* parent = NULL);
56 std::string getPropertyType()
const;
60 void setPropertyType(
const std::string& propertyType);
62 QString getPropertyName()
const;
63 bool getPropertyUsed()
const;
67 void setPropertyNameValidator(QValidator* validator);
68 unsigned int getPropertyNumber()
const;
70 QLineEdit *getNameLineEdit() {
71 return propertyNameLineEdit;
73 QComboBox *getTypeComboBox() {
74 return propertyTypeComboBox;
77 QCheckBox *getCheckBox() {
82 void fillPropertyTypeComboBox();
83 QLineEdit *propertyNameLineEdit;
84 QComboBox *propertyTypeComboBox;
85 QCheckBox *usedCheckBox;
87 unsigned int propertyNumber;
90 void nameEditFinished();
91 void useStateChanged(
int state);
94 void propertyNameChange(QString newName);
95 void stateChange(
bool state);
101 class TLP_QT_SCOPE PropertyNameValidator:
public QValidator {
103 PropertyNameValidator(
const std::vector<PropertyConfigurationWidget*>& widgets,QObject*parent=NULL) :
104 QValidator(parent), widgets(widgets) {
106 virtual ~PropertyNameValidator() {
113 QValidator::State validate(QString & input,
int & pos)
const;
116 const std::vector<PropertyConfigurationWidget*>& widgets;
122 class TLP_QT_SCOPE CSVTableWidget :
public QTableWidget,
public CSVContentHandler {
124 CSVTableWidget(QWidget* parent=NULL);
126 bool line(
unsigned int row,
const std::vector<std::string>& lineTokens);
127 bool end(
unsigned int rowNumber,
unsigned int columnNumber);
131 void setMaxPreviewLineNumber(
unsigned int lineNumber) {
132 maxLineNumber = lineNumber;
138 unsigned int getMaxPreviewLineNumber()
const {
139 return maxLineNumber;
142 unsigned int getFirstLineIndex() {
143 return firstLineIndex;
146 void setFirstLineIndex(
unsigned int index) {
147 firstLineIndex = index;
150 int getNbCommentsLines() {
151 return nbCommentsLines;
155 unsigned int maxLineNumber;
156 unsigned int firstLineIndex;
157 bool checkCommentsLines;
167 class TLP_QT_SCOPE CSVImportConfigurationWidget :
public QWidget,
public CSVContentHandler {
170 CSVImportConfigurationWidget(QWidget *parent = NULL);
171 ~CSVImportConfigurationWidget();
173 bool line(
unsigned int row,
const std::vector<std::string>& lineTokens);
174 bool end(
unsigned int rowNumber,
unsigned int columnNumber);
175 void setFirstLineIndex(
int firstLine);
180 void setNewParser(tlp::CSVParser *parser);
187 CSVImportParameters getImportParameters()
const;
189 bool eventFilter(QObject *, QEvent *);
194 void updateWidget(
const std::string& title =
"Generating preview");
196 std::vector<CSVColumn> getPropertiesToImport()
const;
198 void updateLineNumbers(
bool resetValues);
200 bool useFirstLineAsPropertyName()
const;
201 void setUseFirstLineAsPropertyName(
bool useFirstLineAsHeader)
const;
202 unsigned int rowCount()
const;
203 unsigned int columnCount()
const;
210 unsigned int getFirstLineIndex()
const;
215 unsigned int getLastLineIndex()
const;
220 unsigned int getFirstImportedLineIndex()
const;
225 void clearPropertiesTypeList();
229 void addPropertyToPropertyList(
const std::string& propertyName,
bool isEditable,
const std::string& propertyType=std::string(
""));
241 virtual PropertyConfigurationWidget *createPropertyConfigurationWidget(
unsigned int propertyNumber,
242 const QString& propertyName,
bool propertyNameIsEditable,
const std::string& propertyType, QWidget* parent);
247 QString generateColumnName(
unsigned int col)
const;
251 std::string getColumnType(
unsigned int col)
const;
253 std::vector<PropertyConfigurationWidget*> propertyWidgets;
257 void filterPreviewLineNumber(
bool filter);
258 void previewLineNumberChanged(
int value);
260 void toLineValueChanged(
int value);
262 void updateTableHeaders();
264 void useFirstLineAsHeaderUpdated();
265 void propertyNameChanged(QString propertyName);
266 void propertyStateChanged(
bool activated);
269 void fileInfoChanged();
276 std::string guessPropertyDataType(
const std::string& data,
const std::string& previousType)
const;
281 std::string combinePropertyDataType(
const std::string& previousType,
const std::string& newType)
const;
286 std::string guessDataType(
const std::string& data)
const;
288 void columnSizeChanged(
unsigned int i);
291 std::vector<std::string> columnHeaderType;
293 std::vector<std::string> columnType;
295 Ui::CSVImportConfigurationWidget *ui;
296 PropertyNameValidator* validator;
297 unsigned int maxLineNumber;
298 unsigned int headerColumnCount;
299 tlp::CSVParser* parser;
300 unsigned int firstLine;
304 #endif // CSVIMPORTCONFIGURATIONWIDGET_H