📄 qgsgrassbrowser.cpp
字号:
tr("New name"), suggest, source, &ok ); if ( !ok ) return; QString module = "g.copy";#ifdef WIN32 module.append(".exe");#endif QProcess process(this); QStringList args(typeName + "=" + map + "@" + mapset + "," + newName ); process.start(module, args ); if ( !process.waitForFinished() || process.exitCode() != 0 ) { QString output ( process.readAllStandardOutput () ); QString error ( process.readAllStandardError () ); QMessageBox::warning( 0, tr("Warning"), tr("Cannot copy map ") + map + "@" + mapset + tr("<br>command: ") + module + " " + args.join(" ") + "<br>" + formatMessage(output) + "<br>" + formatMessage(error) ); } else { refresh(); } }}void QgsGrassBrowser::renameMap(){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::renameMap()" << std::endl;#endif QModelIndexList indexes = mTree->selectionModel()->selectedIndexes(); QList<QModelIndex>::const_iterator it = indexes.begin(); for (; it != indexes.end(); ++it) { int type = mModel->itemType(*it); QString mapset = mModel->itemMapset(*it); QString map = mModel->itemMap(*it); if ( mapset != QgsGrass::getDefaultMapset() ) continue; // should not happen QString typeName; QString element; if ( type == QgsGrassModel::Raster ) { element = "cell"; typeName = "rast"; } else if ( type == QgsGrassModel::Vector ) { element = "vector"; typeName = "vect"; } else if ( type == QgsGrassModel::Region ) { element = "windows"; typeName = "region"; } QgsGrassElementDialog ed; bool ok; QString newName = ed.getItem ( element, tr("New name"), tr("New name"), "", map, &ok ); if ( !ok ) return; QString module = "g.rename";#ifdef WIN32 module.append(".exe");#endif QProcess process(this); QStringList args(typeName + "=" + map + "," + newName ); process.start(module, QStringList( typeName + "=" + map + "," + newName ) ); if ( !process.waitForFinished() || process.exitCode() != 0 ) { QString output ( process.readAllStandardOutput () ); QString error ( process.readAllStandardError () ); QMessageBox::warning( 0, tr("Warning"), tr("Cannot rename map ") + map + tr("<br>command: ") + module + " " + args.join(" ") + "<br>" + formatMessage(output) + "<br>" + formatMessage(error) ); } else { refresh(); } }}void QgsGrassBrowser::deleteMap(){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::deleteMap()" << std::endl;#endif QModelIndexList indexes = mTree->selectionModel()->selectedIndexes(); QList<QModelIndex>::const_iterator it = indexes.begin(); for (; it != indexes.end(); ++it) { int type = mModel->itemType(*it); QString mapset = mModel->itemMapset(*it); QString map = mModel->itemMap(*it); QString typeName; if ( type == QgsGrassModel::Raster ) typeName = "rast"; else if ( type == QgsGrassModel::Vector ) typeName = "vect"; else if ( type == QgsGrassModel::Region ) typeName = "region"; if ( mapset != QgsGrass::getDefaultMapset() ) { continue; // should not happen } QMessageBox::StandardButton ret = QMessageBox::question ( 0, tr("Warning"), tr("Delete map <b>") + map + "</b>", QMessageBox::Ok | QMessageBox::Cancel ); if ( ret == QMessageBox::Cancel ) continue; QString module = "g.remove";#ifdef WIN32 module.append(".exe");#endif QProcess process(this); QStringList args(typeName + "=" + map ); process.start(module, QStringList( typeName + "=" + map ) ); if ( !process.waitForFinished() || process.exitCode() != 0 ) { QString output ( process.readAllStandardOutput () ); QString error ( process.readAllStandardError () ); QMessageBox::warning( 0, tr("Warning"), tr("Cannot delete map ") + map + tr("<br>command: ") + module + " " + args.join(" ") + "<br>" + formatMessage(output) + "<br>" + formatMessage(error) ); } else { refresh(); } }}void QgsGrassBrowser::setRegion(){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::setRegion()" << std::endl;#endif struct Cell_head window; QModelIndexList indexes = mTree->selectionModel()->selectedIndexes(); // TODO multiple selection - extent region to all maps QList<QModelIndex>::const_iterator it = indexes.begin(); for (; it != indexes.end(); ++it) { if ( !getItemRegion (*it, &window) ) return; } writeRegion ( &window );}void QgsGrassBrowser::writeRegion(struct Cell_head *window ){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::writeRegion()" << std::endl;#endif QgsGrass::setMapset( QgsGrass::getDefaultGisdbase(), QgsGrass::getDefaultLocation(), QgsGrass::getDefaultMapset() ); if ( G_put_window ( window ) == -1 ) { QMessageBox::warning( 0, tr("Warning"), tr("Cannot write new region") ); return; } emit regionChanged();}bool QgsGrassBrowser::getItemRegion( QModelIndex index, struct Cell_head *window ){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::setRegion()" << std::endl;#endif int type = mModel->itemType(index); QString mapset = mModel->itemMapset(index); QString map = mModel->itemMap(index); int mapType = QgsGrass::Raster; //default in case no case matches switch (type) { case QgsGrassModel::Raster : mapType = QgsGrass::Raster; break; case QgsGrassModel::Vector : mapType = QgsGrass::Vector; break; case QgsGrassModel::Region : mapType = QgsGrass::Region; break; default: break; } return QgsGrass::mapRegion ( mapType, QgsGrass::getDefaultGisdbase(), QgsGrass::getDefaultLocation(), mapset, map, window ); }void QgsGrassBrowser::selectionChanged(const QItemSelection & selected, const QItemSelection & deselected){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::selectionChanged()" << std::endl;#endif mActionAddMap->setEnabled(false); mActionCopyMap->setEnabled(false); mActionRenameMap->setEnabled(false); mActionDeleteMap->setEnabled(false); mActionSetRegion->setEnabled(false); QModelIndexList indexes = mTree->selectionModel()->selectedIndexes(); mTextBrowser->clear(); QList<QModelIndex>::const_iterator it = indexes.begin(); for (; it != indexes.end(); ++it) { mTextBrowser->append ( mModel->itemInfo(*it) ); mTextBrowser->verticalScrollBar()->setValue(0); int type = mModel->itemType(*it); if ( type == QgsGrassModel::Raster || type == QgsGrassModel::Vector || type == QgsGrassModel::VectorLayer ) { mActionAddMap->setEnabled(true); } if ( type == QgsGrassModel::Raster || type == QgsGrassModel::Vector || type == QgsGrassModel::Region ) { mActionSetRegion->setEnabled(true); mActionCopyMap->setEnabled(true); QString mapset = mModel->itemMapset(*it); if ( mapset == QgsGrass::getDefaultMapset() ) { mActionDeleteMap->setEnabled(true); mActionRenameMap->setEnabled(true); } } }}void QgsGrassBrowser::currentChanged(const QModelIndex & current, const QModelIndex & previous){#ifdef QGISDEBUG std::cerr << "QgsGrassBrowser::currentChanged()" << std::endl;#endif}void QgsGrassBrowser::setLocation( const QString &gisbase, const QString &location ){ mModel->setLocation(gisbase, location);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -