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 useStateChanged(
int state);
93 void stateChange(
bool state);
99 class TLP_QT_SCOPE PropertyNameValidator:
public QValidator {
101 PropertyNameValidator(
const std::vector<PropertyConfigurationWidget*>& widgets,QObject*parent=NULL) :
102 QValidator(parent), widgets(widgets) {
104 virtual ~PropertyNameValidator() {
111 QValidator::State validate(QString & input,
int & pos)
const;
114 const std::vector<PropertyConfigurationWidget*>& widgets;
120 class TLP_QT_SCOPE CSVTableWidget :
public QTableWidget,
public CSVContentHandler {
122 CSVTableWidget(QWidget* parent=NULL);
124 bool line(
unsigned int row,
const std::vector<std::string>& lineTokens);
125 bool end(
unsigned int rowNumber,
unsigned int columnNumber);
129 void setMaxPreviewLineNumber(
unsigned int lineNumber) {
130 maxLineNumber = lineNumber;
136 unsigned int getMaxPreviewLineNumber()
const {
137 return maxLineNumber;
140 unsigned int getFirstLineIndex() {
141 return firstLineIndex;
144 void setFirstLineIndex(
unsigned int index) {
145 firstLineIndex = index;
148 int getNbCommentsLines() {
149 return nbCommentsLines;
153 unsigned int maxLineNumber;
154 unsigned int firstLineIndex;
155 bool checkCommentsLines;
165 class TLP_QT_SCOPE CSVImportConfigurationWidget :
public QWidget,
public CSVContentHandler {
168 CSVImportConfigurationWidget(QWidget *parent = NULL);
169 ~CSVImportConfigurationWidget();
171 bool line(
unsigned int row,
const std::vector<std::string>& lineTokens);
172 bool end(
unsigned int rowNumber,
unsigned int columnNumber);
173 void setFirstLineIndex(
int firstLine);
178 void setNewParser(tlp::CSVParser *parser);
185 CSVImportParameters getImportParameters()
const;
187 bool eventFilter(QObject *, QEvent *);
192 void updateWidget(
const std::string& title =
"Generating preview");
194 std::vector<CSVColumn> getPropertiesToImport()
const;
196 void updateLineNumbers(
bool resetValues);
198 bool useFirstLineAsPropertyName()
const;
199 void setUseFirstLineAsPropertyName(
bool useFirstLineAsHeader)
const;
200 unsigned int rowCount()
const;
201 unsigned int columnCount()
const;
208 unsigned int getFirstLineIndex()
const;
213 unsigned int getLastLineIndex()
const;
218 unsigned int getFirstImportedLineIndex()
const;
223 void clearPropertiesTypeList();
227 void addPropertyToPropertyList(
const std::string& propertyName,
bool isEditable,
const std::string& propertyType=std::string(
""));
239 virtual PropertyConfigurationWidget *createPropertyConfigurationWidget(
unsigned int propertyNumber,
240 const QString& propertyName,
bool propertyNameIsEditable,
const std::string& propertyType, QWidget* parent);
245 QString generateColumnName(
unsigned int col)
const;
249 std::string getColumnType(
unsigned int col)
const;
251 std::vector<PropertyConfigurationWidget*> propertyWidgets;
255 void filterPreviewLineNumber(
bool filter);
256 void previewLineNumberChanged(
int value);
258 void toLineValueChanged(
int value);
260 void updateTableHeaders();
262 void useFirstLineAsHeaderUpdated();
263 void propertyStateChanged(
bool activated);
270 const std::string& guessPropertyDataType(
const std::string& data,
const std::string& previousType)
const;
275 const std::string& combinePropertyDataType(
const std::string& previousType,
const std::string& newType)
const;
280 const std::string& guessDataType(
const std::string& data)
const;
282 void columnSizeChanged(
unsigned int i);
285 std::vector<std::string> columnHeaderType;
287 std::vector<std::string> columnType;
289 Ui::CSVImportConfigurationWidget *ui;
290 PropertyNameValidator* validator;
291 unsigned int maxLineNumber;
292 unsigned int headerColumnCount;
293 tlp::CSVParser* parser;
294 unsigned int firstLine;
295 bool guessFirstLineIsHeader;
299 #endif // CSVIMPORTCONFIGURATIONWIDGET_H