QgsGrassPlugin::~QgsGrassPlugin() { QgsDebugMsg( "entered." ); // When main app is closed, QgsGrassTools (probably because of dock widget) are destroyed before QgsGrassPlugin // -> do not call mTools here //if ( mTools ) // mTools->closeTools(); if ( mEdit ) { mEdit->closeEdit(); } disconnect( QgsGrass::instance(), SIGNAL( mapsetChanged() ), this, SLOT( mapsetChanged() ) ); QgsGrass::instance()->closeMapsetWarn(); }
void QgsGrassPlugin::projectRead() { QgsDebugMsg( "entered." ); bool ok; QString gisdbase = QgsProject::instance()->readEntry( "GRASS", "/WorkingGisdbase", "", &ok ).trimmed(); QString location = QgsProject::instance()->readEntry( "GRASS", "/WorkingLocation", "", &ok ).trimmed(); QString mapset = QgsProject::instance()->readEntry( "GRASS", "/WorkingMapset", "", &ok ).trimmed(); if ( gisdbase.isEmpty() || location.isEmpty() || mapset.isEmpty() ) { return; } QgsDebugMsg( "Working mapset specified" ); QString currentPath = QgsGrass::getDefaultGisdbase() + "/" + QgsGrass::getDefaultLocation() + "/" + QgsGrass::getDefaultMapset(); QString newPath = gisdbase + "/" + location + "/" + mapset; if ( QFileInfo( currentPath ).canonicalPath() == QFileInfo( newPath ).canonicalPath() ) { // The same mapset is already open return; } QString err = QgsGrass::closeMapset(); if ( !err.isNull() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot close current mapset. %1" ).arg( err ) ); return; } mapsetChanged(); err = QgsGrass::openMapset( gisdbase, location, mapset ); if ( !err.isNull() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot open GRASS mapset. %1" ).arg( err ) ); return; } mapsetChanged(); }
/**************************** QgsGrassModuleInputModel ****************************/ QgsGrassModuleInputModel::QgsGrassModuleInputModel( QObject *parent ) : QStandardItemModel( parent ) , mWatcher( 0 ) { QgsDebugMsg( "entered" ); setColumnCount( 1 ); mWatcher = new QFileSystemWatcher( this ); connect( mWatcher, SIGNAL( directoryChanged( const QString & ) ), SLOT( onDirectoryChanged( const QString & ) ) ); connect( QgsGrass::instance(), SIGNAL( mapsetChanged() ), SLOT( onMapsetChanged() ) ); reload(); }
void QgsGrassPlugin::closeMapset() { // QgsDebugMsg("entered."); QString err = QgsGrass::closeMapset(); if ( !err.isNull() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot close mapset. %1" ).arg( err ) ); return; } saveMapset(); mapsetChanged(); }
void QgsGrassPlugin::openMapset() { // QgsDebugMsg("entered."); QString element; QgsGrassSelect *sel = new QgsGrassSelect( QgsGrassSelect::MAPSET ); if ( !sel->exec() ) return; QString err = QgsGrass::openMapset( sel->gisdbase, sel->location, sel->mapset ); if ( !err.isNull() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot open the mapset. %1" ).arg( err ) ); return; } saveMapset(); mapsetChanged(); }
/* * Initialize the GUI interface for the plugin */ void QgsGrassPlugin::initGui() { toolBarPointer = 0; mTools = 0; mNewMapset = 0; mRegion = 0; QSettings settings; QgsGrass::init(); mCanvas = qGisInterface->mapCanvas(); QWidget* qgis = qGisInterface->mainWindow(); connect( mCanvas->mapRenderer(), SIGNAL( destinationSrsChanged() ), this, SLOT( setTransform() ) ); // Connect project connect( qgis, SIGNAL( projectRead() ), this, SLOT( projectRead() ) ); connect( qgis, SIGNAL( newProject() ), this, SLOT( newProject() ) ); // Create region rubber band mRegionBand = new QgsRubberBand( mCanvas, QGis::Polygon ); mRegionBand->setZValue( 20 ); // Create the action for tool (the icons are set later by calling setCurrentTheme) mOpenMapsetAction = new QAction( QIcon(), tr( "Open mapset" ), this ); mNewMapsetAction = new QAction( QIcon(), tr( "New mapset" ), this ); mCloseMapsetAction = new QAction( QIcon(), tr( "Close mapset" ), this ); mAddVectorAction = new QAction( QIcon(), tr( "Add GRASS vector layer" ), this ); mAddRasterAction = new QAction( QIcon(), tr( "Add GRASS raster layer" ), this ); mOpenToolsAction = new QAction( QIcon(), tr( "Open GRASS tools" ), this ); mRegionAction = new QAction( QIcon(), tr( "Display Current Grass Region" ), this ); mRegionAction->setCheckable( true ); mEditRegionAction = new QAction( QIcon(), tr( "Edit Current Grass Region" ), this ); mEditAction = new QAction( QIcon(), tr( "Edit Grass Vector layer" ), this ); mNewVectorAction = new QAction( QIcon(), tr( "Create new Grass Vector" ), this ); mAddVectorAction->setWhatsThis( tr( "Adds a GRASS vector layer to the map canvas" ) ); mAddRasterAction->setWhatsThis( tr( "Adds a GRASS raster layer to the map canvas" ) ); mOpenToolsAction->setWhatsThis( tr( "Open GRASS tools" ) ); mRegionAction->setWhatsThis( tr( "Displays the current GRASS region as a rectangle on the map canvas" ) ); mEditRegionAction->setWhatsThis( tr( "Edit the current GRASS region" ) ); mEditAction->setWhatsThis( tr( "Edit the currently selected GRASS vector layer." ) ); // Connect the action connect( mAddVectorAction, SIGNAL( triggered() ), this, SLOT( addVector() ) ); connect( mAddRasterAction, SIGNAL( triggered() ), this, SLOT( addRaster() ) ); connect( mOpenToolsAction, SIGNAL( triggered() ), this, SLOT( openTools() ) ); connect( mEditAction, SIGNAL( triggered() ), this, SLOT( edit() ) ); connect( mNewVectorAction, SIGNAL( triggered() ), this, SLOT( newVector() ) ); connect( mRegionAction, SIGNAL( toggled( bool ) ), this, SLOT( switchRegion( bool ) ) ); connect( mEditRegionAction, SIGNAL( triggered() ), this, SLOT( changeRegion() ) ); connect( mOpenMapsetAction, SIGNAL( triggered() ), this, SLOT( openMapset() ) ); connect( mNewMapsetAction, SIGNAL( triggered() ), this, SLOT( newMapset() ) ); connect( mCloseMapsetAction, SIGNAL( triggered() ), this, SLOT( closeMapset() ) ); // Add actions to a GRASS plugin menu qGisInterface->addPluginToMenu( tr( "&GRASS" ), mOpenMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mNewMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mCloseMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mAddVectorAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mAddRasterAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mNewVectorAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mEditAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mOpenToolsAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mRegionAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mEditRegionAction ); // Add the toolbar to the main window toolBarPointer = qGisInterface->addToolBar( tr( "GRASS" ) ); toolBarPointer->setObjectName( "GRASS" ); // Add to the toolbar toolBarPointer->addAction( mOpenMapsetAction ); toolBarPointer->addAction( mNewMapsetAction ); toolBarPointer->addAction( mCloseMapsetAction ); toolBarPointer->addSeparator(); toolBarPointer->addAction( mAddVectorAction ); toolBarPointer->addAction( mAddRasterAction ); toolBarPointer->addAction( mNewVectorAction ); toolBarPointer->addAction( mEditAction ); toolBarPointer->addAction( mOpenToolsAction ); toolBarPointer->addAction( mRegionAction ); toolBarPointer->addAction( mEditRegionAction ); // Set icons to current theme setCurrentTheme( "" ); // Connect theme change signal connect( qGisInterface, SIGNAL( currentThemeChanged( QString ) ), this, SLOT( setCurrentTheme( QString ) ) ); // Connect display region connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); setEditAction(); connect( qGisInterface, SIGNAL( currentLayerChanged( QgsMapLayer * ) ), this, SLOT( setEditAction() ) ); // Init Region symbology mRegionPen.setColor( QColor( settings.value( "/GRASS/region/color", "#ff0000" ).toString() ) ); mRegionPen.setWidth( settings.value( "/GRASS/region/width", 0 ).toInt() ); mRegionBand->setColor( mRegionPen.color() ); mRegionBand->setWidth( mRegionPen.width() ); mapsetChanged(); }
void QgsGrassNewMapset::pageSelected( int index ) { QgsDebugMsg( QString( "title = %1" ).arg( page( index ) ? page( index )->title() : "(null)" ) ); switch ( index ) { case LOCATION: if ( mPreviousPage == DATABASE ) { setLocationPage(); } break; case CRS: // Projection selector if ( !mProjectionSelector ) { QGridLayout *projectionLayout = new QGridLayout( mProjectionFrame ); mProjectionSelector = new QgsProjectionSelector( mProjectionFrame, "Projection", 0 ); mProjectionSelector->setEnabled( false ); projectionLayout->addWidget( mProjectionSelector, 0 , 0 ); mProjectionSelector->show(); connect( mProjectionSelector, SIGNAL( sridSelected( QString ) ), this, SLOT( sridSelected( QString ) ) ); // Se current QGIS projection int srsid = QgsProject::instance()->readNumEntry( "SpatialRefSys", "/ProjectCRSID", 0 ); QgsCoordinateReferenceSystem srs( srsid, QgsCoordinateReferenceSystem::InternalCrsId ); QgsDebugMsg( QString( "current project srsid = %1" ).arg( srsid ) ); QgsDebugMsg( QString( "srs.isValid() = %1" ).arg( srs.isValid() ) ); if ( srs.isValid() ) { mProjectionSelector->setSelectedCrsId( srsid ); mProjRadioButton->setChecked( true ); projRadioSwitched(); } } if ( mPreviousPage == LOCATION ) { setProjectionPage(); } break; case REGION: if ( !mRegionsInited ) { loadRegions(); mRegionsInited = true; } if ( mPreviousPage == CRS ) { setRegionPage(); } break; case MAPSET: if ( mPreviousPage == LOCATION || mPreviousPage == REGION ) { setMapsets(); mapsetChanged(); } break; case FINISH: setFinishPage(); break; } mPreviousPage = index; }
/* * Initialize the GUI interface for the plugin */ void QgsGrassPlugin::initGui() { mToolBarPointer = 0; mTools = 0; mNewMapset = 0; mCanvas = qGisInterface->mapCanvas(); // Create region rubber band mRegionBand = new QgsRubberBand( mCanvas, QGis::Polygon ); mRegionBand->setZValue( 20 ); // Create the action for tool (the icons are set later by calling setCurrentTheme) mOpenMapsetAction = new QAction( QIcon(), tr( "Open Mapset" ), this ); mOpenMapsetAction->setObjectName( "mOpenMapsetAction" ); mNewMapsetAction = new QAction( QIcon(), tr( "New Mapset" ), this ); mNewMapsetAction->setObjectName( "mNewMapsetAction" ); mCloseMapsetAction = new QAction( QIcon(), tr( "Close Mapset" ), this ); mCloseMapsetAction->setObjectName( "mCloseMapsetAction" ); mOpenToolsAction = new QAction( QIcon(), tr( "Open GRASS Tools" ), this ); mOpenToolsAction->setObjectName( "mAddPolygonActionmOpenToolsAction" ); mOpenToolsAction->setWhatsThis( tr( "Open GRASS tools" ) ); mRegionAction = new QAction( QIcon(), tr( "Display Current Grass Region" ), this ); mRegionAction->setObjectName( "mRegionAction" ); mRegionAction->setWhatsThis( tr( "Displays the current GRASS region as a rectangle on the map canvas" ) ); mRegionAction->setCheckable( true ); mOptionsAction = new QAction( QIcon(), tr( "GRASS Options" ), this ); mOptionsAction->setObjectName( "mOptionsAction" ); // Connect the actions connect( mOpenMapsetAction, SIGNAL( triggered() ), this, SLOT( openMapset() ) ); connect( mNewMapsetAction, SIGNAL( triggered() ), this, SLOT( newMapset() ) ); connect( mCloseMapsetAction, SIGNAL( triggered() ), SLOT( closeMapset() ) ); connect( mOpenToolsAction, SIGNAL( triggered() ), this, SLOT( openTools() ) ); connect( mRegionAction, SIGNAL( toggled( bool ) ), this, SLOT( switchRegion( bool ) ) ); connect( mOptionsAction, SIGNAL( triggered() ), QgsGrass::instance(), SLOT( openOptions() ) ); // Add actions to a GRASS plugin menu QString menu = tr( "&GRASS" ); qGisInterface->addPluginToMenu( menu, mOpenMapsetAction ); qGisInterface->addPluginToMenu( menu, mNewMapsetAction ); qGisInterface->addPluginToMenu( menu, mCloseMapsetAction ); qGisInterface->addPluginToMenu( menu, mOpenToolsAction ); qGisInterface->addPluginToMenu( menu, mRegionAction ); qGisInterface->addPluginToMenu( menu, mOptionsAction ); // Add the toolbar to the main window mToolBarPointer = qGisInterface->addToolBar( tr( "GRASS" ) ); mToolBarPointer->setObjectName( "GRASS" ); // Add to the toolbar #if 0 mToolBarPointer->addAction( mOpenMapsetAction ); mToolBarPointer->addAction( mNewMapsetAction ); mToolBarPointer->addAction( mCloseMapsetAction ); mToolBarPointer->addSeparator(); #endif mToolBarPointer->addAction( mOpenToolsAction ); mToolBarPointer->addAction( mRegionAction ); // Editing mAddPointAction = new QAction( QgsApplication::getThemeIcon( "/mActionCapturePoint.png" ), tr( "Add Point" ), this ); mAddPointAction->setObjectName( "mAddPointAction" ); mAddPointAction->setCheckable( true ); mAddLineAction = new QAction( QgsApplication::getThemeIcon( "/mActionCaptureLine.png" ), tr( "Add Line" ), this ); mAddLineAction->setObjectName( "mAddLineAction" ); mAddLineAction->setCheckable( true ); mAddBoundaryAction = new QAction( getThemeIcon( "mActionCaptureBoundary.png" ), tr( "Add Boundary" ), this ); mAddBoundaryAction->setObjectName( "mAddBoundaryAction" ); mAddBoundaryAction->setCheckable( true ); mAddCentroidAction = new QAction( getThemeIcon( "mActionCaptureCentroid.png" ), tr( "Add Centroid" ), this ); mAddCentroidAction->setObjectName( "mAddCentroidAction" ); mAddCentroidAction->setCheckable( true ); mAddAreaAction = new QAction( QgsApplication::getThemeIcon( "/mActionCapturePolygon.png" ), tr( "Add Area" ), this ); mAddAreaAction->setObjectName( "mAddAreaAction" ); mAddAreaAction->setCheckable( true ); connect( mAddPointAction, SIGNAL( triggered() ), SLOT( addFeature() ) ); connect( mAddLineAction, SIGNAL( triggered() ), SLOT( addFeature() ) ); connect( mAddBoundaryAction, SIGNAL( triggered() ), SLOT( addFeature() ) ); connect( mAddCentroidAction, SIGNAL( triggered() ), SLOT( addFeature() ) ); connect( mAddAreaAction, SIGNAL( triggered() ), SLOT( addFeature() ) ); mAddFeatureAction = qGisInterface->actionAddFeature(); mAddFeatureAction->actionGroup()->addAction( mAddPointAction ); mAddFeatureAction->actionGroup()->addAction( mAddLineAction ); mAddFeatureAction->actionGroup()->addAction( mAddBoundaryAction ); mAddFeatureAction->actionGroup()->addAction( mAddCentroidAction ); mAddFeatureAction->actionGroup()->addAction( mAddAreaAction ); qGisInterface->digitizeToolBar()->insertAction( mAddFeatureAction, mAddPointAction ); qGisInterface->digitizeToolBar()->insertAction( mAddFeatureAction, mAddLineAction ); qGisInterface->digitizeToolBar()->insertAction( mAddFeatureAction, mAddBoundaryAction ); qGisInterface->digitizeToolBar()->insertAction( mAddFeatureAction, mAddCentroidAction ); qGisInterface->digitizeToolBar()->insertAction( mAddFeatureAction, mAddAreaAction ); resetEditActions(); mAddPoint = new QgsGrassAddFeature( qGisInterface->mapCanvas(), QgsMapToolAdvancedDigitizing::CapturePoint ); mAddPoint->setAction( mAddPointAction ); mAddLine = new QgsGrassAddFeature( qGisInterface->mapCanvas(), QgsMapToolAdvancedDigitizing::CaptureLine ); mAddLine->setAction( mAddLineAction ); mAddBoundary = new QgsGrassAddFeature( qGisInterface->mapCanvas(), QgsMapToolAdvancedDigitizing::CaptureLine ); mAddBoundary->setAction( mAddBoundaryAction ); mAddCentroid = new QgsGrassAddFeature( qGisInterface->mapCanvas(), QgsMapToolAdvancedDigitizing::CapturePoint ); mAddCentroid->setAction( mAddCentroidAction ); mAddArea = new QgsGrassAddFeature( qGisInterface->mapCanvas(), QgsMapToolAdvancedDigitizing::CapturePolygon ); mAddArea->setAction( mAddAreaAction ); // Connect project QWidget* qgis = qGisInterface->mainWindow(); connect( qgis, SIGNAL( projectRead() ), this, SLOT( projectRead() ) ); connect( qgis, SIGNAL( newProject() ), this, SLOT( newProject() ) ); // Set icons to current theme setCurrentTheme( "" ); // Connect theme change signal connect( qGisInterface, SIGNAL( currentThemeChanged( QString ) ), this, SLOT( setCurrentTheme( QString ) ) ); connect( mCanvas, SIGNAL( destinationCrsChanged() ), this, SLOT( setTransform() ) ); // Connect display region connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); connect( QgsGrass::instance(), SIGNAL( gisbaseChanged() ), SLOT( onGisbaseChanged() ) ); connect( QgsGrass::instance(), SIGNAL( mapsetChanged() ), SLOT( mapsetChanged() ) ); connect( QgsGrass::instance(), SIGNAL( regionChanged() ), SLOT( displayRegion() ) ); connect( QgsGrass::instance(), SIGNAL( regionPenChanged() ), SLOT( displayRegion() ) ); connect( QgsGrass::instance(), SIGNAL( newLayer( QString, QString ) ), SLOT( onNewLayer( QString, QString ) ) ); // Connect start/stop editing connect( QgsMapLayerRegistry::instance(), SIGNAL( layerWasAdded( QgsMapLayer* ) ), this, SLOT( onLayerWasAdded( QgsMapLayer* ) ) ); connect( qGisInterface->layerTreeView(), SIGNAL( currentLayerChanged( QgsMapLayer* ) ), SLOT( onCurrentLayerChanged( QgsMapLayer* ) ) ); // open tools when plugin is loaded so that main app restores tools dock widget state mTools = new QgsGrassTools( qGisInterface, qGisInterface->mainWindow() ); qGisInterface->addDockWidget( Qt::RightDockWidgetArea, mTools ); onGisbaseChanged(); mapsetChanged(); }
/* * Initialize the GUI interface for the plugin */ void QgsGrassPlugin::initGui() { if ( !QgsGrass::init() ) { qGisInterface->messageBar()->pushMessage( tr( "GRASS error" ), QgsGrass::errorMessage(), QgsMessageBar::WARNING ); // TODO: add a widget with warning return; } mToolBarPointer = 0; mTools = 0; mNewMapset = 0; mCanvas = qGisInterface->mapCanvas(); QWidget* qgis = qGisInterface->mainWindow(); connect( mCanvas, SIGNAL( destinationCrsChanged() ), this, SLOT( setTransform() ) ); // Connect project connect( qgis, SIGNAL( projectRead() ), this, SLOT( projectRead() ) ); connect( qgis, SIGNAL( newProject() ), this, SLOT( newProject() ) ); // Create region rubber band mRegionBand = new QgsRubberBand( mCanvas, QGis::Polygon ); mRegionBand->setZValue( 20 ); // Create the action for tool (the icons are set later by calling setCurrentTheme) mOpenMapsetAction = new QAction( QIcon(), tr( "Open Mapset" ), this ); mOpenMapsetAction->setObjectName( "mOpenMapsetAction" ); mNewMapsetAction = new QAction( QIcon(), tr( "New Mapset" ), this ); mNewMapsetAction->setObjectName( "mNewMapsetAction" ); mCloseMapsetAction = new QAction( QIcon(), tr( "Close Mapset" ), this ); mCloseMapsetAction->setObjectName( "mCloseMapsetAction" ); mOpenToolsAction = new QAction( QIcon(), tr( "Open GRASS Tools" ), this ); mOpenToolsAction->setObjectName( "mOpenToolsAction" ); mOpenToolsAction->setWhatsThis( tr( "Open GRASS tools" ) ); mRegionAction = new QAction( QIcon(), tr( "Display Current Grass Region" ), this ); mRegionAction->setObjectName( "mRegionAction" ); mRegionAction->setWhatsThis( tr( "Displays the current GRASS region as a rectangle on the map canvas" ) ); mRegionAction->setCheckable( true ); mEditAction = new QAction( QIcon(), tr( "Edit Grass Vector layer" ), this ); mEditAction->setObjectName( "mEditAction" ); mEditAction->setWhatsThis( tr( "Edit the currently selected GRASS vector layer." ) ); mNewVectorAction = new QAction( QIcon(), tr( "Create New Grass Vector" ), this ); mNewVectorAction->setObjectName( "mNewVectorAction" ); // Connect the action connect( mOpenToolsAction, SIGNAL( triggered() ), this, SLOT( openTools() ) ); connect( mEditAction, SIGNAL( triggered() ), this, SLOT( edit() ) ); connect( mNewVectorAction, SIGNAL( triggered() ), this, SLOT( newVector() ) ); connect( mRegionAction, SIGNAL( toggled( bool ) ), this, SLOT( switchRegion( bool ) ) ); connect( mOpenMapsetAction, SIGNAL( triggered() ), this, SLOT( openMapset() ) ); connect( mNewMapsetAction, SIGNAL( triggered() ), this, SLOT( newMapset() ) ); connect( mCloseMapsetAction, SIGNAL( triggered() ), SLOT( closeMapset() ) ); // Add actions to a GRASS plugin menu qGisInterface->addPluginToMenu( tr( "&GRASS" ), mOpenMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mNewMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mCloseMapsetAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mNewVectorAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mEditAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mOpenToolsAction ); qGisInterface->addPluginToMenu( tr( "&GRASS" ), mRegionAction ); // Add the toolbar to the main window mToolBarPointer = qGisInterface->addToolBar( tr( "GRASS" ) ); mToolBarPointer->setObjectName( "GRASS" ); // Add to the toolbar mToolBarPointer->addAction( mOpenMapsetAction ); mToolBarPointer->addAction( mNewMapsetAction ); mToolBarPointer->addAction( mCloseMapsetAction ); mToolBarPointer->addSeparator(); mToolBarPointer->addAction( mNewVectorAction ); mToolBarPointer->addAction( mEditAction ); mToolBarPointer->addAction( mOpenToolsAction ); mToolBarPointer->addAction( mRegionAction ); // Set icons to current theme setCurrentTheme( "" ); // Connect theme change signal connect( qGisInterface, SIGNAL( currentThemeChanged( QString ) ), this, SLOT( setCurrentTheme( QString ) ) ); // Connect display region connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); setEditAction(); connect( qGisInterface, SIGNAL( currentLayerChanged( QgsMapLayer * ) ), this, SLOT( setEditAction() ) ); connect( QgsGrass::instance(), SIGNAL( mapsetChanged() ), SLOT( mapsetChanged() ) ); connect( QgsGrass::instance(), SIGNAL( regionChanged() ), SLOT( displayRegion() ) ); connect( QgsGrass::instance(), SIGNAL( regionPenChanged() ), SLOT( displayRegion() ) ); mapsetChanged(); // open tools when plugin is loaded so that main app restores tools dock widget state mTools = new QgsGrassTools( qGisInterface, qGisInterface->mainWindow() ); qGisInterface->addDockWidget( Qt::RightDockWidgetArea, mTools ); }