⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qgsgrassbrowser.cpp

📁 一个非常好的GIS开源新版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      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 + -