Skip to content

Commit 4327e44

Browse files
committed
add profiles and validate and help buttons
1 parent 7c760b2 commit 4327e44

6 files changed

+620
-186
lines changed

src/app/qgsoptions.cpp

+45-33
Original file line numberDiff line numberDiff line change
@@ -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-
10811071
void 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

10921091
void 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

13321340
void 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

14931506
void 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
{

src/app/qgsoptions.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ class QgsOptions : public QDialog, private Ui::QgsOptionsBase
5959
void on_pbnSelectProjection_clicked();
6060
//! Slot called when user chooses to change the default 'on the fly' projection.
6161
void on_pbnSelectOtfProjection_clicked();
62-
void on_lstGdalDrivers_itemPressed( QTreeWidgetItem * item, int column );
6362
void on_lstGdalDrivers_itemDoubleClicked( QTreeWidgetItem * item, int column );
63+
void on_pbnEditCreateOptions_pressed();
64+
void on_pbnEditPyramidsOptions_pressed();
6465
void editGdalDriver( const QString& driverName );
6566
void saveOptions();
6667
//! Slot to change the theme this is handled when the user

0 commit comments

Comments
 (0)