QgsGrassRegion::QgsGrassRegion( QgisInterface *iface, QWidget * parent, Qt::WindowFlags f ) : QWidget( parent, f ) , QgsGrassRegionBase() , mInterface( 0 ) , mCanvas( 0 ) , mRadioGroup( 0 ) , mX( 0 ) , mY( 0 ) , mUpdatingGui( false ) , mRegionEdit( 0 ) { QgsDebugMsg( "QgsGrassRegion()" ); QgsGrass::initRegion( &mWindow ); setupUi( this ); setAttribute( Qt::WA_DeleteOnClose ); connect( mButtonBox, SIGNAL( clicked( QAbstractButton * ) ), SLOT( buttonClicked( QAbstractButton * ) ) ); //mPlugin = plugin; mInterface = iface; mCanvas = mInterface->mapCanvas(); 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( mResRadio ); mRadioGroup->addButton( mRowsColsRadio ); mResRadio->setChecked( true ); radioChanged(); connect( mRadioGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( radioChanged() ) ); // 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() ) ); connect( QgsGrass::instance(), SIGNAL( regionChanged() ), SLOT( reloadRegion() ) ); connect( mCanvas, SIGNAL( mapToolSet( QgsMapTool * ) ), SLOT( canvasMapToolSet( QgsMapTool * ) ) ); }
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(); } }
void QgsGrassRegion::mapsetChanged() { delete mRegionEdit; mRegionEdit = nullptr; if ( QgsGrass::activeMode() ) { mRegionEdit = new QgsGrassRegionEdit( mCanvas ); connect( mRegionEdit, &QgsGrassRegionEdit::captureEnded, this, &QgsGrassRegion::onCaptureFinished ); QString error; mCrs = QgsGrass::crs( QgsGrass::getDefaultGisdbase(), QgsGrass::getDefaultLocation(), error ); reloadRegion(); } }
void QgsGrassRegion::buttonClicked( QAbstractButton *button ) { if ( mButtonBox->buttonRole( button ) == QDialogButtonBox::ApplyRole ) { try { QgsGrass::instance()->writeRegion( &mWindow ); } catch ( QgsGrass::Exception &e ) { QgsGrass::warning( e ); return; } } else if ( mButtonBox->buttonRole( button ) == QDialogButtonBox::ResetRole ) { reloadRegion(); } // Better to keep the tool selected until another tool is chosen? mCanvas->unsetMapTool( mRegionEdit ); }