Skip to content

Commit b5be666

Browse files
committed
Initialize raster save as dialog
1 parent 67cd3f5 commit b5be666

File tree

4 files changed

+90
-5
lines changed

4 files changed

+90
-5
lines changed

src/app/qgisapp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3770,7 +3770,7 @@ void QgisApp::saveAsRasterFile()
37703770
return;
37713771
}
37723772

3773-
QgsRasterLayerSaveAsDialog d;
3773+
QgsRasterLayerSaveAsDialog d( rasterLayer->dataProvider() );
37743774
d.exec();
37753775
}
37763776

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,80 @@
11
#include "qgsrasterlayersaveasdialog.h"
2+
#include "qgsrasterdataprovider.h"
3+
4+
QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterDataProvider* sourceProvider,
5+
QWidget* parent, Qt::WindowFlags f ): QDialog( parent, f ),
6+
mDataProvider( sourceProvider )
27

3-
QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QWidget* parent, Qt::WindowFlags f ): QDialog( parent, f )
48
{
59
setupUi( this );
10+
setValidators();
11+
12+
//fill reasonable default values depending on the provider
13+
if ( mDataProvider )
14+
{
15+
if ( mDataProvider->capabilities() & QgsRasterDataProvider::ExactResolution )
16+
{
17+
int xSize = mDataProvider->xSize();
18+
int ySize = mDataProvider->ySize();
19+
mColumnsLineEdit->setText( QString::number( xSize ) );
20+
mRowsLineEdit->setText( QString::number( ySize ) );
21+
mMaximumSizeXLineEdit->setText( QString::number( xSize ) );
22+
mMaximumSizeYLineEdit->setText( QString::number( ySize ) );
23+
}
24+
else //wms
25+
{
26+
mTileModeCheckBox->setChecked( true );
27+
mColumnsLineEdit->setText( QString::number( 10000 ) );
28+
mRowsLineEdit->setText( QString::number( 10000 ) );
29+
mMaximumSizeXLineEdit->setText( QString::number( 2000 ) );
30+
mMaximumSizeYLineEdit->setText( QString::number( 2000 ) );
31+
}
32+
}
33+
}
34+
35+
void QgsRasterLayerSaveAsDialog::setValidators()
36+
{
37+
mColumnsLineEdit->setValidator( new QIntValidator( this ) );
38+
mRowsLineEdit->setValidator( new QIntValidator( this ) );
39+
mMaximumSizeXLineEdit->setValidator( new QIntValidator( this ) );
40+
mMaximumSizeYLineEdit->setValidator( new QIntValidator( this ) );
641
}
742

843
QgsRasterLayerSaveAsDialog::~QgsRasterLayerSaveAsDialog()
944
{
1045
}
46+
47+
int QgsRasterLayerSaveAsDialog::nColumns() const
48+
{
49+
return mColumnsLineEdit->text().toInt();
50+
}
51+
52+
int QgsRasterLayerSaveAsDialog::nRows() const
53+
{
54+
return mRowsLineEdit->text().toInt();
55+
}
56+
57+
int QgsRasterLayerSaveAsDialog::maximumTileSizeX() const
58+
{
59+
return mMaximumSizeXLineEdit->text().toInt();
60+
}
61+
62+
int QgsRasterLayerSaveAsDialog::maximumTileSizeY() const
63+
{
64+
return mMaximumSizeYLineEdit->text().toInt();
65+
}
66+
67+
bool QgsRasterLayerSaveAsDialog::tileMode() const
68+
{
69+
return mTileModeCheckBox->isChecked();
70+
}
71+
72+
QString QgsRasterLayerSaveAsDialog::outputFileName() const
73+
{
74+
return mSaveAsLineEdit->text();
75+
}
76+
77+
QString QgsRasterLayerSaveAsDialog::outputFormat() const
78+
{
79+
return ""; //soon...
80+
}

src/gui/qgsrasterlayersaveasdialog.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,26 @@
33

44
#include "ui_qgsrasterlayersaveasdialogbase.h"
55

6+
class QgsRasterDataProvider;
7+
68
class QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRasterLayerSaveAsDialogBase
79
{
810
public:
9-
QgsRasterLayerSaveAsDialog( QWidget* parent = 0, Qt::WindowFlags f = 0 );
11+
QgsRasterLayerSaveAsDialog( QgsRasterDataProvider* sourceProvider, QWidget* parent = 0, Qt::WindowFlags f = 0 );
1012
~QgsRasterLayerSaveAsDialog();
13+
14+
int nColumns() const;
15+
int nRows() const;
16+
int maximumTileSizeX() const;
17+
int maximumTileSizeY() const;
18+
bool tileMode() const;
19+
QString outputFileName() const;
20+
QString outputFormat() const;
21+
22+
private:
23+
QgsRasterDataProvider* mDataProvider;
24+
25+
void setValidators();
1126
};
1227

1328
#endif // QGSRASTERLAYERSAVEASDIALOG_H

src/ui/qgsrasterlayersaveasdialogbase.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<bool>false</bool>
5151
</property>
5252
<property name="text">
53-
<string>Browse</string>
53+
<string>Browse...</string>
5454
</property>
5555
</widget>
5656
</item>
@@ -85,7 +85,7 @@
8585
</property>
8686
<layout class="QGridLayout" name="gridLayout">
8787
<item row="0" column="1">
88-
<widget class="QLineEdit" name="mMaximumSizeXComboBox"/>
88+
<widget class="QLineEdit" name="mMaximumSizeXLineEdit"/>
8989
</item>
9090
<item row="0" column="0">
9191
<widget class="QLabel" name="mMaximumSizeXLabel">

0 commit comments

Comments
 (0)