QgsWFSSourceSelect::QgsWFSSourceSelect( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode theWidgetMode ) : QgsAbstractDataSourceWidget( parent, fl, theWidgetMode ) { setupUi( this ); connect( cmbConnections, static_cast<void ( QComboBox::* )( int )>( &QComboBox::activated ), this, &QgsWFSSourceSelect::cmbConnections_activated ); connect( btnSave, &QPushButton::clicked, this, &QgsWFSSourceSelect::btnSave_clicked ); connect( btnLoad, &QPushButton::clicked, this, &QgsWFSSourceSelect::btnLoad_clicked ); setupButtons( buttonBox ); connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsWFSSourceSelect::showHelp ); if ( widgetMode() != QgsProviderRegistry::WidgetMode::None ) { mHoldDialogOpen->hide(); } mBuildQueryButton = new QPushButton( tr( "&Build query" ) ); mBuildQueryButton->setToolTip( tr( "Build query" ) ); mBuildQueryButton->setDisabled( true ); buttonBox->addButton( mBuildQueryButton, QDialogButtonBox::ActionRole ); connect( mBuildQueryButton, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::buildQueryButtonClicked ); connect( buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject ); connect( btnNew, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::addEntryToServerList ); connect( btnEdit, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::modifyEntryOfServerList ); connect( btnDelete, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::deleteEntryOfServerList ); connect( btnConnect, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::connectToServer ); connect( btnChangeSpatialRefSys, &QAbstractButton::clicked, this, &QgsWFSSourceSelect::changeCRS ); connect( lineFilter, &QLineEdit::textChanged, this, &QgsWFSSourceSelect::filterChanged ); populateConnectionList(); mProjectionSelector = new QgsProjectionSelectionDialog( this ); mProjectionSelector->setMessage( QString() ); mItemDelegate = new QgsWFSItemDelegate( treeView ); treeView->setItemDelegate( mItemDelegate ); QgsSettings settings; QgsDebugMsg( QStringLiteral( "restoring settings" ) ); restoreGeometry( settings.value( QStringLiteral( "Windows/WFSSourceSelect/geometry" ) ).toByteArray() ); cbxUseTitleLayerName->setChecked( settings.value( QStringLiteral( "Windows/WFSSourceSelect/UseTitleLayerName" ), false ).toBool() ); cbxFeatureCurrentViewExtent->setChecked( settings.value( QStringLiteral( "Windows/WFSSourceSelect/FeatureCurrentViewExtent" ), true ).toBool() ); mHoldDialogOpen->setChecked( settings.value( QStringLiteral( "Windows/WFSSourceSelect/HoldDialogOpen" ), false ).toBool() ); mModel = new QStandardItemModel(); mModel->setHorizontalHeaderItem( MODEL_IDX_TITLE, new QStandardItem( QStringLiteral( "Title" ) ) ); mModel->setHorizontalHeaderItem( MODEL_IDX_NAME, new QStandardItem( QStringLiteral( "Name" ) ) ); mModel->setHorizontalHeaderItem( MODEL_IDX_ABSTRACT, new QStandardItem( QStringLiteral( "Abstract" ) ) ); mModel->setHorizontalHeaderItem( MODEL_IDX_SQL, new QStandardItem( QStringLiteral( "Sql" ) ) ); mModelProxy = new QSortFilterProxyModel( this ); mModelProxy->setSourceModel( mModel ); mModelProxy->setSortCaseSensitivity( Qt::CaseInsensitive ); treeView->setModel( mModelProxy ); connect( treeView, &QAbstractItemView::doubleClicked, this, &QgsWFSSourceSelect::treeWidgetItemDoubleClicked ); connect( treeView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &QgsWFSSourceSelect::treeWidgetCurrentRowChanged ); }
ConnectDialog::ConnectDialog(QDesignerFormWindowInterface *formWindow, QWidget *source, QWidget *destination, QWidget *parent) : QDialog(parent), m_source(source), m_destination(destination), m_sourceMode(widgetMode(m_source, formWindow)), m_destinationMode(widgetMode(m_destination, formWindow)), m_formWindow(formWindow) { m_ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); connect(m_ui.signalList, &QListWidget::itemClicked, this, &ConnectDialog::selectSignal); connect(m_ui.slotList, &QListWidget::itemClicked, this, &ConnectDialog::selectSlot); m_ui.slotList->setEnabled(false); QPushButton *ok_button = okButton(); ok_button->setDefault(true); ok_button->setEnabled(false); connect(m_ui.showAllCheckBox, &QCheckBox::toggled, this, &ConnectDialog::populateLists); QDesignerFormEditorInterface *core = m_formWindow->core(); m_ui.signalGroupBox->setTitle(widgetLabel(core, source)); m_ui.slotGroupBox->setTitle(widgetLabel(core, destination)); m_ui.editSignalsButton->setEnabled(m_sourceMode != NormalWidget); connect(m_ui.editSignalsButton, &QAbstractButton::clicked, this, &ConnectDialog::editSignals); m_ui.editSlotsButton->setEnabled(m_destinationMode != NormalWidget); connect(m_ui.editSlotsButton, &QAbstractButton::clicked, this, &ConnectDialog::editSlots); populateLists(); }
void QgsWFSSourceSelect::addButtonClicked() { //get selected entry in treeview QModelIndex currentIndex = treeView->selectionModel()->currentIndex(); if ( !currentIndex.isValid() ) { return; } QgsWfsConnection connection( cmbConnections->currentText() ); QString pCrsString( labelCoordRefSys->text() ); //create layers that user selected from this WFS source QModelIndexList list = treeView->selectionModel()->selectedRows(); for ( int i = 0; i < list.size(); i++ ) { //add a wfs layer to the map QModelIndex idx = mModelProxy->mapToSource( list[i] ); if ( !idx.isValid() ) { continue; } int row = idx.row(); QString typeName = mModel->item( row, MODEL_IDX_NAME )->text(); //WFS repository's name for layer QString titleName = mModel->item( row, MODEL_IDX_TITLE )->text(); //WFS type name title for layer name (if option is set) QString sql = mModel->item( row, MODEL_IDX_SQL )->text(); //optional SqL specified by user QString layerName = typeName; if ( cbxUseTitleLayerName->isChecked() && !titleName.isEmpty() ) { layerName = titleName; } QgsDebugMsg( "Layer " + typeName + " SQL is " + sql ); mUri = QgsWFSDataSourceURI::build( connection.uri().uri(), typeName, pCrsString, sql, cbxFeatureCurrentViewExtent->isChecked() ); emit addVectorLayer( mUri, layerName ); } if ( ! mHoldDialogOpen->isChecked() && widgetMode() == QgsProviderRegistry::WidgetMode::None ) { accept(); } }
void QgsDelimitedTextSourceSelect::addButtonClicked() { // The following conditions should not be hit! OK will not be enabled... if ( txtLayerName->text().isEmpty() ) { QMessageBox::warning( this, tr( "No layer name" ), tr( "Please enter a layer name before adding the layer to the map" ) ); txtLayerName->setFocus(); return; } if ( delimiterChars->isChecked() ) { if ( selectedChars().isEmpty() ) { QMessageBox::warning( this, tr( "No delimiters set" ), tr( "Use one or more characters as the delimiter, or choose a different delimiter type" ) ); txtDelimiterOther->setFocus(); return; } } if ( delimiterRegexp->isChecked() ) { QRegExp re( txtDelimiterRegexp->text() ); if ( ! re.isValid() ) { QMessageBox::warning( this, tr( "Invalid regular expression" ), tr( "Please enter a valid regular expression as the delimiter, or choose a different delimiter type" ) ); txtDelimiterRegexp->setFocus(); return; } } if ( ! mFile->isValid() ) { QMessageBox::warning( this, tr( "Invalid delimited text file" ), tr( "Please enter a valid file and delimiter" ) ); return; } //Build the delimited text URI from the user provided information QUrl url = mFile->url(); if ( cbxPointIsComma->isChecked() ) { url.addQueryItem( QStringLiteral( "decimalPoint" ), QStringLiteral( "," ) ); } if ( cbxXyDms->isChecked() ) { url.addQueryItem( QStringLiteral( "xyDms" ), QStringLiteral( "yes" ) ); } if ( geomTypeXY->isChecked() ) { if ( !cmbXField->currentText().isEmpty() && !cmbYField->currentText().isEmpty() ) { QString field = cmbXField->currentText(); url.addQueryItem( QStringLiteral( "xField" ), field ); field = cmbYField->currentText(); url.addQueryItem( QStringLiteral( "yField" ), field ); } } else if ( geomTypeWKT->isChecked() ) { if ( ! cmbWktField->currentText().isEmpty() ) { QString field = cmbWktField->currentText(); url.addQueryItem( QStringLiteral( "wktField" ), field ); } if ( cmbGeometryType->currentIndex() > 0 ) { url.addQueryItem( QStringLiteral( "geomType" ), cmbGeometryType->currentText() ); } } else { url.addQueryItem( QStringLiteral( "geomType" ), QStringLiteral( "none" ) ); } if ( ! geomTypeNone->isChecked() ) url.addQueryItem( QStringLiteral( "spatialIndex" ), cbxSpatialIndex->isChecked() ? "yes" : "no" ); url.addQueryItem( QStringLiteral( "subsetIndex" ), cbxSubsetIndex->isChecked() ? "yes" : "no" ); url.addQueryItem( QStringLiteral( "watchFile" ), cbxWatchFile->isChecked() ? "yes" : "no" ); // store the settings saveSettings(); saveSettingsForFile( txtFilePath->text() ); // add the layer to the map emit addVectorLayer( QString::fromLatin1( url.toEncoded() ), txtLayerName->text() ); if ( widgetMode() == QgsProviderRegistry::WidgetMode::None ) { accept(); } }