@@ -583,7 +583,6 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
583
583
584
584
// tabWidget->setCurrentIndex( settings.value( "/Windows/Options/row" ).toInt() );
585
585
int currentTab = settings.value ( " /Windows/Options/row" ).toInt ();
586
- QgsDebugMsg (QString (" current=%1" ).arg (currentTab));
587
586
tabWidget->setCurrentIndex ( currentTab );
588
587
on_tabWidget_currentChanged ( currentTab );
589
588
}
@@ -1069,37 +1068,46 @@ void QgsOptions::on_pbnSelectOtfProjection_clicked()
1069
1068
}
1070
1069
}
1071
1070
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
-
1081
1071
void QgsOptions::on_lstGdalDrivers_itemDoubleClicked ( QTreeWidgetItem * item, int column )
1082
1072
{
1083
1073
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 ) )
1086
1076
{
1087
1077
editGdalDriver ( item->text ( 0 ) );
1088
1078
}
1089
1079
}
1090
1080
1081
+ void QgsOptions::on_pbnEditCreateOptions_pressed ()
1082
+ {
1083
+ editGdalDriver ( cmbEditCreateOptions->currentText () );
1084
+ }
1085
+
1086
+ void QgsOptions::on_pbnEditPyramidsOptions_pressed ()
1087
+ {
1088
+ editGdalDriver ( " _pyramids" );
1089
+ }
1091
1090
1092
1091
void QgsOptions::editGdalDriver ( const QString& driverName )
1093
1092
{
1094
- // this will go to a standalone widget class
1095
- QDialog dlg ( this );
1093
+ if ( driverName.isEmpty () )
1094
+ return ;
1095
+
1096
+ QDialog dlg ( this );
1096
1097
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 );
1097
1105
QgsRasterFormatOptionsWidget* optionsWidget = new QgsRasterFormatOptionsWidget ( 0 , driverName, " gdal" );
1098
1106
layout->addWidget ( optionsWidget );
1099
1107
optionsWidget->showProfileButtons ( true );
1100
1108
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 () ) );
1103
1111
layout->addWidget ( buttonBox );
1104
1112
dlg.setLayout ( layout );
1105
1113
@@ -1331,7 +1339,6 @@ void QgsOptions::on_mClearCache_clicked()
1331
1339
1332
1340
void QgsOptions::on_tabWidget_currentChanged ( int theTab )
1333
1341
{
1334
- QgsDebugMsg (QString (" current=%1" ).arg (theTab));
1335
1342
// load gdal driver list when gdal tab is first opened
1336
1343
if ( theTab == 1 && ! mLoadedGdalDriverList )
1337
1344
{
@@ -1392,6 +1399,7 @@ void QgsOptions::loadGdalDriverList()
1392
1399
GDALDriverH myGdalDriver; // current driver
1393
1400
QString myGdalDriverDescription;
1394
1401
QStringList myDrivers;
1402
+ QStringList myGdalWriteDrivers;
1395
1403
QMap<QString, QString> myDriversFlags, myDriversExt, myDriversLongName;
1396
1404
1397
1405
// make sure we save list when accept()
@@ -1421,7 +1429,10 @@ void QgsOptions::loadGdalDriverList()
1421
1429
// get driver R/W flags, taken from GDALGeneralCmdLineProcessor()
1422
1430
const char *pszRWFlag, *pszVirtualIO;
1423
1431
if ( GDALGetMetadataItem ( myGdalDriver, GDAL_DCAP_CREATE, NULL ) )
1432
+ {
1433
+ myGdalWriteDrivers << myGdalDriverDescription;
1424
1434
pszRWFlag = " rw+" ;
1435
+ }
1425
1436
else if ( GDALGetMetadataItem ( myGdalDriver, GDAL_DCAP_CREATECOPY,
1426
1437
NULL ) )
1427
1438
pszRWFlag = " rw" ;
@@ -1448,18 +1459,11 @@ void QgsOptions::loadGdalDriverList()
1448
1459
// sort list case insensitive - no existing function for this!
1449
1460
QMap<QString, QString> strMap;
1450
1461
foreach ( QString str, myDrivers )
1451
- {
1452
- strMap.insert ( str.toLower (), str );
1453
- }
1462
+ strMap.insert ( str.toLower (), str );
1454
1463
myDrivers = strMap.values ();
1455
1464
1456
- QStringListIterator myIterator ( myDrivers );
1457
- QIcon myIcon = QgsApplication::getThemeIcon ( " mActionOptions.png" );
1458
-
1459
- while ( myIterator.hasNext () )
1465
+ foreach ( QString myName, myDrivers )
1460
1466
{
1461
- QString myName = myIterator.next ();
1462
- // QListWidgetItem * mypItem = new QListWidgetItem( myName );
1463
1467
QTreeWidgetItem * mypItem = new QTreeWidgetItem ( QStringList ( myName ) );
1464
1468
if ( mySkippedDrivers.contains ( myName ) )
1465
1469
{
@@ -1474,12 +1478,7 @@ void QgsOptions::loadGdalDriverList()
1474
1478
mypItem->setText ( 1 , myDriversExt[myName] );
1475
1479
QString myFlags = myDriversFlags[myName];
1476
1480
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] );
1483
1482
lstGdalDrivers->addTopLevelItem ( mypItem );
1484
1483
}
1485
1484
// adjust column width
@@ -1488,13 +1487,26 @@ void QgsOptions::loadGdalDriverList()
1488
1487
lstGdalDrivers->resizeColumnToContents ( i );
1489
1488
lstGdalDrivers->setColumnWidth ( i, lstGdalDrivers->columnWidth ( i ) + 5 );
1490
1489
}
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
+
1491
1504
}
1492
1505
1493
1506
void QgsOptions::saveGdalDriverList ()
1494
1507
{
1495
1508
for ( int i = 0 ; i < lstGdalDrivers->topLevelItemCount (); i++ )
1496
1509
{
1497
- // QListWidgetItem * mypItem = lstGdalDrivers->item( i );
1498
1510
QTreeWidgetItem * mypItem = lstGdalDrivers->topLevelItem ( i );
1499
1511
if ( mypItem->checkState ( 0 ) == Qt::Unchecked )
1500
1512
{
0 commit comments