Skip to content

Commit d28e862

Browse files
author
rugginoso
committedJun 17, 2009
Added the possibility to select multiple files in modules such as r.patch.
Changed the module r.patch to exploit the new feature (fixes ticket #1489) Fixed the starting point of the selection dialog to the last directory used (fixes ticket #1362) git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@10945 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 9bbefcb commit d28e862

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed
 

‎src/plugins/grass/modules-common/r.patch.qgm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
<qgisgrassmodule label="Create new raster by combining other rasters" module="r.patch">
55
<option key="input"/>
66
<flag key="z" answer="off" hidden="no" />
7-
<file key="input" label="Type in map names separated by a comma" />
7+
<file key="input" type="multiple" />
88
<option key="output" />
99
</qgisgrassmodule>

‎src/plugins/grass/qgsgrassmodule.cpp

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3013,6 +3013,10 @@ QgsGrassModuleFile::QgsGrassModuleFile(
30133013
if ( qdesc.attribute( "type" ).toLower() == "new" )
30143014
{
30153015
mType = New;
3016+
}
3017+
if ( qdesc.attribute( "type" ).toLower() == "multiple" )
3018+
{
3019+
mType = Multiple;
30163020
}
30173021

30183022
if ( !qdesc.attribute( "filters" ).isNull() )
@@ -3071,17 +3075,21 @@ void QgsGrassModuleFile::browse()
30713075
// TODO: unfortunately QFileDialog does not support 'new' directory
30723076
QFileDialog *fd = new QFileDialog( this, NULL, mLineEdit->text() );
30733077

3074-
fd->setDirectory( QDir::current() );
3075-
3076-
fd->setFileMode( QFileDialog::AnyFile );
3078+
static QDir currentDir = QDir::current();
3079+
fd->setDirectory( currentDir );
30773080

3078-
if ( mType == New )
3079-
{
3080-
fd->setAcceptMode( QFileDialog::AcceptSave );
3081-
}
3082-
else
3083-
{
3084-
fd->setAcceptMode( QFileDialog::AcceptOpen );
3081+
switch( mType ) {
3082+
case New:
3083+
fd->setFileMode( QFileDialog::AnyFile );
3084+
fd->setAcceptMode( QFileDialog::AcceptSave );
3085+
break;
3086+
case Multiple:
3087+
fd->setFileMode( QFileDialog::ExistingFiles );
3088+
fd->setAcceptMode( QFileDialog::AcceptOpen );
3089+
break;
3090+
default:
3091+
fd->setFileMode( QFileDialog::ExistingFile );
3092+
fd->setAcceptMode( QFileDialog::AcceptOpen );
30853093
}
30863094

30873095
if ( mFilters.size() > 0 )
@@ -3092,7 +3100,14 @@ void QgsGrassModuleFile::browse()
30923100

30933101
if ( fd->exec() == QDialog::Accepted )
30943102
{
3095-
mLineEdit->setText( fd->selectedFiles().first() );
3103+
QString selectedFile = fd->selectedFiles().first();
3104+
QFileInfo fi = QFileInfo(selectedFile);
3105+
currentDir = fi.absoluteDir();
3106+
if (mType == Multiple)
3107+
{
3108+
selectedFile = fd->selectedFiles().join(",");
3109+
}
3110+
mLineEdit->setText( selectedFile );
30963111
}
30973112
}
30983113

‎src/plugins/grass/qgsgrassmodule.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ class QgsGrassModuleFile: public QgsGrassModuleGroupBoxItem
816816
~QgsGrassModuleFile();
817817

818818
//! File type
819-
enum Type { Old, New };
819+
enum Type { Old, New, Multiple };
820820

821821
// Reimplemented methods from QgsGrassModuleOptions
822822
QStringList options();

0 commit comments

Comments
 (0)
Please sign in to comment.