@@ -583,7 +583,6 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
583583
584584 // tabWidget->setCurrentIndex( settings.value( "/Windows/Options/row" ).toInt() );
585585 int currentTab = settings.value ( " /Windows/Options/row" ).toInt ();
586- QgsDebugMsg (QString (" current=%1" ).arg (currentTab));
587586 tabWidget->setCurrentIndex ( currentTab );
588587 on_tabWidget_currentChanged ( currentTab );
589588}
@@ -1069,37 +1068,46 @@ void QgsOptions::on_pbnSelectOtfProjection_clicked()
10691068 }
10701069}
10711070
1072- void QgsOptions::on_lstGdalDrivers_itemPressed ( QTreeWidgetItem * item, int column )
1073- {
1074- // edit driver if "options" icon (column 3) is pressed
1075- if ( item && column == 3 )
1076- {
1077- editGdalDriver ( item->text ( 0 ) );
1078- }
1079- }
1080-
10811071void QgsOptions::on_lstGdalDrivers_itemDoubleClicked ( QTreeWidgetItem * item, int column )
10821072{
10831073 Q_UNUSED ( column );
1084- // edit driver if "options" icon (column 3) exists (only if driver supports write)
1085- if ( item && ! item->icon ( 3 ). isNull ( ) )
1074+ // edit driver if driver supports write
1075+ if ( item && ( cmbEditCreateOptions-> findText ( item->text ( 0 ) ) != - 1 ) )
10861076 {
10871077 editGdalDriver ( item->text ( 0 ) );
10881078 }
10891079}
10901080
1081+ void QgsOptions::on_pbnEditCreateOptions_pressed ()
1082+ {
1083+ editGdalDriver ( cmbEditCreateOptions->currentText () );
1084+ }
1085+
1086+ void QgsOptions::on_pbnEditPyramidsOptions_pressed ()
1087+ {
1088+ editGdalDriver ( " _pyramids" );
1089+ }
10911090
10921091void QgsOptions::editGdalDriver ( const QString& driverName )
10931092{
1094- // this will go to a standalone widget class
1095- QDialog dlg ( this );
1093+ if ( driverName.isEmpty () )
1094+ return ;
1095+
1096+ QDialog dlg ( this );
10961097 QVBoxLayout *layout = new QVBoxLayout ();
1098+ QString title = tr ( " Create Options - %1 Driver" ).arg ( driverName );
1099+ if ( driverName == " _pyramids" )
1100+ title = tr ( " Create Options - pyramids" );
1101+ dlg.setWindowTitle ( title );
1102+ QLabel *label = new QLabel ( title );
1103+ label->setAlignment ( Qt::AlignHCenter );
1104+ layout->addWidget ( label );
10971105 QgsRasterFormatOptionsWidget* optionsWidget = new QgsRasterFormatOptionsWidget ( 0 , driverName, " gdal" );
10981106 layout->addWidget ( optionsWidget );
10991107 optionsWidget->showProfileButtons ( true );
11001108 QDialogButtonBox *buttonBox = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
1101- connect (buttonBox, SIGNAL (accepted ()), &dlg, SLOT (accept ()) );
1102- connect (buttonBox, SIGNAL (rejected ()), &dlg, SLOT (reject ()) );
1109+ connect ( buttonBox, SIGNAL ( accepted () ), &dlg, SLOT ( accept () ) );
1110+ connect ( buttonBox, SIGNAL ( rejected () ), &dlg, SLOT ( reject () ) );
11031111 layout->addWidget ( buttonBox );
11041112 dlg.setLayout ( layout );
11051113
@@ -1331,7 +1339,6 @@ void QgsOptions::on_mClearCache_clicked()
13311339
13321340void QgsOptions::on_tabWidget_currentChanged ( int theTab )
13331341{
1334- QgsDebugMsg (QString (" current=%1" ).arg (theTab));
13351342 // load gdal driver list when gdal tab is first opened
13361343 if ( theTab == 1 && ! mLoadedGdalDriverList )
13371344 {
@@ -1392,6 +1399,7 @@ void QgsOptions::loadGdalDriverList()
13921399 GDALDriverH myGdalDriver; // current driver
13931400 QString myGdalDriverDescription;
13941401 QStringList myDrivers;
1402+ QStringList myGdalWriteDrivers;
13951403 QMap<QString, QString> myDriversFlags, myDriversExt, myDriversLongName;
13961404
13971405 // make sure we save list when accept()
@@ -1421,7 +1429,10 @@ void QgsOptions::loadGdalDriverList()
14211429 // get driver R/W flags, taken from GDALGeneralCmdLineProcessor()
14221430 const char *pszRWFlag, *pszVirtualIO;
14231431 if ( GDALGetMetadataItem ( myGdalDriver, GDAL_DCAP_CREATE , NULL ) )
1432+ {
1433+ myGdalWriteDrivers << myGdalDriverDescription;
14241434 pszRWFlag = " rw+" ;
1435+ }
14251436 else if ( GDALGetMetadataItem ( myGdalDriver, GDAL_DCAP_CREATECOPY ,
14261437 NULL ) )
14271438 pszRWFlag = " rw" ;
@@ -1448,18 +1459,11 @@ void QgsOptions::loadGdalDriverList()
14481459 // sort list case insensitive - no existing function for this!
14491460 QMap<QString, QString> strMap;
14501461 foreach ( QString str, myDrivers )
1451- {
1452- strMap.insert ( str.toLower (), str );
1453- }
1462+ strMap.insert ( str.toLower (), str );
14541463 myDrivers = strMap.values ();
14551464
1456- QStringListIterator myIterator ( myDrivers );
1457- QIcon myIcon = QgsApplication::getThemeIcon ( " mActionOptions.png" );
1458-
1459- while ( myIterator.hasNext () )
1465+ foreach ( QString myName, myDrivers )
14601466 {
1461- QString myName = myIterator.next ();
1462- // QListWidgetItem * mypItem = new QListWidgetItem( myName );
14631467 QTreeWidgetItem * mypItem = new QTreeWidgetItem ( QStringList ( myName ) );
14641468 if ( mySkippedDrivers.contains ( myName ) )
14651469 {
@@ -1474,12 +1478,7 @@ void QgsOptions::loadGdalDriverList()
14741478 mypItem->setText ( 1 , myDriversExt[myName] );
14751479 QString myFlags = myDriversFlags[myName];
14761480 mypItem->setText ( 2 , myFlags );
1477- if ( myFlags.contains ( " w+" ) )
1478- {
1479- mypItem->setIcon ( 3 , myIcon );
1480- }
1481- mypItem->setText ( 4 , myDriversLongName[myName] );
1482-
1481+ mypItem->setText ( 3 , myDriversLongName[myName] );
14831482 lstGdalDrivers->addTopLevelItem ( mypItem );
14841483 }
14851484 // adjust column width
@@ -1488,13 +1487,26 @@ void QgsOptions::loadGdalDriverList()
14881487 lstGdalDrivers->resizeColumnToContents ( i );
14891488 lstGdalDrivers->setColumnWidth ( i, lstGdalDrivers->columnWidth ( i ) + 5 );
14901489 }
1490+
1491+ // populate cmbEditCreateOptions with gdal write drivers - sorted, GTiff first
1492+ strMap.clear ();
1493+ foreach ( QString str, myGdalWriteDrivers )
1494+ strMap.insert ( str.toLower (), str );
1495+ myGdalWriteDrivers = strMap.values ();
1496+ myGdalWriteDrivers.removeAll ( " Gtiff" );
1497+ myGdalWriteDrivers.prepend ( " GTiff" );
1498+ cmbEditCreateOptions->clear ();
1499+ foreach ( QString myName, myGdalWriteDrivers )
1500+ {
1501+ cmbEditCreateOptions->addItem ( myName );
1502+ }
1503+
14911504}
14921505
14931506void QgsOptions::saveGdalDriverList ()
14941507{
14951508 for ( int i = 0 ; i < lstGdalDrivers->topLevelItemCount (); i++ )
14961509 {
1497- // QListWidgetItem * mypItem = lstGdalDrivers->item( i );
14981510 QTreeWidgetItem * mypItem = lstGdalDrivers->topLevelItem ( i );
14991511 if ( mypItem->checkState ( 0 ) == Qt::Unchecked )
15001512 {
0 commit comments