void QgsColorDialogV2::importPalette() { QSettings s; QString lastDir = s.value( "/UI/lastGplPaletteDir", "" ).toString(); QString filePath = QFileDialog::getOpenFileName( this, tr( "Select palette file" ), lastDir, "GPL (*.gpl);;All files (*.*)" ); activateWindow(); if ( filePath.isEmpty() ) { return; } //check if file exists QFileInfo fileInfo( filePath ); if ( !fileInfo.exists() || !fileInfo.isReadable() ) { QMessageBox::critical( 0, tr( "Invalid file" ), tr( "Error, file does not exist or is not readable" ) ); return; } s.setValue( "/UI/lastGplPaletteDir", fileInfo.absolutePath() ); QFile file( filePath ); QgsNamedColorList importedColors; bool ok = false; QString paletteName; importedColors = QgsSymbolLayerV2Utils::importColorsFromGpl( file, ok, paletteName ); if ( !ok ) { QMessageBox::critical( 0, tr( "Invalid file" ), tr( "Palette file is not readable" ) ); return; } if ( importedColors.length() == 0 ) { //no imported colors QMessageBox::critical( 0, tr( "Invalid file" ), tr( "No colors found in palette file" ) ); return; } //TODO - handle conflicting file names, name for new palette QgsUserColorScheme* importedScheme = new QgsUserColorScheme( fileInfo.fileName() ); importedScheme->setName( paletteName ); importedScheme->setColors( importedColors ); QgsColorSchemeRegistry::instance()->addColorScheme( importedScheme ); //refresh combobox mSchemeComboBox->blockSignals( true ); mSchemeComboBox->clear(); QList<QgsColorScheme *> schemeList = QgsColorSchemeRegistry::instance()->schemes( QgsColorScheme::ShowInColorDialog ); QList<QgsColorScheme *>::const_iterator schemeIt = schemeList.constBegin(); for ( ; schemeIt != schemeList.constEnd(); ++schemeIt ) { mSchemeComboBox->addItem(( *schemeIt )->schemeName() ); } mSchemeComboBox->blockSignals( false ); mSchemeComboBox->setCurrentIndex( mSchemeComboBox->count() - 1 ); }
void QgsCompoundColorWidget::importPalette() { QgsSettings s; QString lastDir = s.value( QStringLiteral( "/UI/lastGplPaletteDir" ), QDir::homePath() ).toString(); QString filePath = QFileDialog::getOpenFileName( this, tr( "Select palette file" ), lastDir, QStringLiteral( "GPL (*.gpl);;All files (*.*)" ) ); activateWindow(); if ( filePath.isEmpty() ) { return; } //check if file exists QFileInfo fileInfo( filePath ); if ( !fileInfo.exists() || !fileInfo.isReadable() ) { QMessageBox::critical( nullptr, tr( "Invalid file" ), tr( "Error, file does not exist or is not readable" ) ); return; } s.setValue( QStringLiteral( "/UI/lastGplPaletteDir" ), fileInfo.absolutePath() ); QFile file( filePath ); QgsNamedColorList importedColors; bool ok = false; QString paletteName; importedColors = QgsSymbolLayerUtils::importColorsFromGpl( file, ok, paletteName ); if ( !ok ) { QMessageBox::critical( nullptr, tr( "Invalid file" ), tr( "Palette file is not readable" ) ); return; } if ( importedColors.length() == 0 ) { //no imported colors QMessageBox::critical( nullptr, tr( "Invalid file" ), tr( "No colors found in palette file" ) ); return; } //TODO - handle conflicting file names, name for new palette QgsUserColorScheme *importedScheme = new QgsUserColorScheme( fileInfo.fileName() ); importedScheme->setName( paletteName ); importedScheme->setColors( importedColors ); QgsApplication::colorSchemeRegistry()->addColorScheme( importedScheme ); //refresh combobox refreshSchemeComboBox(); mSchemeComboBox->setCurrentIndex( mSchemeComboBox->count() - 1 ); }