Skip to content

Commit 1e6c400

Browse files
committedJul 11, 2012
Wire in QgsRasterLayerSaveAsDialog in QgisApp
1 parent b5be666 commit 1e6c400

File tree

5 files changed

+59
-6
lines changed

5 files changed

+59
-6
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@
158158
#include "qgspythonrunner.h"
159159
#include "qgsquerybuilder.h"
160160
#include "qgsrastercalcdialog.h"
161+
#include "qgsrasterfilewriter.h"
161162
#include "qgsrasterlayer.h"
162163
#include "qgsrasterlayerproperties.h"
163164
#include "qgsrasterrenderer.h"
@@ -3771,7 +3772,17 @@ void QgisApp::saveAsRasterFile()
37713772
}
37723773

37733774
QgsRasterLayerSaveAsDialog d( rasterLayer->dataProvider() );
3774-
d.exec();
3775+
if ( d.exec() == QDialog::Accepted )
3776+
{
3777+
QgsRasterFileWriter fileWriter( d.outputFileName() );
3778+
if ( d.tileMode() )
3779+
{
3780+
fileWriter.setTiledMode( true );
3781+
fileWriter.setMaxTileWidth( d.maximumTileSizeX() );
3782+
fileWriter.setMaxTileHeight( d.maximumTileSizeY() );
3783+
}
3784+
fileWriter.writeRaster( rasterLayer->dataProvider(), d.nColumns() );
3785+
}
37753786
}
37763787

37773788
void QgisApp::saveAsFile()

‎src/gui/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ qgscredentialdialog.h
153153
qgsowssourceselect.h
154154
qgsprojectionselector.h
155155
qgsquickprint.h
156+
qgsrasterlayersaveasdialog.h
156157
qgsludialog.h
157158
qgsprojectbadlayerguihandler.h
158159
qgslonglongvalidator.h

‎src/gui/qgsrasterlayersaveasdialog.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "qgsrasterlayersaveasdialog.h"
22
#include "qgsrasterdataprovider.h"
3+
#include <QFileDialog>
34

45
QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterDataProvider* sourceProvider,
56
QWidget* parent, Qt::WindowFlags f ): QDialog( parent, f ),
@@ -30,6 +31,12 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterDataProvider* s
3031
mMaximumSizeYLineEdit->setText( QString::number( 2000 ) );
3132
}
3233
}
34+
35+
QPushButton* okButton = mButtonBox->button( QDialogButtonBox::Ok );
36+
if ( okButton )
37+
{
38+
okButton->setEnabled( false );
39+
}
3340
}
3441

3542
void QgsRasterLayerSaveAsDialog::setValidators()
@@ -44,6 +51,35 @@ QgsRasterLayerSaveAsDialog::~QgsRasterLayerSaveAsDialog()
4451
{
4552
}
4653

54+
void QgsRasterLayerSaveAsDialog::on_mBrowseButton_clicked()
55+
{
56+
QString fileName;
57+
if ( mTileModeCheckBox->isChecked() )
58+
{
59+
fileName = QFileDialog::getExistingDirectory( this, tr( "Select output directory" ) );
60+
}
61+
else
62+
{
63+
fileName = QFileDialog::getOpenFileName( this, tr( "Select output file" ) );
64+
}
65+
66+
if ( !fileName.isEmpty() )
67+
{
68+
mSaveAsLineEdit->setText( fileName );
69+
}
70+
}
71+
72+
void QgsRasterLayerSaveAsDialog::on_mSaveAsLineEdit_textChanged( const QString& text )
73+
{
74+
QPushButton* okButton = mButtonBox->button( QDialogButtonBox::Ok );
75+
if ( !okButton )
76+
{
77+
return;
78+
}
79+
80+
okButton->setEnabled( QFile::exists( text ) );
81+
}
82+
4783
int QgsRasterLayerSaveAsDialog::nColumns() const
4884
{
4985
return mColumnsLineEdit->text().toInt();

‎src/gui/qgsrasterlayersaveasdialog.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class QgsRasterDataProvider;
77

88
class QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRasterLayerSaveAsDialogBase
99
{
10+
Q_OBJECT
1011
public:
1112
QgsRasterLayerSaveAsDialog( QgsRasterDataProvider* sourceProvider, QWidget* parent = 0, Qt::WindowFlags f = 0 );
1213
~QgsRasterLayerSaveAsDialog();
@@ -19,6 +20,10 @@ class QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRasterLayerSave
1920
QString outputFileName() const;
2021
QString outputFormat() const;
2122

23+
private slots:
24+
void on_mBrowseButton_clicked();
25+
void on_mSaveAsLineEdit_textChanged( const QString& text );
26+
2227
private:
2328
QgsRasterDataProvider* mDataProvider;
2429

‎src/ui/qgsrasterlayersaveasdialogbase.ui

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
<item row="1" column="1">
4141
<widget class="QLineEdit" name="mSaveAsLineEdit">
4242
<property name="enabled">
43-
<bool>false</bool>
43+
<bool>true</bool>
4444
</property>
4545
</widget>
4646
</item>
4747
<item row="1" column="2">
4848
<widget class="QPushButton" name="mBrowseButton">
4949
<property name="enabled">
50-
<bool>false</bool>
50+
<bool>true</bool>
5151
</property>
5252
<property name="text">
5353
<string>Browse...</string>
@@ -115,7 +115,7 @@
115115
</widget>
116116
</item>
117117
<item row="4" column="0" colspan="2">
118-
<widget class="QDialogButtonBox" name="buttonBox">
118+
<widget class="QDialogButtonBox" name="mButtonBox">
119119
<property name="orientation">
120120
<enum>Qt::Horizontal</enum>
121121
</property>
@@ -129,7 +129,7 @@
129129
<resources/>
130130
<connections>
131131
<connection>
132-
<sender>buttonBox</sender>
132+
<sender>mButtonBox</sender>
133133
<signal>accepted()</signal>
134134
<receiver>QgsRasterLayerSaveAsDialogBase</receiver>
135135
<slot>accept()</slot>
@@ -145,7 +145,7 @@
145145
</hints>
146146
</connection>
147147
<connection>
148-
<sender>buttonBox</sender>
148+
<sender>mButtonBox</sender>
149149
<signal>rejected()</signal>
150150
<receiver>QgsRasterLayerSaveAsDialogBase</receiver>
151151
<slot>reject()</slot>

0 commit comments

Comments
 (0)
Please sign in to comment.