QgsDelimitedTextSourceSelect::QgsDelimitedTextSourceSelect( QWidget * parent, Qt::WFlags fl, bool embedded ): QDialog( parent, fl ), mFile( new QgsDelimitedTextFile() ), mExampleRowCount( 20 ), mBadRowCount( 0 ), mPluginKey( "/Plugin-DelimitedText" ), mLastFileType( "" ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( mPluginKey + "/geometry" ).toByteArray() ); if ( embedded ) { buttonBox->button( QDialogButtonBox::Cancel )->hide(); buttonBox->button( QDialogButtonBox::Ok )->hide(); } cmbEncoding->clear(); cmbEncoding->addItems( QgsVectorDataProvider::availableEncodings() ); cmbEncoding->setCurrentIndex( cmbEncoding->findText( "UTF-8" ) ); loadSettings(); updateFieldsAndEnable(); connect( txtFilePath, SIGNAL( textChanged( QString ) ), this, SLOT( updateFileName() ) ); connect( txtLayerName, SIGNAL( textChanged( QString ) ), this, SLOT( enableAccept() ) ); connect( cmbEncoding, SIGNAL( currentIndexChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterCSV, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterChars, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterRegexp, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimComma, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimSpace, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimTab, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimSemicolon, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimColon, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( txtDelimiterOther, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( txtQuoteChars, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( txtEscapeChars, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( txtDelimiterRegexp, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( rowCounter, SIGNAL( valueChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxUseHeader, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxSkipEmptyFields, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxTrimFields, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxPointIsComma, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxXyDms, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); }
void QgsDelimitedTextSourceSelect::updateFileName() { // put a default layer name in the text entry QString filename = txtFilePath->text(); QFileInfo finfo( filename ); if ( finfo.exists() ) { QSettings settings; settings.setValue( mPluginKey + "/text_path", finfo.path() ); } txtLayerName->setText( finfo.completeBaseName() ); loadSettingsForFile( filename ); updateFieldsAndEnable(); }
QgsDelimitedTextSourceSelect::QgsDelimitedTextSourceSelect( QWidget * parent, Qt::WFlags fl, bool embedded ): QDialog( parent, fl ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( "/Plugin-DelimitedText/geometry" ).toByteArray() ); if ( embedded ) { buttonBox->button( QDialogButtonBox::Cancel )->hide(); buttonBox->button( QDialogButtonBox::Ok )->hide(); } updateFieldsAndEnable(); // at startup, fetch the last used delimiter and directory from // settings QString key = "/Plugin-DelimitedText"; txtDelimiter->setText( settings.value( key + "/delimiter" ).toString() ); rowCounter->setValue( settings.value( key + "/startFrom", 0 ).toInt() ); // and how to use the delimiter QString delimiterType = settings.value( key + "/delimiterType", "plain" ).toString(); if ( delimiterType == "selection" ) { delimiterSelection->setChecked( true ); } else if ( delimiterType == "plain" ) { delimiterPlain->setChecked( true ); } else { delimiterRegexp->setChecked( true ); } QString delimiterChars = settings.value( key + "/delimiterChars", " " ).toString(); cbxDelimSpace->setChecked( delimiterChars.contains( " " ) ); cbxDelimTab->setChecked( delimiterChars.contains( "\t" ) ); cbxDelimColon->setChecked( delimiterChars.contains( ":" ) ); cbxDelimSemicolon->setChecked( delimiterChars.contains( ";" ) ); cbxDelimComma->setChecked( delimiterChars.contains( "," ) ); cmbXField->setDisabled( true ); cmbYField->setDisabled( true ); cmbWktField->setDisabled( true ); connect( txtFilePath, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( decimalPoint, SIGNAL( textChanged( QString ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterSelection, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterPlain, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( delimiterRegexp, SIGNAL( toggled( bool ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimSpace, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimTab, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimSemicolon, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimComma, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( cbxDelimColon, SIGNAL( stateChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); connect( txtDelimiter, SIGNAL( editingFinished() ), this, SLOT( updateFieldsAndEnable() ) ); connect( rowCounter, SIGNAL( valueChanged( int ) ), this, SLOT( updateFieldsAndEnable() ) ); }
QgsDelimitedTextSourceSelect::QgsDelimitedTextSourceSelect( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode theWidgetMode ) : QgsAbstractDataSourceWidget( parent, fl, theWidgetMode ) , mFile( new QgsDelimitedTextFile() ) , mPluginKey( QStringLiteral( "/Plugin-DelimitedText" ) ) { setupUi( this ); connect( btnBrowseForFile, &QPushButton::clicked, this, &QgsDelimitedTextSourceSelect::btnBrowseForFile_clicked ); setupButtons( buttonBox ); connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsDelimitedTextSourceSelect::showHelp ); QgsSettings settings; restoreGeometry( settings.value( mPluginKey + "/geometry" ).toByteArray() ); bgFileFormat = new QButtonGroup( this ); bgFileFormat->addButton( delimiterCSV, swFileFormat->indexOf( swpCSVOptions ) ); bgFileFormat->addButton( delimiterChars, swFileFormat->indexOf( swpDelimOptions ) ); bgFileFormat->addButton( delimiterRegexp, swFileFormat->indexOf( swpRegexpOptions ) ); bgGeomType = new QButtonGroup( this ); bgGeomType->addButton( geomTypeXY, swGeomType->indexOf( swpGeomXY ) ); bgGeomType->addButton( geomTypeWKT, swGeomType->indexOf( swpGeomWKT ) ); bgGeomType->addButton( geomTypeNone, swGeomType->indexOf( swpGeomNone ) ); connect( bgFileFormat, static_cast < void ( QButtonGroup::* )( int ) > ( &QButtonGroup::buttonClicked ), swFileFormat, &QStackedWidget::setCurrentIndex ); connect( bgGeomType, static_cast < void ( QButtonGroup::* )( int ) > ( &QButtonGroup::buttonClicked ), swGeomType, &QStackedWidget::setCurrentIndex ); cmbEncoding->clear(); cmbEncoding->addItems( QgsVectorDataProvider::availableEncodings() ); cmbEncoding->setCurrentIndex( cmbEncoding->findText( QStringLiteral( "UTF-8" ) ) ); loadSettings(); updateFieldsAndEnable(); connect( txtFilePath, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::updateFileName ); connect( txtLayerName, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::enableAccept ); connect( cmbEncoding, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( delimiterCSV, &QAbstractButton::toggled, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( delimiterChars, &QAbstractButton::toggled, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( delimiterRegexp, &QAbstractButton::toggled, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxDelimComma, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxDelimSpace, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxDelimTab, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxDelimSemicolon, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxDelimColon, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( txtDelimiterOther, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( txtQuoteChars, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( txtEscapeChars, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( txtDelimiterRegexp, &QLineEdit::textChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( rowCounter, static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxUseHeader, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxSkipEmptyFields, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxTrimFields, &QCheckBox::stateChanged, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxPointIsComma, &QAbstractButton::toggled, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); connect( cbxXyDms, &QAbstractButton::toggled, this, &QgsDelimitedTextSourceSelect::updateFieldsAndEnable ); }