Skip to content

Commit 580af38

Browse files
author
rblazek
committed
set validator in grass element dialog, use this dialog for new vector
git-svn-id: http://svn.osgeo.org/qgis/trunk@5091 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 12528c5 commit 580af38

File tree

2 files changed

+19
-43
lines changed

2 files changed

+19
-43
lines changed

src/plugins/grass/qgsgrassplugin.cpp

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ extern "C" {
6161
#include "../../src/providers/grass/qgsgrassprovider.h"
6262

6363
//the gui subclass
64+
#include "qgsgrassutils.h"
6465
#include "qgsgrassattributes.h"
6566
#include "qgsgrassselect.h"
6667
#include "qgsgrassedit.h"
@@ -459,47 +460,11 @@ void QgsGrassPlugin::newVector()
459460
bool ok;
460461
QString name;
461462

462-
while (1)
463-
{
464-
name = QInputDialog::getText( "New GRASS vector",
465-
"Enter new GRASS vector name:", QLineEdit::Normal,
466-
name, &ok);
467-
468-
if ( !ok ) return;
469-
470-
// Check if the name is valid
471-
name = name.stripWhiteSpace();
472-
473-
if ( name.isEmpty() ) {
474-
QMessageBox::warning( 0, "Warning", "Enter vector name" );
475-
continue;
476-
}
463+
QgsGrassElementDialog dialog;
464+
name = dialog.getItem ( "vector", "New vector name",
465+
"New vector name", "", "", &ok );
477466

478-
if ( Vect_legal_filename ( (char *) name.ascii() ) != 1 )
479-
{
480-
QMessageBox::warning( 0, "Warning", "The name is not valid. "
481-
"A vector name can contain letters, digits and underscores "
482-
"and it must start with letter." );
483-
continue;
484-
}
485-
486-
// Check if exists
487-
QString head = QgsGrass::getDefaultGisdbase() + "/"
488-
+ QgsGrass::getDefaultLocation() + "/"
489-
+ QgsGrass::getDefaultMapset() + "/vector/"
490-
+ name + "/head";
491-
492-
QFile file(head);
493-
if ( file.exists() )
494-
{
495-
int ret = QMessageBox::question ( 0, "Warning", "The vector exists. "
496-
"Overwrite? ", QMessageBox::Yes, QMessageBox::No );
497-
498-
if ( ret == QMessageBox::No ) continue;
499-
}
500-
501-
break;
502-
}
467+
if ( !ok ) return;
503468

504469
// Create new map
505470
QgsGrass::setMapset ( QgsGrass::getDefaultGisdbase(),

src/plugins/grass/qgsgrassutils.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222
#include <QVBoxLayout>
2323
#include <QHBoxLayout>
2424
#include <QFileInfo>
25-
26-
//#include "qgis.h"
27-
//#include "qgsapplication.h"
25+
#include <QRegExpValidator>
26+
#include <QRegExp>
2827

2928
extern "C" {
3029
#include <grass/gis.h>
@@ -106,6 +105,18 @@ QString QgsGrassElementDialog::getItem ( QString element,
106105
layout->addWidget( mLabel );
107106

108107
mLineEdit = new QLineEdit ( text );
108+
QRegExp rx;
109+
if ( element == "vector" )
110+
{
111+
rx.setPattern("[A-Za-z_][A-Za-z0-9_]+");
112+
}
113+
else
114+
{
115+
rx.setPattern("[A-Za-z0-9_.]+");
116+
}
117+
QRegExpValidator *val = new QRegExpValidator( rx, this );
118+
mLineEdit->setValidator ( val );
119+
109120
layout->addWidget( mLineEdit );
110121

111122
mErrorLabel = new QLabel ( "X" );

0 commit comments

Comments
 (0)