//! mouse button released void QgsGrassRegionEdit::canvasReleaseEvent( QMouseEvent * event ) { if ( !mDraw ) return; mEndPoint = toMapCoordinates( event->pos() ); setRegion( mStartPoint, mEndPoint ); mDraw = false; emit captureEnded(); }
void QgsGrassRegion::mapsetChanged() { delete mRegionEdit; mRegionEdit = 0; if ( QgsGrass::activeMode() ) { mRegionEdit = new QgsGrassRegionEdit( mCanvas ); connect( mRegionEdit, SIGNAL( captureEnded() ), this, SLOT( onCaptureFinished() ) ); mCrs = QgsGrass::crs( QgsGrass::getDefaultGisdbase(), QgsGrass::getDefaultLocation() ); reloadRegion(); } }
QgsGrassRegion::QgsGrassRegion( QgsGrassPlugin *plugin, QgisInterface *iface, QWidget * parent, Qt::WFlags f ) : QDialog( parent, f ), QgsGrassRegionBase( ) { QgsDebugMsg( "QgsGrassRegion()" ); setupUi( this ); setAttribute( Qt::WA_DeleteOnClose ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); mPlugin = plugin; mInterface = iface; mCanvas = mInterface->mapCanvas(); restorePosition(); mUpdatingGui = false; // Set input validators QDoubleValidator *dv = new QDoubleValidator( 0 ); QIntValidator *iv = new QIntValidator( 0 ); mNorth->setValidator( dv ); mSouth->setValidator( dv ); mEast->setValidator( dv ); mWest->setValidator( dv ); mNSRes->setValidator( dv ); mEWRes->setValidator( dv ); mRows->setValidator( iv ); mCols->setValidator( iv ); // Group radio buttons mRadioGroup = new QButtonGroup(); mRadioGroup->addButton( mCellResRadio ); mRadioGroup->addButton( mRowsColsRadio ); mCellResRadio->setChecked( true ); radioChanged(); connect( mRadioGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( radioChanged() ) ); // Set values to current region QString gisdbase = QgsGrass::getDefaultGisdbase(); QString location = QgsGrass::getDefaultLocation(); QString mapset = QgsGrass::getDefaultMapset(); if ( gisdbase.isEmpty() || location.isEmpty() || mapset.isEmpty() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "GISDBASE, LOCATION_NAME or MAPSET is not set, cannot display current region." ) ); } QgsGrass::setLocation( gisdbase, location ); char *err = G__get_window( &mWindow, ( char * ) "", ( char * ) "WIND", mapset.toLatin1().data() ); if ( err ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot read current region: %1" ).arg( QString::fromUtf8( err ) ) ); return; } mRegionEdit = new QgsGrassRegionEdit( mCanvas ); connect( mRegionEdit, SIGNAL( captureStarted() ), this, SLOT( hide() ) ); connect( mRegionEdit, SIGNAL( captureEnded() ), this, SLOT( onCaptureFinished() ) ); mCanvas->setMapTool( mRegionEdit ); refreshGui(); connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); // Connect entries connect( mNorth, SIGNAL( editingFinished() ), this, SLOT( northChanged() ) ); connect( mSouth, SIGNAL( editingFinished() ), this, SLOT( southChanged() ) ); connect( mEast, SIGNAL( editingFinished() ), this, SLOT( eastChanged() ) ); connect( mWest, SIGNAL( editingFinished() ), this, SLOT( westChanged() ) ); connect( mNSRes, SIGNAL( editingFinished() ), this, SLOT( NSResChanged() ) ); connect( mEWRes, SIGNAL( editingFinished() ), this, SLOT( EWResChanged() ) ); connect( mRows, SIGNAL( editingFinished() ), this, SLOT( rowsChanged() ) ); connect( mCols, SIGNAL( editingFinished() ), this, SLOT( colsChanged() ) ); // Symbology QPen pen = mPlugin->regionPen(); mColorButton->setColor( pen.color() ); connect( mColorButton, SIGNAL( clicked() ), this, SLOT( changeColor() ) ); mWidthSpinBox->setValue( pen.width() ); connect( mWidthSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( changeWidth() ) ); }