Skip to content

Commit 62612bd

Browse files
committed
Use QgsProjectionSelectionWidget for raster layer save as dialog
1 parent f68b099 commit 62612bd

3 files changed

Lines changed: 59 additions & 89 deletions

File tree

src/gui/qgsrasterlayersaveasdialog.cpp

Lines changed: 5 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,8 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
4848
on_mRawModeRadioButton_toggled( true );
4949

5050
setValidators();
51-
// Translated labels + EPSG are updated later
52-
mCrsComboBox->addItem( "Layer", OriginalCrs );
53-
mCrsComboBox->addItem( "Project", CurrentCrs );
54-
mCrsComboBox->addItem( "Selected", UserCrs );
5551

5652
toggleResolutionSize();
57-
mUserCrs.createFromOgcWmsCrs( "EPSG:4326" );
5853

5954
//only one hardcoded format at the moment
6055
QStringList myFormats;
@@ -123,7 +118,10 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
123118

124119
mTilesGroupBox->hide();
125120

126-
updateCrsGroup();
121+
mCrsSelector->setLayerCrs( mLayerCrs );
122+
mCrsSelector->setCrs( mCurrentCrs );
123+
connect( mCrsSelector, SIGNAL( crsChanged( QgsCoordinateReferenceSystem ) ),
124+
this, SLOT( crsChanged() ) );
127125

128126
QPushButton* okButton = mButtonBox->button( QDialogButtonBox::Ok );
129127
if ( okButton )
@@ -426,23 +424,8 @@ void QgsRasterLayerSaveAsDialog::extentChanged()
426424
recalcResolutionSize();
427425
}
428426

429-
void QgsRasterLayerSaveAsDialog::on_mChangeCrsPushButton_clicked()
430-
{
431-
QgsGenericProjectionSelector * selector = new QgsGenericProjectionSelector( this );
432-
selector->setMessage();
433-
selector->setSelectedCrsId( mUserCrs.srsid() );
434-
if ( selector->exec() )
435-
{
436-
mUserCrs.createFromId( selector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
437-
mCrsComboBox->setCurrentIndex( mCrsComboBox->findData( UserCrs ) );
438-
}
439-
delete selector;
440-
crsChanged();
441-
}
442-
443427
void QgsRasterLayerSaveAsDialog::crsChanged()
444428
{
445-
QgsDebugMsg( "Entered" );
446429
if ( outputCrs() != mPreviousCrs )
447430
{
448431
mExtentGroupBox->setOutputCrs( outputCrs() );
@@ -484,35 +467,11 @@ void QgsRasterLayerSaveAsDialog::crsChanged()
484467
}
485468
}
486469
mPreviousCrs = outputCrs();
487-
updateCrsGroup();
488-
}
489-
490-
void QgsRasterLayerSaveAsDialog::updateCrsGroup()
491-
{
492-
QgsDebugMsg( "Entered" );
493-
494-
mCrsComboBox->setItemText( mCrsComboBox->findData( OriginalCrs ),
495-
tr( "Layer (%1, %2)" ).arg( mLayerCrs.description() ).arg( mLayerCrs.authid() ) );
496-
497-
mCrsComboBox->setItemText( mCrsComboBox->findData( CurrentCrs ),
498-
tr( "Project (%1, %2)" ).arg( mCurrentCrs.description() ).arg( mCurrentCrs.authid() ) );
499-
500-
mCrsComboBox->setItemText( mCrsComboBox->findData( UserCrs ),
501-
tr( "Selected (%1, %2)" ).arg( mUserCrs.description() ).arg( mUserCrs.authid() ) );
502470
}
503471

504472
QgsCoordinateReferenceSystem QgsRasterLayerSaveAsDialog::outputCrs()
505473
{
506-
int state = mCrsComboBox->itemData( mCrsComboBox->currentIndex() ).toInt();
507-
if ( state == OriginalCrs )
508-
{
509-
return mLayerCrs;
510-
}
511-
else if ( state == CurrentCrs )
512-
{
513-
return mCurrentCrs;
514-
}
515-
return mUserCrs;
474+
return mCrsSelector->crs();
516475
}
517476

518477
QgsRasterLayerSaveAsDialog::Mode QgsRasterLayerSaveAsDialog::mode() const

src/gui/qgsrasterlayersaveasdialog.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,6 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast
9292
void on_mColumnsLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcResolution(); }
9393
void on_mRowsLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcResolution(); }
9494

95-
void on_mChangeCrsPushButton_clicked();
96-
97-
void on_mCrsComboBox_currentIndexChanged( int ) { crsChanged(); }
98-
9995
void on_mAddNoDataManuallyToolButton_clicked();
10096
void on_mLoadTransparentNoDataToolButton_clicked();
10197
void on_mRemoveSelectedNoDataToolButton_clicked();
@@ -112,7 +108,6 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast
112108
QgsRectangle mCurrentExtent;
113109
QgsCoordinateReferenceSystem mLayerCrs; // may differ from provider CRS
114110
QgsCoordinateReferenceSystem mCurrentCrs;
115-
QgsCoordinateReferenceSystem mUserCrs;
116111
QgsCoordinateReferenceSystem mPreviousCrs;
117112
ResolutionState mResolutionState;
118113
QVector<bool> mNoDataToEdited;
@@ -126,14 +121,15 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast
126121
void recalcResolution();
127122
void updateResolutionStateMsg();
128123
void recalcResolutionSize();
129-
void crsChanged();
130-
void updateCrsGroup();
131124

132125
void addNoDataRow( double min, double max );
133126
void setNoDataToEdited( int row );
134127
double noDataCellValue( int row, int column ) const;
135128
void adjustNoDataCellWidth( int row, int column );
136129
bool validate() const;
130+
131+
private slots:
132+
void crsChanged();
137133
};
138134

139135

src/ui/qgsrasterlayersaveasdialogbase.ui

Lines changed: 51 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -155,31 +155,9 @@ datasets with maximum width and height specified below.</string>
155155
</widget>
156156
</item>
157157
<item>
158-
<widget class="QComboBox" name="mCrsComboBox">
159-
<property name="sizePolicy">
160-
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
161-
<horstretch>0</horstretch>
162-
<verstretch>0</verstretch>
163-
</sizepolicy>
164-
</property>
165-
<property name="minimumSize">
166-
<size>
167-
<width>250</width>
168-
<height>0</height>
169-
</size>
170-
</property>
171-
</widget>
172-
</item>
173-
<item>
174-
<widget class="QPushButton" name="mChangeCrsPushButton">
175-
<property name="sizePolicy">
176-
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
177-
<horstretch>0</horstretch>
178-
<verstretch>0</verstretch>
179-
</sizepolicy>
180-
</property>
181-
<property name="text">
182-
<string>Change...</string>
158+
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
159+
<property name="focusPolicy">
160+
<enum>Qt::StrongFocus</enum>
183161
</property>
184162
</widget>
185163
</item>
@@ -200,9 +178,9 @@ datasets with maximum width and height specified below.</string>
200178
<property name="geometry">
201179
<rect>
202180
<x>0</x>
203-
<y>0</y>
204-
<width>550</width>
205-
<height>618</height>
181+
<y>-179</y>
182+
<width>541</width>
183+
<height>583</height>
206184
</rect>
207185
</property>
208186
<layout class="QVBoxLayout" name="verticalLayout_5">
@@ -664,22 +642,16 @@ datasets with maximum width and height specified below.</string>
664642
</layout>
665643
</widget>
666644
<customwidgets>
667-
<customwidget>
668-
<class>QgsRasterFormatSaveOptionsWidget</class>
669-
<extends>QWidget</extends>
670-
<header>qgsrasterformatsaveoptionswidget.h</header>
671-
<container>1</container>
672-
</customwidget>
673645
<customwidget>
674646
<class>QgsCollapsibleGroupBox</class>
675647
<extends>QGroupBox</extends>
676648
<header>qgscollapsiblegroupbox.h</header>
677649
<container>1</container>
678650
</customwidget>
679651
<customwidget>
680-
<class>QgsRasterPyramidsOptionsWidget</class>
652+
<class>QgsProjectionSelectionWidget</class>
681653
<extends>QWidget</extends>
682-
<header>qgsrasterpyramidsoptionswidget.h</header>
654+
<header location="global">qgsprojectionselectionwidget.h</header>
683655
<container>1</container>
684656
</customwidget>
685657
<customwidget>
@@ -688,7 +660,50 @@ datasets with maximum width and height specified below.</string>
688660
<header>qgsextentgroupbox.h</header>
689661
<container>1</container>
690662
</customwidget>
663+
<customwidget>
664+
<class>QgsRasterFormatSaveOptionsWidget</class>
665+
<extends>QWidget</extends>
666+
<header>qgsrasterformatsaveoptionswidget.h</header>
667+
<container>1</container>
668+
</customwidget>
669+
<customwidget>
670+
<class>QgsRasterPyramidsOptionsWidget</class>
671+
<extends>QWidget</extends>
672+
<header>qgsrasterpyramidsoptionswidget.h</header>
673+
<container>1</container>
674+
</customwidget>
691675
</customwidgets>
676+
<tabstops>
677+
<tabstop>mRawModeRadioButton</tabstop>
678+
<tabstop>mRenderedModeRadioButton</tabstop>
679+
<tabstop>mFormatComboBox</tabstop>
680+
<tabstop>mTileModeCheckBox</tabstop>
681+
<tabstop>mSaveAsLineEdit</tabstop>
682+
<tabstop>mBrowseButton</tabstop>
683+
<tabstop>mCrsSelector</tabstop>
684+
<tabstop>mScrollArea</tabstop>
685+
<tabstop>mResolutionRadioButton</tabstop>
686+
<tabstop>mXResolutionLineEdit</tabstop>
687+
<tabstop>mYResolutionLineEdit</tabstop>
688+
<tabstop>mOriginalResolutionPushButton</tabstop>
689+
<tabstop>mSizeRadioButton</tabstop>
690+
<tabstop>mColumnsLineEdit</tabstop>
691+
<tabstop>mRowsLineEdit</tabstop>
692+
<tabstop>mOriginalSizePushButton</tabstop>
693+
<tabstop>mMaximumSizeXLineEdit</tabstop>
694+
<tabstop>mMaximumSizeYLineEdit</tabstop>
695+
<tabstop>mCreateOptionsGroupBox</tabstop>
696+
<tabstop>mPyramidsGroupBox</tabstop>
697+
<tabstop>mPyramidsUseExistingCheckBox</tabstop>
698+
<tabstop>mPyramidResolutionsLineEdit</tabstop>
699+
<tabstop>mNoDataGroupBox</tabstop>
700+
<tabstop>mNoDataTableWidget</tabstop>
701+
<tabstop>mAddNoDataManuallyToolButton</tabstop>
702+
<tabstop>mRemoveSelectedNoDataToolButton</tabstop>
703+
<tabstop>mLoadTransparentNoDataToolButton</tabstop>
704+
<tabstop>mRemoveAllNoDataToolButton</tabstop>
705+
<tabstop>mButtonBox</tabstop>
706+
</tabstops>
692707
<resources/>
693708
<connections>
694709
<connection>

0 commit comments

Comments
 (0)