27 #include "../../../../common/Translator.h" 
   28 #include "../../../../dataaccess/datasource/DataSource.h" 
   29 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 
   30 #include "../../../../dataaccess/datasource/DataSourceManager.h" 
   31 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 
   32 #include "../../../af/Utils.h" 
   33 #include "../../../widgets/Exception.h" 
   34 #include "../../../widgets/Utils.h" 
   36 #include "ui_GDALConnectorDialogForm.h" 
   39 #include <boost/uuid/random_generator.hpp> 
   40 #include <boost/uuid/uuid_io.hpp> 
   41 #include <boost/filesystem.hpp> 
   42 #include <boost/lexical_cast.hpp> 
   45 #include <QtCore/QFileInfo> 
   46 #include <QtGui/QFileDialog> 
   47 #include <QtGui/QMessageBox> 
   51     m_ui(new Ui::GDALConnectorDialogForm)
 
   61   m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
 
   62   m_ui->m_helpPushButton->setPageReference(
"plugins/gdal/gdal.html");
 
   83   if(m_datasource.get() != 0)
 
   85     setConnectionInfo(m_datasource->getConnInfo());
 
   87     m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
 
   89     m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
 
   99       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Sorry! No data access driver loaded for GDAL data sources!"));
 
  102     std::map<std::string, std::string> dsInfo;
 
  104     getConnectionInfo(dsInfo);
 
  109     ds->setConnectionInfo(dsInfo);
 
  111     m_driver.reset(ds.release());
 
  113     if(m_driver.get() == 0)
 
  114       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Could not open dataset via GDAL due to an unknown error!"));
 
  116     QString title = m_ui->m_datasourceTitleLineEdit->text().trimmed();
 
  119       title = m_ui->m_datasetLineEdit->text();
 
  121     if(m_datasource.get() == 0)
 
  126       m_datasource->setConnInfo(dsInfo);
 
  128       boost::uuids::basic_random_generator<boost::mt19937> gen;
 
  129       boost::uuids::uuid u = gen();
 
  130       std::string dsId = boost::uuids::to_string(u);
 
  132       m_datasource->setId(dsId);
 
  133       m_driver->setId(dsId);
 
  134       m_datasource->setTitle(title.toUtf8().data());
 
  135       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
 
  136       m_datasource->setAccessDriver(
"GDAL");
 
  137       m_datasource->setType(
"GDAL");
 
  141       m_driver->setId(m_datasource->getId());
 
  142       m_datasource->setConnInfo(dsInfo);
 
  143       m_datasource->setTitle(title.toUtf8().data());
 
  144       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
 
  147   catch(
const std::exception& e)
 
  149     QMessageBox::warning(
this,
 
  150                          tr(
"TerraLib Qt Components"),
 
  156     QMessageBox::warning(
this,
 
  157                          tr(
"TerraLib Qt Components"),
 
  158                          tr(
"Unknown error while opening dataset via GDAL!"));
 
  171       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Sorry! No data access driver loaded for GDAL data sources!"));
 
  174     std::map<std::string, std::string> dsInfo;
 
  176     getConnectionInfo(dsInfo);
 
  181     ds->setConnectionInfo(dsInfo);
 
  185       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Could not open dataset via GDAL!"));
 
  187     QMessageBox::warning(
this,
 
  188                        tr(
"TerraLib Qt Components"),
 
  189                        tr(
"Data source is ok!"));
 
  191   catch(
const std::exception& e)
 
  193     QMessageBox::warning(
this,
 
  194                          tr(
"TerraLib Qt Components"),
 
  199     QMessageBox::warning(
this,
 
  200                          tr(
"TerraLib Qt Components"),
 
  201                          tr(
"Unknown error while testing GDAL data source!"));
 
  207   if(m_ui->m_fileRadioButton->isChecked())
 
  210       tr(
"Image File (*.png *.jpg *.jpeg *.tif *.tiff *.geotif *.geotiff);; Web Map Service - WMS (*.xml *.wms);; Web Coverage Service - WCS (*.xml *.wcs);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
 
  212     if(fileName.isEmpty())
 
  215     QFileInfo info(fileName);
 
  219     m_ui->m_datasetLineEdit->setText(fileName);
 
  221   else if(m_ui->m_dirRadioButton->isChecked())
 
  225     if(dirName.isEmpty())
 
  230     m_ui->m_datasetLineEdit->setText(dirName);
 
  234     QMessageBox::warning(
this,
 
  235                          tr(
"TerraLib Qt Components"),
 
  236                          tr(
"Sorry, network files are not implemented yet!\nWe will provide it soon!"));
 
  244   QString qstr = m_ui->m_datasetLineEdit->text().trimmed();
 
  247     throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Please select a dataset first!"));
 
  249   if(boost::filesystem::is_directory(qstr.toUtf8().data()))
 
  250     connInfo[
"URI"] = qstr.toUtf8().data();
 
  252     connInfo[
"SOURCE"] = qstr.toUtf8().data();
 
  257   std::map<std::string, std::string>::const_iterator it = connInfo.find(
"URI");
 
  258   std::map<std::string, std::string>::const_iterator itend = connInfo.end();
 
  262     m_ui->m_datasetLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  263     m_ui->m_dirRadioButton->setChecked(
true);
 
  267   it = connInfo.find(
"SOURCE");
 
  271     m_ui->m_datasetLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  272     m_ui->m_fileRadioButton->setChecked(
true);
 
std::auto_ptr< Ui::GDALConnectorDialogForm > m_ui
 
TEQTWIDGETSEXPORT QString GetFilePathFromSettings(const QString &typeFile)
Returns the value of the last saved file path for the typeFile required. 
 
GDALConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
 
A class that represents a data source component. 
 
void searchDatasetToolButtonPressed()
 
const te::da::DataSourceInfoPtr & getDataSource() const 
 
TEQTWIDGETSEXPORT void AddFilePathToSettings(const QString &path, const QString &typeFile)
Save last used path in QSettings. 
 
static std::auto_ptr< DataSource > make(const std::string &dsType)
 
static bool find(const std::string &dsType)
 
void set(const te::da::DataSourceInfoPtr &ds)
 
boost::shared_ptr< DataSource > DataSourcePtr
 
#define TR_QT_WIDGETS(message)
It marks a string in order to get translated. This is a special mark used in the TerraLib Qt Widgets ...
 
void openPushButtonPressed()
 
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
 
const te::da::DataSourcePtr & getDriver() const 
 
A dialog window for showing the GDAL connector widget. 
 
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const 
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
 
void testPushButtonPressed()