27 #include "../../common/Logger.h" 
   28 #include "../../common/progress/ProgressManager.h" 
   29 #include "../../common/progress/TaskProgress.h" 
   30 #include "../../common/SystemApplicationSettings.h" 
   31 #include "../../common/STLUtils.h" 
   32 #include "../../common/Translator.h" 
   33 #include "../../common/UserApplicationSettings.h" 
   34 #include "../../dataaccess/datasource/DataSourceInfoManager.h" 
   35 #include "../../dataaccess/dataset/ObjectIdSet.h" 
   36 #include "../../maptools/DataSetLayer.h" 
   37 #include "../../maptools/Utils.h" 
   38 #include "../../srs/Config.h" 
   39 #include "../../srs/SpatialReferenceSystemManager.h" 
   40 #include "../widgets/canvas/EyeBirdMapDisplayWidget.h" 
   41 #include "../widgets/canvas/MultiThreadMapDisplay.h" 
   42 #include "../widgets/canvas/ZoomInMapDisplayWidget.h" 
   43 #include "../widgets/charts/ChartLayerDialog.h" 
   44 #include "../widgets/charts/HistogramDialog.h" 
   45 #include "../widgets/charts/ScatterDialog.h" 
   46 #include "../widgets/datasource/core/DataSourceType.h" 
   47 #include "../widgets/datasource/core/DataSourceTypeManager.h" 
   48 #include "../widgets/datasource/connector/AbstractDataSourceConnector.h" 
   49 #include "../widgets/datasource/selector/DataSourceExplorerDialog.h" 
   50 #include "../widgets/datasource/selector/DataSourceSelectorDialog.h" 
   51 #include "../widgets/exchanger/DataExchangerWizard.h" 
   52 #include "../widgets/exchanger/DirectExchangerDialog.h" 
   53 #include "../widgets/externalTable/DataPropertiesDialog.h" 
   54 #include "../widgets/externalTable/TableLinkDialog.h" 
   55 #include "../widgets/help/HelpManager.h" 
   56 #include "../widgets/layer/explorer/ColorMapItem.h" 
   57 #include "../widgets/layer/explorer/ChartItem.h" 
   58 #include "../widgets/layer/explorer/GroupingItem.h" 
   59 #include "../widgets/layer/explorer/LayerExplorer.h" 
   60 #include "../widgets/layer/explorer/LayerTreeView.h" 
   61 #include "../widgets/layer/explorer/AbstractTreeItem.h" 
   62 #include "../widgets/layer/explorer/FolderLayerItem.h" 
   63 #include "../widgets/layer/info/LayerPropertiesInfoWidget.h" 
   64 #include "../widgets/layer/selector/AbstractLayerSelector.h" 
   65 #include "../widgets/layer/utils/CompositionModeMenuWidget.h" 
   66 #include "../widgets/plugin/manager/PluginManagerDialog.h" 
   67 #include "../widgets/progress/ProgressViewerBar.h" 
   68 #include "../widgets/progress/ProgressViewerDialog.h" 
   69 #include "../widgets/progress/ProgressViewerWidget.h" 
   70 #include "../widgets/query/QueryDataSourceDialog.h" 
   71 #include "../widgets/query/QueryDialog.h" 
   72 #include "../widgets/query/QueryLayerBuilderWizard.h" 
   73 #include "../widgets/raster/MultiResolutionDialog.h" 
   74 #include "../widgets/se/GroupingDialog.h" 
   75 #include "../widgets/se/StyleDockWidget.h" 
   76 #include "../widgets/tools/Info.h" 
   77 #include "../widgets/tools/Measure.h" 
   78 #include "../widgets/tools/Pan.h" 
   79 #include "../widgets/tools/Selection.h" 
   80 #include "../widgets/tools/ZoomArea.h" 
   81 #include "../widgets/tools/ZoomClick.h" 
   82 #include "../widgets/srs/SRSManagerDialog.h" 
   83 #include "../widgets/vector/FixGeometryDialog.h" 
  106 #include <QActionGroup> 
  107 #include <QApplication> 
  108 #include <QCloseEvent> 
  109 #include <QDockWidget> 
  110 #include <QFileDialog> 
  111 #include <QInputDialog> 
  115 #include <QStatusBar> 
  117 #include <QToolButton> 
  125 #include <boost/filesystem.hpp> 
  126 #include <boost/format.hpp> 
  127 #include <boost/uuid/random_generator.hpp> 
  128 #include <boost/uuid/uuid_io.hpp> 
  133   std::vector<te::qt::af::DataSetTableDockWidget*>::const_iterator it;
 
  135   for(it=docs.begin(); it!=docs.end(); ++it)
 
  136     if((*it)->getLayer() == layer)
 
  144   std::vector<te::qt::af::DataSetTableDockWidget*>::iterator it;
 
  146   for(it=tables.begin(); it!=tables.end(); ++it)
 
  153   : QMainWindow(parent, 0),
 
  154     m_mapCursorSize(QSize(20, 20)),
 
  162     m_progressDockWidget(0),
 
  163     m_zoomInDisplaysDockWidget(0),
 
  164     m_eyeBirdDisplaysDockWidget(0),
 
  165     m_restartTerraLib(false)
 
  170   if (objectName().isEmpty())
 
  171     setObjectName(
"BaseApplicationForm");
 
  174   setMinimumSize(QSize(640, 480));
 
  215     m_iController->removeInteface(m_queryDlg);
 
  217   delete m_iController;
 
  220   delete m_styleExplorer;
 
  222   delete m_compModeMenu;
 
  224   delete m_progressDockWidget;
 
  225   delete m_zoomInDisplaysDockWidget;
 
  226   delete m_eyeBirdDisplaysDockWidget;
 
  228   while(!m_tableDocks.empty())
 
  229     delete *m_tableDocks.begin();
 
  238   throw Exception(
"Not implemented yet!");
 
  249   catch(
const std::exception& e)
 
  251     QString msgErr(tr(
"Could not initialize the application: %1"));
 
  253     msgErr = msgErr.arg(e.what());
 
  272   catch(
const std::exception& e)
 
  274     QString msgErr(tr(
"Error loading plugins: %1"));
 
  276     msgErr = msgErr.arg(e.what());
 
  290       openProject(recentProject);
 
  294       QString msgErr(tr(
"Error loading the project: %1!"));
 
  296       msgErr = msgErr.arg(ex.
what());
 
  305   onSelectionToggled(
true);
 
  306   m_mapSelection->setChecked(
true);
 
  308   m_viewDataTable->setChecked(
false);
 
  309   m_viewDataTable->setEnabled(
false);
 
  323   return m_iController;
 
  328   m_restartTerraLib = !status;
 
  341       m_project->setProjectAsChanged(
true);
 
  348       QMainWindow::addToolBar(Qt::TopToolBarArea, e->
m_toolbar);
 
  355       QString text = 
"(" + QString::number(e->
m_x, 
'f', 5) + 
" , " + QString::number(e->
m_y, 
'f', 5) + 
")";
 
  356       m_coordinateLineEdit->setText(text);
 
  364       std::pair<int, std::string> srid = e->
m_srid;
 
  368         QString sridText(srid.second.c_str());
 
  369         sridText += 
":" + QString::number(srid.first);
 
  370         m_mapSRIDLineEdit->setText(sridText);
 
  374         m_mapSRIDLineEdit->setText(
"Unknown SRS");
 
  375         m_coordinateLineEdit->setText(
"Coordinates");
 
  386       m_selected->setText(tr(
"Selected rows: ")+QString::number(lEvt->
m_layer->getSelected()->size()));
 
  399     QApplication::setOverrideCursor(Qt::WaitCursor);
 
  404     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  406     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  407       parentLayer = selectedLayerItems.front()->getLayer();
 
  414     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
  415       dselector->setDataSourceToUse(dsTypeSett);
 
  417     QApplication::restoreOverrideCursor();
 
  419     int retval = dselector->exec();
 
  421     QApplication::setOverrideCursor(Qt::WaitCursor);
 
  423     if(retval == QDialog::Rejected)
 
  425       QApplication::restoreOverrideCursor();
 
  429     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
 
  431     if(selectedDatasources.empty())
 
  433       QApplication::restoreOverrideCursor();
 
  439     const std::string& dsTypeId = selectedDatasources.front()->getType();
 
  445     if(lselectorw.get() == 0)
 
  447       QApplication::restoreOverrideCursor();
 
  448       throw Exception((boost::format(
TE_TR(
"No layer selector widget found for this type of data source: %1%!")) % dsTypeId).str());
 
  455       QApplication::restoreOverrideCursor();
 
  456       throw Exception(
TE_TR(
"Wrong type of object for layer selection!"));
 
  459     lselector->
set(selectedDatasources);
 
  461     QApplication::restoreOverrideCursor();
 
  463     std::list<te::map::AbstractLayerPtr> layers = lselector->
getLayers();
 
  465     QApplication::setOverrideCursor(Qt::WaitCursor);
 
  471       QApplication::restoreOverrideCursor();
 
  472       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  475     std::list<te::map::AbstractLayerPtr>::const_iterator it = layers.begin();
 
  476     std::list<te::map::AbstractLayerPtr>::const_iterator itend = layers.end();
 
  480       if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  493   catch(
const std::exception& e)
 
  495     QApplication::restoreOverrideCursor();
 
  500     QApplication::restoreOverrideCursor();
 
  501     QMessageBox::warning(
this,
 
  503                          tr(
"Unknown error while trying to add a layer from a dataset!"));
 
  505   QApplication::restoreOverrideCursor();
 
  513       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  518     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  520     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  521       parentLayer = selectedLayerItems.front()->getLayer();
 
  527     qlb->setLayerList(layers);
 
  529     int retval = qlb->exec();
 
  531     if(retval == QDialog::Rejected)
 
  536     if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  545   catch(
const std::exception& e)
 
  551     QMessageBox::warning(
this,
 
  553                          tr(
"Unknown error while trying to add a layer from a queried dataset!"));
 
  562       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  567     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  569     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  570       parentLayer = selectedLayerItems.front()->getLayer();
 
  573     int res = dlg.exec();
 
  574     if (res == QDialog::Accepted)
 
  576       if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  586   catch(
const std::exception& e)
 
  592     QMessageBox::warning(
this,
 
  594                          tr(
"Unknown error while trying to add a layer from a queried dataset!"));
 
  604     doc->setWindowTitle(
"Histogram");
 
  605     doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
 
  609     addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
  612   catch(
const std::exception& e)
 
  620  std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  622   if(selectedLayerItems.empty())
 
  624     QString msg = tr(
"Select at least one layer to be removed!");
 
  625     QMessageBox::warning(
this, tr(
"Remove Layer"), msg);
 
  631   QString questionTitle;
 
  633   if(selectedLayerItems.size() == 1)
 
  635     msg = tr(
"Do you really want to remove the selected layer?");
 
  636     questionTitle = tr(
"Remove Layer");
 
  640     msg = tr(
"Do you really want to remove the selected layers?");
 
  641     questionTitle = tr(
"Remove Layers");
 
  644   int reply = QMessageBox::question(
this, questionTitle, msg, QMessageBox::No, QMessageBox::Yes);
 
  646   if(reply == QMessageBox::No)
 
  649   std::list<te::qt::widgets::AbstractTreeItem*>::const_iterator it;
 
  650   for(it = selectedLayerItems.begin();  it != selectedLayerItems.end(); ++it)
 
  661     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  668     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
  669       dselector->setDataSourceToUse(dsTypeSett);
 
  671     int retval = dselector->exec();
 
  673     if(retval == QDialog::Rejected)
 
  676     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
 
  678     if(selectedDatasources.empty())
 
  683     const std::string& dsId = selectedDatasources.front()->getId();
 
  695   catch(
const std::exception& e)
 
  701     QMessageBox::warning(
this,
 
  703                          tr(
"Unknown error while trying to change a layer data source!"));
 
  711     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  713     if(selectedLayerItems.empty())
 
  723     std::list<te::da::DataSourceInfoPtr> selecteds;
 
  727     selecteds.push_back(ds);
 
  729     const std::string& dsTypeId = selecteds.front()->getType();
 
  735     if(connectorw.get() == 0)
 
  737       throw Exception((boost::format(
TE_TR(
"No layer selector widget found for this type of data source: %1%!")) % dsTypeId).str());
 
  744       throw Exception(
TE_TR(
"Wrong type of object for layer selection!"));
 
  747     connector->
update(selecteds);
 
  749   catch(
const std::exception& e)
 
  755     QMessageBox::warning(
this,
 
  757                          tr(
"Unknown error while trying to update a layer data source!"));
 
  763   std::list<te::qt::widgets::AbstractTreeItem*> selectedItems = m_explorer->getExplorer()->getSelectedItems();
 
  765   std::list<te::qt::widgets::AbstractTreeItem*>::const_iterator it;
 
  766   for(it = selectedItems.begin();  it != selectedItems.end(); ++it)
 
  775  std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  777   if(selectedLayerItems.empty() ||
 
  778     (selectedLayerItems.size() == 1 &&  !selectedLayerItems.front()->getLayer()) ||
 
  779     selectedLayerItems.size() > 1)
 
  781     QString msg = tr(
"Select only one layer to be renamed!");
 
  782     QMessageBox::warning(
this, tr(
"Rename Layer"), msg);
 
  793                                        layer->getTitle().c_str(), &ok);
 
  804   layer->setTitle(text.toStdString());
 
  817   catch(
const std::exception& e)
 
  825   QString projFile = proj->data().toString();
 
  827   openProject(projFile);
 
  850     QString msg = tr(
"Fail to open project.");
 
  859   std::string fName = m_project->getFileName();
 
  865     if(!fileName.isEmpty())
 
  867       if(m_project->getTitle() == 
"New Project")
 
  868         m_project->setTitle(boost::filesystem::basename(fileName.toStdString()));
 
  870       QFileInfo info(fileName);
 
  874       if(info.suffix() != appProjectExtension)
 
  877         s.append(appProjectExtension);
 
  881       fName = fileName.toStdString();
 
  882       m_project->setFileName(fName);
 
  895   m_project->setProjectAsChanged(
false);
 
  915   if(fileName.isEmpty())
 
  918   std::string fName = fileName.toStdString();
 
  920   m_project->setFileName(fName);
 
  922   if(!boost::filesystem::exists(fName) && m_project->getTitle() == 
"New Project")
 
  924     m_project->setTitle(boost::filesystem::basename(fName));
 
  935   m_project->setProjectAsChanged(
false);
 
  945   QMessageBox msgBox(
this);
 
  947   msgBox.setText(tr(
"The system will be restarted."));
 
  948   msgBox.setInformativeText(tr(
"Do you want to continue?"));
 
  949   msgBox.setWindowTitle(tr(
"Restart system"));
 
  951   msgBox.addButton(QMessageBox::No);
 
  952   msgBox.addButton(QMessageBox::Yes);
 
  954   msgBox.setDefaultButton(QMessageBox::Yes);
 
  956   if(msgBox.exec() == QMessageBox::Yes)
 
  967   catch(
const std::exception& e)
 
  980   catch(
const std::exception& e)
 
  997     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
 1002   catch(
const std::exception& e)
 
 1014     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1016     if(selectedLayerItems.empty())
 
 1019                            tr(
"Select a single layer in the layer explorer!"));
 
 1026     std::list<te::map::AbstractLayerPtr> layers;
 
 1027     layers.push_back(selectedLayer);
 
 1033   catch(
const std::exception& e)
 
 1053   catch(
const std::exception& e)
 
 1070   catch(
const std::exception& e)
 
 1087   catch (
const std::exception& e)
 
 1104   if(editor.exec() == QDialog::Accepted)
 
 1116   std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
 1118   if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
 1119     parentLayer = selectedLayerItems.front()->getLayer();
 
 1125                                       tr(
"Enter folder layer name"), &ok);
 
 1136   static boost::uuids::basic_random_generator<boost::mt19937> gen;
 
 1137   boost::uuids::uuid u = gen();
 
 1138   std::string 
id = boost::uuids::to_string(u);
 
 1141   folderLayer->setTitle(text.toStdString());
 
 1142   folderLayer->setId(
id);
 
 1153   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
 
 1162   QDockWidget* doc = 
new QDockWidget(
this, Qt::Dialog);
 
 1166   doc->setWidget(info);
 
 1167   doc->setWindowTitle(info->windowTitle());
 
 1168   doc->setAttribute(Qt::WA_DeleteOnClose, 
true);
 
 1175   std::list<te::map::AbstractLayerPtr> layers =  m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1183   std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
 
 1185   while(it != layers.end())
 
 1189     if(!layer->isValid())
 
 1195     layer->clearSelected();
 
 1206   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
 
 1214   srsDialog.setWindowTitle(tr(
"Choose the SRS"));
 
 1216   if(srsDialog.exec() == QDialog::Rejected)
 
 1223   lay->setSRID(srid.first);
 
 1228   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1237       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = layers.begin();
 
 1239       while(it != layers.end())
 
 1241         if(!(*it)->getLayer()->isValid())
 
 1244                            tr(
"There are invalid layers selected!"));
 
 1255   if (lay->getSchema()->hasRaster())
 
 1264     addDockWidget(Qt::BottomDockWidgetArea, doc);
 
 1269     if(!m_tableDocks.empty())
 
 1270       tabifyDockWidget(m_tableDocks[m_tableDocks.size()-1], doc);
 
 1272     m_tableDocks.push_back(doc);
 
 1282   m_viewDataTable->setChecked(
true);
 
 1284   m_viewDataTable->setEnabled(
true);
 
 1291     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1293     if(selectedLayers.empty())
 
 1296                            tr(
"Select a layer in the layer explorer!"));
 
 1301       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1303       while(it != selectedLayers.end())
 
 1305         if(!it->get()->isValid())
 
 1308                            tr(
"There are invalid layers selected!"));
 
 1326     dlg.setWindowTitle(dlg.windowTitle() + 
" (" + tr(
"Layer") + 
":" + selectedLayer->getTitle().c_str() +
")");
 
 1328     int res = dlg.exec();
 
 1329     if (res == QDialog::Accepted)
 
 1333       doc->setWindowTitle(tr(
"Histogram"));
 
 1334       doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
 
 1335       doc->
setLayer(selectedLayer.get());
 
 1338       addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
 1342   catch(
const std::exception& e)
 
 1353       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
 1358     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
 1360     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
 1361       parentLayer = selectedLayerItems.front()->getLayer();
 
 1363     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1365     if(selectedLayers.empty())
 
 1368                            tr(
"Select a layer in the layer explorer!"));
 
 1373       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1375       while(it != selectedLayers.end())
 
 1377         if(!it->get()->isValid())
 
 1380                            tr(
"There are invalid layers selected!"));
 
 1391     elb->setInputLayer(selectedLayer);
 
 1393     int retval = elb->exec();
 
 1395     if(retval == QDialog::Rejected)
 
 1400     if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
 1409   catch(
const std::exception& e)
 
 1415     QMessageBox::warning(
this,
 
 1417                          tr(
"Unknown error while trying to add a layer from a queried dataset!"));
 
 1425     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1427     if(selectedLayers.empty())
 
 1430                            tr(
"Select a layer in the layer explorer!"));
 
 1435       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1437       while(it != selectedLayers.end())
 
 1439         if(!it->get()->isValid())
 
 1442                            tr(
"There are invalid layers selected!"));
 
 1460     dlg.setWindowTitle(dlg.windowTitle() + 
" (" + tr(
"Layer") + 
":" + selectedLayer->getTitle().c_str() +
")");
 
 1462     int res = dlg.exec();
 
 1463     if (res == QDialog::Accepted)
 
 1468       doc->setWindowTitle(tr(
"Scatter"));
 
 1469       doc->setWindowIcon(QIcon::fromTheme(
"chart-scatter"));
 
 1471       doc->
setLayer(selectedLayer.get());
 
 1473       addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
 1477   catch(
const std::exception& e)
 
 1487     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1489     if(selectedLayerItems.empty())
 
 1492                            tr(
"Select a single layer in the layer explorer!"));
 
 1497       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
 
 1499       while(it != selectedLayerItems.end())
 
 1501         if(!(*it)->getLayer()->isValid())
 
 1504                            tr(
"There are invalid layers selected!"));
 
 1518     dlg.setWindowTitle(dlg.windowTitle() + 
" (" + tr(
"Layer") + 
":" + selectedLayer->getTitle().c_str() +
")");
 
 1533       m_explorer->getExplorer()->remove(chartItem);
 
 1537     m_explorer->getExplorer()->collapse(selectedLayerItem);
 
 1539     if(dlg.exec() == QDialog::Accepted)
 
 1542       m_explorer->getExplorer()->expand(selectedLayerItem);
 
 1546         m_explorer->getExplorer()->expand(chartItem);
 
 1548       m_display->getDisplay()->refresh();
 
 1555   catch(
const std::exception& e)
 
 1565     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1567     if(selectedLayerItems.empty())
 
 1570                            tr(
"Select a single layer in the layer explorer!"));
 
 1575       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
 
 1577       while(it != selectedLayerItems.end())
 
 1579         if(!(*it)->getLayer()->isValid())
 
 1582                            tr(
"There are invalid layers selected!"));
 
 1597     std::vector<te::map::AbstractLayerPtr> allLayers(allLayersList.begin(), allLayersList.end());
 
 1600     dlg.setLayers(selectedLayer, allLayers);
 
 1606       m_explorer->getExplorer()->remove(groupingItem);
 
 1612       m_explorer->getExplorer()->remove(cmi);
 
 1616     m_explorer->getExplorer()->collapse(selectedLayerItem);
 
 1618     if(dlg.exec() == QDialog::Accepted)
 
 1621       m_explorer->getExplorer()->expand(selectedLayerItem);
 
 1625         m_explorer->getExplorer()->expand(groupingItem);
 
 1629         m_explorer->getExplorer()->expand(cmi);
 
 1631       m_display->getDisplay()->refresh();
 
 1638   catch(
const std::exception& e)
 
 1647   srsDialog.setWindowTitle(tr(
"Choose the SRS"));
 
 1649   if(srsDialog.exec() == QDialog::Rejected)
 
 1657   m_display->getDisplay()->setSRID(srid.first);
 
 1662   std::pair<int, std::string> srid = std::make_pair(
TE_UNKNOWN_SRS, 
"");
 
 1681     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1683     if(selectedLayers.empty())
 
 1686                            tr(
"Select a layer in the layer explorer!"));
 
 1691       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1693       while(it != selectedLayers.end())
 
 1695         if(!it->get()->isValid())
 
 1698                            tr(
"There are invalid layers selected!"));
 
 1722       display->
setSRID(selectedLayer->getSRID());
 
 1730                            TE_TR(
"The spatial reference system of the map display and the layer are not compatible!"));
 
 1734     if (display->
getSRID() != selectedLayer->getSRID())
 
 1739   catch(
const std::exception& e)
 
 1747   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1748   if(selectedLayers.empty())
 
 1750     QString msg = tr(
"Select at least a layer to accomplish this operation!");
 
 1756     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1758     while(it != selectedLayers.end())
 
 1760       if(!it->get()->isValid())
 
 1763                           tr(
"There are invalid layers selected!"));
 
 1775     QString msg = tr(
"Select object(s) in the selected layer(s) to accomplish this operation!");
 
 1780   m_display->getDisplay()->setExtent(finalEnv, 
true);
 
 1785   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1786   if(selectedLayers.empty())
 
 1788     QString msg = tr(
"Select at least a layer to accomplish this operation!");
 
 1794     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1796     while(it != selectedLayers.end())
 
 1798       if(!it->get()->isValid())
 
 1801                           tr(
"There are invalid layers selected!"));
 
 1817   double halfWidth = displayExtent.
getWidth() * 0.5;
 
 1818   double halfHeight = displayExtent.
getHeight() * 0.5;
 
 1822   newExtent.
m_llx = centerOfSelectedExtent.x - halfWidth;
 
 1823   newExtent.
m_lly = centerOfSelectedExtent.y - halfHeight;
 
 1825   newExtent.
m_urx = centerOfSelectedExtent.x + halfWidth;
 
 1826   newExtent.
m_ury = centerOfSelectedExtent.y + halfHeight;
 
 1833   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1835   if(!selectedLayers.empty())
 
 1837     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1839     m_compModeMenu->setLayer(*it);
 
 1845   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1847   if(selectedLayers.empty())
 
 1850                          tr(
"Select a layer in the layer explorer!"));
 
 1855     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1857     while(it != selectedLayers.end())
 
 1859       if(!it->get()->isValid())
 
 1862                           tr(
"There are invalid layers selected!"));
 
 1881       m_iController->addInterface(m_queryDlg);
 
 1887     m_queryDlg->setLayerList(allLayersList);
 
 1890   std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1892   if(!selectedLayerItems.empty())
 
 1897     m_queryDlg->setCurrentLayer(selectedLayer);
 
 1908   QCursor zoomAreaCursor(QIcon::fromTheme(
"zoom-in").pixmap(m_mapCursorSize));
 
 1911   m_display->setCurrentTool(zoomArea);
 
 1922   QCursor zoomOutCursor(QIcon::fromTheme(
"zoom-out").pixmap(m_mapCursorSize));
 
 1925   m_display->setCurrentTool(zoomOut);
 
 1933   m_display->previousExtent();
 
 1938   m_display->nextExtent();
 
 1947   m_display->setCurrentTool(pan);
 
 1955   if(!m_project && m_project->getTopLayers().empty())
 
 1968   QPixmap pxmap = QIcon::fromTheme(
"pointer-info").pixmap(m_mapCursorSize);
 
 1969   QCursor infoCursor(pxmap, 0, 0);
 
 1972   m_display->setCurrentTool(info);
 
 1974   connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), info, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
 
 1981   std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
 
 1983   while(it != layers.end())
 
 1987     layer->clearSelected();
 
 2002   m_display->setCurrentTool(selection);
 
 2004   connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), selection, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
 
 2016   QCursor measureDistanceCursor(QIcon::fromTheme(
"distance-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 2019   m_display->setCurrentTool(distance);
 
 2027   QCursor measureAreaCursor(QIcon::fromTheme(
"area-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 2030   m_display->setCurrentTool(area);
 
 2038   QCursor measureAngleCursor(QIcon::fromTheme(
"angle-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 2041   m_display->setCurrentTool(angle);
 
 2051   m_progressDockWidget->setVisible(
true);
 
 2056   std::vector<DataSetTableDockWidget*>::iterator it;
 
 2058   for(it=m_tableDocks.begin(); it!=m_tableDocks.end(); ++it)
 
 2062   if(it != m_tableDocks.end())
 
 2063     m_tableDocks.erase(it);
 
 2065   if(m_tableDocks.empty())
 
 2067     m_viewDataTable->setChecked(
false);
 
 2068     m_viewDataTable->setEnabled(
false);
 
 2076   checked ? showFullScreen() : showMaximized();
 
 2081   assert(layer.get());
 
 2089   assert(layer.get());
 
 2098   m_viewLayerExplorer->blockSignals(
true);
 
 2099   m_viewLayerExplorer->setChecked(visible);
 
 2100   m_viewLayerExplorer->blockSignals(
false);
 
 2105   if(m_tableDocks.empty())
 
 2108   for(std::size_t i = 0; i < m_tableDocks.size(); ++i)
 
 2111       m_tableDocks[i]->show();
 
 2113       m_tableDocks[i]->hide();
 
 2116   m_viewDataTable->setChecked(visible);
 
 2121   m_viewStyleExplorer->blockSignals(
true);
 
 2122   m_viewStyleExplorer->setChecked(visible);
 
 2123   m_viewStyleExplorer->blockSignals(
false);
 
 2134     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
 2135       dExplorer->setDataSourceToUse(dsTypeSett);
 
 2138     int retval = dExplorer->exec();
 
 2140     if(retval == QDialog::Rejected)
 
 2143     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dExplorer->getSelecteds();
 
 2145     if(selectedDatasources.empty())
 
 2150     const std::string& dsTypeId = selectedDatasources.front()->getType();
 
 2154   catch(
const std::exception& e)
 
 2160     QMessageBox::warning(
this,
 
 2162                          tr(
"DataSetExplorer Error!"));
 
 2197   QApplication::setOverrideCursor(Qt::WaitCursor);
 
 2200     if(checkProjectSave() == QMessageBox::Cancel)
 
 2202       QApplication::restoreOverrideCursor();
 
 2206     if(!boost::filesystem::exists(projectFileName.toStdString()))
 
 2208       QApplication::restoreOverrideCursor();
 
 2219     m_project = nproject;
 
 2240     QApplication::restoreOverrideCursor();
 
 2245     QApplication::restoreOverrideCursor();
 
 2246     QString msg(tr(
"Fail to open project: %1"));
 
 2248     msg = msg.arg(projectFileName);
 
 2250     throw Exception(
TE_TR(msg.toStdString()));
 
 2252   QApplication::restoreOverrideCursor();
 
 2257   if(m_project != 0 && m_project->hasChanged())
 
 2259     QString msg(
"The current project has unsaved changes. Do you want to save them?");
 
 2263       onSaveProjectTriggered();
 
 2268   return QMessageBox::NoButton;
 
 2273   if(checkProjectSave() == QMessageBox::Cancel)
 
 2287   m_project->setTitle(tr(
"New Project").toStdString());
 
 2289   m_project->setAuthor(author.toStdString());
 
 2296   m_project->setProjectAsChanged(
false);
 
 2311   initSlotsConnections();
 
 2317   m_layerCompositionMode->setMenu(m_compModeMenu->getMenu());
 
 2320   QAction* act = 
new QAction(
this);
 
 2321   act->setSeparator(
true);
 
 2324   lexplorer->setObjectName(
"LayerExplorerDockWidget");
 
 2326   treeView->setAnimated(
true);
 
 2336   QAction* noItemSelectedSep = 
new QAction(
this);
 
 2337   noItemSelectedSep->setSeparator(
true);
 
 2345   treeView->
add(m_projectAddLayerMenu->menuAction(), 
"", 
"FOLDER_LAYER_ITEM");
 
 2347   QAction* folderSep1 = 
new QAction(
this);
 
 2348   folderSep1->setSeparator(
true);
 
 2349   treeView->
add(folderSep1, 
"", 
"FOLDER_LAYER_ITEM");
 
 2351   treeView->
add(m_projectAddFolderLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2353   QAction* folderSep2 = 
new QAction(
this);
 
 2354   folderSep2->setSeparator(
true);
 
 2355   treeView->
add(folderSep2, 
"", 
"FOLDER_LAYER_ITEM");
 
 2357   treeView->
add(m_projectRemoveLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2358   treeView->
add(m_projectRenameLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2361   treeView->
add(m_layerObjectGrouping);
 
 2362   treeView->
add(m_toolsDataExchangerDirectPopUp);
 
 2363   treeView->
add(m_layerChartsHistogram);
 
 2364   treeView->
add(m_layerChart);
 
 2365   treeView->
add(m_queryLayer);
 
 2366   treeView->
add(m_layerChartsScatter);
 
 2367   treeView->
add(m_layerLinkTable, 
"", 
"DATASET_LAYER_ITEM");
 
 2369   QAction* actionChartSep = 
new QAction(
this);
 
 2370   actionChartSep->setSeparator(
true);
 
 2371   treeView->
add(actionChartSep);
 
 2373   treeView->
add(m_layerShowTable);
 
 2374   treeView->
add(m_viewStyleExplorer);
 
 2376   QAction* actionStyleSep = 
new QAction(
this);
 
 2377   actionStyleSep->setSeparator(
true);
 
 2378   treeView->
add(actionStyleSep);
 
 2380   treeView->
add(m_layerRemoveObjectSelection);
 
 2381   treeView->
add(m_projectRemoveLayer);
 
 2382   treeView->
add(m_projectRenameLayer);
 
 2384   QAction* actionRemoveSep = 
new QAction(
this);
 
 2385   actionRemoveSep->setSeparator(
true);
 
 2386   treeView->
add(actionRemoveSep);
 
 2388   treeView->
add(m_layerFitOnMapDisplay);
 
 2389   treeView->
add(m_layerFitSelectedOnMapDisplay);
 
 2390   treeView->
add(m_layerPanToSelectedOnMapDisplay);
 
 2392   QAction* actionFitSep = 
new QAction(
this);
 
 2393   actionFitSep->setSeparator(
true);
 
 2394   treeView->
add(actionFitSep);
 
 2396   treeView->
add(m_layerSRS);
 
 2398   QAction* actionSRSSep = 
new QAction(
this);
 
 2399   actionSRSSep->setSeparator(
true);
 
 2400   treeView->
add(actionSRSSep);
 
 2402   treeView->
add(m_layerCompositionMode);
 
 2403   treeView->
add(m_layerProperties);
 
 2406   treeView->
add(m_layerRemoveItem, 
"", 
"ITEM_OF_LAYER");
 
 2409   treeView->
add(m_layerObjectGrouping, 
"", 
"RASTER_LAYER_ITEM");
 
 2410   treeView->
add(m_layerChartsHistogram, 
"", 
"RASTER_LAYER_ITEM");
 
 2411   treeView->
add(m_layerChartsScatter, 
"", 
"RASTER_LAYER_ITEM");
 
 2413   QAction* rasterSep1 = 
new QAction(
this);
 
 2414   rasterSep1->setSeparator(
true);
 
 2415   treeView->
add(rasterSep1, 
"", 
"RASTER_LAYER_ITEM");
 
 2417   treeView->
add(m_viewStyleExplorer, 
"", 
"RASTER_LAYER_ITEM");
 
 2419   QAction* rasterSep2 = 
new QAction(
this);
 
 2420   rasterSep2->setSeparator(
true);
 
 2421   treeView->
add(rasterSep2, 
"", 
"RASTER_LAYER_ITEM");
 
 2423   treeView->
add(m_projectRemoveLayer, 
"", 
"RASTER_LAYER_ITEM");
 
 2424   treeView->
add(m_projectRenameLayer, 
"", 
"RASTER_LAYER_ITEM");
 
 2426   QAction* rasterSep3 = 
new QAction(
this);
 
 2427   rasterSep3->setSeparator(
true);
 
 2428   treeView->
add(rasterSep3, 
"", 
"RASTER_LAYER_ITEM");
 
 2430   treeView->
add(m_layerFitOnMapDisplay, 
"", 
"RASTER_LAYER_ITEM");
 
 2432   QAction* rasterSep4 = 
new QAction(
this);
 
 2433   rasterSep4->setSeparator(
true);
 
 2434   treeView->
add(rasterSep4, 
"", 
"RASTER_LAYER_ITEM");
 
 2436   treeView->
add(m_layerSRS, 
"", 
"RASTER_LAYER_ITEM");
 
 2438   QAction* rasterSep5 = 
new QAction(
this);
 
 2439   rasterSep5->setSeparator(
true);
 
 2440   treeView->
add(rasterSep5, 
"", 
"RASTER_LAYER_ITEM");
 
 2442   treeView->
add(m_layerCompositionMode, 
"", 
"RASTER_LAYER_ITEM");
 
 2443   treeView->
add(m_layerProperties, 
"", 
"RASTER_LAYER_ITEM");
 
 2447   treeView->
add(m_projectChangeLayerDataSource, 
"", 
"INVALID_LAYER_ITEM");
 
 2448   treeView->
add(m_projectUpdateLayerDataSource, 
"", 
"INVALID_LAYER_ITEM");
 
 2449   treeView->
add(m_projectRemoveLayer, 
"", 
"INVALID_LAYER_ITEM");
 
 2459   QAction* multipleSelectedSep = 
new QAction(
this);
 
 2460   multipleSelectedSep->setSeparator(
true);
 
 2467   QMainWindow::addDockWidget(Qt::LeftDockWidgetArea, lexplorer);
 
 2469   connect(m_viewLayerExplorer, SIGNAL(toggled(
bool)), lexplorer, SLOT(setVisible(
bool)));
 
 2470   m_viewLayerExplorer->setChecked(
true);
 
 2471   connect(lexplorer, SIGNAL(visibilityChanged(
bool)), 
this, SLOT(onLayerExplorerVisibilityChanged(
bool)));
 
 2481   QMainWindow::setCentralWidget(map);
 
 2483   connect(m_display, SIGNAL(hasPreviousExtent(
bool)), m_mapPreviousExtent, SLOT(setEnabled(
bool)));
 
 2484   connect(m_display, SIGNAL(hasNextExtent(
bool)), m_mapNextExtent, SLOT(setEnabled(
bool)));
 
 2488   stylelDock->setObjectName(
"StyleDockWidget");
 
 2489   QMainWindow::addDockWidget(Qt::RightDockWidgetArea, stylelDock);
 
 2490   stylelDock->connect(m_viewStyleExplorer, SIGNAL(toggled(
bool)), SLOT(setVisible(
bool)));
 
 2491   m_viewStyleExplorer->setChecked(
false);
 
 2492   stylelDock->setVisible(
false);
 
 2493   connect(stylelDock, SIGNAL(visibilityChanged(
bool)), 
this, SLOT(onStyleExplorerVisibilityChanged(
bool)));
 
 2494   connect(stylelDock, SIGNAL(repaintMapDisplay()), 
this, SLOT(onDrawTriggered()));
 
 2519   connect(m_viewDataTable, SIGNAL(toggled(
bool)), 
this, SLOT(onDisplayDataTableChanged(
bool)));
 
 2531   pvb->setFixedWidth(220);
 
 2537   m_statusbar->addPermanentWidget(pvb);
 
 2539   connect(pvb, SIGNAL(clicked()), 
this, SLOT(showProgressDockWidget()));
 
 2541   m_progressDockWidget = 
new QDockWidget(
this);
 
 2542   m_progressDockWidget->setObjectName(
"ProgressDockWidget");
 
 2543   m_progressDockWidget->setWidget(pvw);
 
 2544   m_progressDockWidget->setMinimumHeight(300);
 
 2545   m_progressDockWidget->setAllowedAreas(Qt::RightDockWidgetArea);
 
 2546   m_progressDockWidget->setWindowTitle(tr(
"Tasks Progress"));
 
 2547   addDockWidget(Qt::RightDockWidgetArea, m_progressDockWidget);
 
 2548   m_progressDockWidget->setVisible(
false);
 
 2553   if(checkProjectSave() == QMessageBox::Cancel)
 
 2559   emit applicationClose(); 
 
 2565                                              const QString& text, 
const QString& tooltip,
 
 2566                                              bool iconVisibleInMenu, 
bool isCheckable,
 
 2567                                              bool enabled, QObject* parent)
 
 2569   act = 
new QAction (parent);
 
 2572     act->setIcon(QIcon::fromTheme(icon));
 
 2574   act->setObjectName(name);
 
 2576   act->setIconVisibleInMenu(iconVisibleInMenu);
 
 2577   act->setCheckable(isCheckable);
 
 2578   act->setEnabled(enabled);
 
 2580 #ifndef QT_NO_TOOLTIP 
 2581   act->setToolTip(tooltip);
 
 2588   initAction(m_viewLayerExplorer, 
"view-layer-explorer", 
"View.Layer Explorer", tr(
"&Layer Explorer"), tr(
"Show or hide the layer explorer"), 
true, 
true, 
true, m_menubar);
 
 2589   initAction(m_viewDataTable, 
"view-data-table", 
"View.Data Table", tr(
"&Data Table"), tr(
"Show or hide the data table"), 
true, 
true, 
true, m_menubar);
 
 2590   initAction(m_viewStyleExplorer, 
"style", 
"View.Style Explorer", tr(
"&Style Explorer"), tr(
"Show or hide the style explorer"), 
true, 
true, 
true, m_menubar);
 
 2591   initAction(m_viewFullScreen, 
"view-fullscreen", 
"View.Full Screen", tr(
"F&ull Screen"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2597   initAction(m_toolsCustomize, 
"preferences-system", 
"Tools.Customize", tr(
"&Customize..."), tr(
"Customize the system preferences"), 
true, 
false, 
true, m_menubar);
 
 2598   initAction(m_toolsDataExchanger, 
"datasource-exchanger", 
"Tools.Exchanger.All to All", tr(
"&Advanced..."), tr(
"Exchange data sets between data sources"), 
true, 
false, 
true, m_menubar);
 
 2599   initAction(m_toolsDataExchangerDirect, 
"data-exchange-direct-icon", 
"Tools.Exchanger.Direct", tr(
"&Layer..."), tr(
"Exchange data sets from layers"), 
true, 
false, 
true, m_menubar);
 
 2600   initAction(m_toolsDataExchangerDirectPopUp, 
"data-exchange-direct-icon", 
"Tools.Exchanger.Direct", tr(
"&Exchange..."), tr(
"Exchange data sets from layers"), 
true, 
false, 
true, m_menubar);
 
 2601   initAction(m_toolsDataSourceExplorer, 
"datasource-explorer", 
"Tools.Data Source Explorer", tr(
"&Data Source Explorer..."), tr(
"Show or hide the data source explorer"), 
 
 2602     true, 
false, 
true, m_menubar);
 
 2603   initAction(m_toolsQueryDataSource, 
"datasource-query", 
"Tools.Query Data Source", tr(
"&Query Data Source..."), tr(
"Allows you to query data in a data source"), 
true, 
false, 
true, m_menubar);
 
 2604   initAction(m_toolsRasterMultiResolution, 
"raster-multiresolution-icon", 
"Tools.Raster Multi Resolution", tr(
"&Raster Multi Resolution..."), tr(
"Creates multi resolution over a raster..."), 
true, 
false, 
true, m_menubar);
 
 2620   initAction(m_pluginsManager, 
"plugin", 
"Plugins.Management", tr(
"&Manage Plugins..."), tr(
"Manage the application plugins"), 
true, 
false, 
true, m_menubar);
 
 2623   initAction(m_helpContents, 
"help-browser", 
"Help.View Help", tr(
"&View Help..."), tr(
"Shows help dialog"), 
true, 
false, 
true, m_menubar);
 
 2625   initAction(m_helpAbout, 
"help-about-browser", 
"Help.About", tr(
"&About..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2628   initAction(m_projectAddLayerDataset, 
"datasource", 
"Project.Add Layer.All Sources", tr(
"&From Data Source..."), tr(
"Add a new layer from all available data sources"), 
true, 
false, 
true, m_menubar);
 
 2629   initAction(m_projectAddFolderLayer, 
"folderlayer-new", 
"Project.New Folder Layer", tr(
"Add &Folder Layer..."), tr(
"Add a new folder layer"), 
true, 
false, 
true, m_menubar);
 
 2630   initAction(m_projectAddLayerQueryDataSet, 
"view-filter", 
"Project.Add Layer.Query Dataset", tr(
"&Query Dataset..."), tr(
"Add a new layer from a queried dataset"), 
true, 
false, 
true, m_menubar);
 
 2631   initAction(m_projectAddLayerTabularDataSet, 
"view-data-table", 
"Project.Add Layer.Tabular File", tr(
"&Tabular File..."), tr(
"Add a new layer from a Tabular file"), 
true, 
false, 
true, m_menubar);
 
 2632   initAction(m_projectRemoveLayer, 
"layer-remove", 
"Project.Remove Layer", tr(
"&Remove Layer(s)"), tr(
"Remove layer(s) from the project"), 
true, 
false, 
true, 
this);
 
 2633   initAction(m_projectRenameLayer, 
"layer-rename", 
"Project.Rename Layer", tr(
"Rename Layer..."), tr(
"Rename layer"), 
true, 
false, 
true, 
this);
 
 2634   initAction(m_projectChangeLayerDataSource, 
"", 
"Project.Change Layer Data Source", tr(
"&Change Layer Data Source"), tr(
"Chanage layer Data Source"), 
true, 
false, 
true, 
this);
 
 2635   initAction(m_projectUpdateLayerDataSource, 
"", 
"Project.Update Layer Data Source", tr(
"&Update Layer Data Source"), tr(
"Update layer Data Source"), 
true, 
false, 
true, 
this);
 
 2636   initAction(m_projectProperties, 
"document-info", 
"Project.Properties", tr(
"&Properties..."), tr(
"Show the project properties"), 
true, 
false, 
true, m_menubar);
 
 2640   initAction(m_layerRemoveObjectSelection, 
"pointer-remove-selection", 
"Layer.Remove Selection", tr(
"&Remove Selection"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2641   initAction(m_layerRemoveItem, 
"item-remove", 
"Layer.Remove Item", tr(
"&Remove Item"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2642   initAction(m_layerObjectGrouping, 
"grouping", 
"Layer.ObjectGrouping", tr(
"&Classification..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2643   initAction(m_layerProperties, 
"layer-info", 
"Layer.Properties", tr(
"&Properties..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2644   initAction(m_layerSRS, 
"layer-srs", 
"Layer.SRS", tr(
"&Inform SRS..."), tr(
""), 
true, 
false, 
true, m_menubar);  
 
 2645   initAction(m_layerShowTable, 
"view-data-table", 
"Layer.Show Table", tr(
"S&how Table"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2646   initAction(m_layerChartsHistogram, 
"chart-bar", 
"Layer.Charts.Histogram", tr(
"&Histogram..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2647   initAction(m_layerChartsScatter, 
"chart-scatter", 
"Layer.Charts.Scatter", tr(
"&Scatter..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2648   initAction(m_layerChart, 
"chart-pie", 
"Layer.Charts.Chart", tr(
"&Pie/Bar Chart..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2649   initAction(m_layerFitOnMapDisplay, 
"layer-fit", 
"Layer.Fit Layer on the Map Display", tr(
"Fit Layer"), tr(
"Fit the current layer on the Map Display"), 
true, 
false, 
true, m_menubar);
 
 2650   initAction(m_layerFitSelectedOnMapDisplay, 
"zoom-selected-extent", 
"Layer.Fit Selected Features on the Map Display", tr(
"Fit Selected Features"), tr(
"Fit the selected features on the Map Display"), 
true, 
false, 
true, m_menubar);
 
 2651   initAction(m_layerPanToSelectedOnMapDisplay, 
"pan-selected", 
"Layer.Pan to Selected Features on Map Display", tr(
"Pan to Selected Features"), tr(
"Pan to the selected features on the Map Display"), 
true, 
false, 
true, m_menubar);
 
 2652   initAction(m_queryLayer, 
"view-filter", 
"Layer.Query", tr(
"Query..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2653   initAction(m_layerLinkTable, 
"layer-link", 
"Layer.Link", tr(
"&Link..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2654   initAction(m_layerCompositionMode, 
"layer-compose", 
"Layer.Composition Mode", tr(
"&Composition Mode..."), tr(
"Set the composition mode to renderer the selected layer"), 
true, 
false, 
true, m_menubar);
 
 2657   initAction(m_fileNewProject, 
"document-new", 
"File.New Project", tr(
"&New Project..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2658   initAction(m_fileSaveProject, 
"document-save", 
"File.Save Project", tr(
"&Save Project"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2659   initAction(m_fileSaveProjectAs, 
"document-save-as", 
"File.Save Project As", tr(
"Save Project &As..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2660   initAction(m_fileOpenProject, 
"document-open", 
"File.Open Project", tr(
"&Open Project..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2661   initAction(m_fileRestartSystem, 
"", 
"File.Restart System", tr(
"&Restart System..."), tr(
"Restart the system."), 
true, 
false, 
true, m_menubar);
 
 2662   initAction(m_fileExit, 
"system-log-out", 
"File.Exit", tr(
"E&xit"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2663   initAction(m_filePrintPreview, 
"document-print-preview", 
"File.Print Preview", tr(
"Print Pre&view..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2664   initAction(m_filePrint, 
"document-print", 
"File.Print", tr(
"&Print..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2667   initAction(m_mapSRID, 
"srs", 
"Map.SRID", tr(
"&SRS..."), tr(
"Config the Map SRS"), 
true, 
false, 
true, m_menubar);
 
 2668   initAction(m_mapUnknownSRID, 
"srs-unknown", 
"Map.UnknownSRID", tr(
"&Set Unknown SRS"), tr(
"Set the Map SRS to unknown"), 
true, 
false, 
true, m_menubar);
 
 2669   initAction(m_mapDraw, 
"map-draw", 
"Map.Draw", tr(
"&Draw"), tr(
"Draw the visible layers"), 
true, 
false, 
true, m_menubar);
 
 2670   initAction(m_mapZoomIn, 
"zoom-in", 
"Map.Zoom In", tr(
"Zoom &In"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2671   initAction(m_mapZoomOut, 
"zoom-out", 
"Map.Zoom Out", tr(
"Zoom &Out"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2672   initAction(m_mapPan, 
"pan", 
"Map.Pan", tr(
"&Pan"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2673   initAction(m_mapZoomExtent, 
"zoom-extent", 
"Map.Zoom Extent", tr(
"Zoom &Extent"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2674   initAction(m_mapPreviousExtent, 
"edit-undo", 
"Map.Previous Extent", tr(
"&Previous Extent"), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2675   initAction(m_mapNextExtent, 
"edit-redo", 
"Map.Next Extent", tr(
"&Next Extent"), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2676   initAction(m_mapInfo, 
"pointer-info", 
"Map.Info", tr(
"&Info"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2677   initAction(m_mapRemoveSelection, 
"pointer-remove-selection", 
"Map.Remove Selection", tr(
"&Remove Selection"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2678   initAction(m_mapSelection, 
"pointer-selection", 
"Map.Selection", tr(
"&Selection"), tr(
""), 
true, 
true, 
true, m_menubar);  
 
 2679   initAction(m_mapMeasureDistance, 
"distance-measure", 
"Map.Measure Distance", tr(
"Measure &Distance"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2680   initAction(m_mapMeasureArea, 
"area-measure", 
"Map.Measure Area", tr(
"Measure &Area"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2681   initAction(m_mapMeasureAngle, 
"angle-measure", 
"Map.Measure Angle", tr(
"Measure &Angle"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2682   initAction(m_mapStopDrawing, 
"map-draw-cancel", 
"Map.Stop Drawing", tr(
"&Stop Drawing"), tr(
"Stop all drawing tasks"), 
true, 
false, 
true, m_menubar);
 
 2688   m_menubar->setObjectName(
"menubar");
 
 2689   m_menubar->setGeometry(QRect(0, 0, 640, 21));
 
 2692   m_fileMenu->setObjectName(
"File");
 
 2693   m_fileMenu->setTitle(tr(
"&File"));
 
 2695   m_recentProjectsMenu->setObjectName(
"File.Recent Projects");
 
 2696   m_recentProjectsMenu->setTitle(tr(
"Recent &Projects"));
 
 2698   m_fileMenu->addAction(m_fileNewProject);
 
 2699   m_fileMenu->addAction(m_fileOpenProject);
 
 2700   m_fileMenu->addAction(m_fileSaveProject);
 
 2701   m_fileMenu->addAction(m_fileSaveProjectAs);
 
 2702   m_fileMenu->addSeparator();
 
 2703   m_fileMenu->addMenu(m_recentProjectsMenu);
 
 2704   m_recentProjectsMenu->setEnabled(
false);
 
 2705   m_fileMenu->addSeparator();
 
 2706   m_fileMenu->addAction(m_filePrintPreview);
 
 2707   m_fileMenu->addAction(m_filePrint);
 
 2708   m_fileMenu->addSeparator();
 
 2709   m_fileMenu->addAction(m_fileRestartSystem);
 
 2711 #if TE_PLATFORM != TE_PLATFORMCODE_APPLE 
 2712   m_fileMenu->addSeparator();
 
 2715   m_fileMenu->addAction(m_fileExit);
 
 2738   m_viewMenu->setObjectName(
"View");
 
 2739   m_viewMenu->setTitle(tr(
"&View"));
 
 2741   m_viewToolBarsMenu->setObjectName(
"View.Toolbars");
 
 2742   m_viewToolBarsMenu->setTitle(tr(
"&Toolbars"));
 
 2745   m_viewMenu->addAction(m_viewDataTable);
 
 2746   m_viewMenu->addAction(m_viewLayerExplorer);
 
 2747   m_viewMenu->addAction(m_viewStyleExplorer);
 
 2749   m_viewMenu->addSeparator();
 
 2750   m_viewMenu->addAction(m_viewFullScreen);
 
 2751   m_viewMenu->addSeparator();
 
 2752   m_viewMenu->addMenu(m_viewToolBarsMenu);
 
 2756   m_projectMenu->setObjectName(
"Project");
 
 2757   m_projectMenu->setTitle(tr(
"&Project"));
 
 2760   m_projectAddLayerMenu->setObjectName(
"Project.Add Layer");
 
 2761   m_projectAddLayerMenu->setTitle(tr(
"&Add Layer"));
 
 2762   m_projectAddLayerMenu->setIcon(QIcon::fromTheme(
"layer-add"));
 
 2763   m_projectAddLayerMenu->addAction(m_projectAddLayerTabularDataSet);
 
 2764   m_projectAddLayerMenu->addAction(m_projectAddLayerDataset);
 
 2765   m_projectAddLayerMenu->addSeparator();
 
 2766   m_projectAddLayerMenu->addAction(m_projectAddLayerQueryDataSet);
 
 2767   m_projectAddLayerMenu->addSeparator();
 
 2768   m_projectMenu->addAction(m_projectAddFolderLayer);
 
 2769   m_projectMenu->addSeparator();
 
 2770   m_projectMenu->addAction(m_projectRemoveLayer);
 
 2771   m_projectMenu->addAction(m_projectRenameLayer);
 
 2772   m_projectMenu->addSeparator();
 
 2773   m_projectMenu->addAction(m_projectProperties);
 
 2775   m_layerMenu->setObjectName(
"Layer");
 
 2776   m_layerMenu->setTitle(tr(
"&Layer"));
 
 2778   m_layerMenu->addAction(m_layerObjectGrouping);
 
 2779   m_layerMenu->addAction(m_layerChartsHistogram);
 
 2780   m_layerMenu->addAction(m_layerChart);
 
 2781   m_layerMenu->addAction(m_queryLayer);
 
 2782   m_layerMenu->addAction(m_layerChartsScatter);
 
 2783   m_layerMenu->addSeparator();
 
 2784   m_layerMenu->addAction(m_layerFitOnMapDisplay);
 
 2785   m_layerMenu->addAction(m_layerFitSelectedOnMapDisplay);
 
 2786   m_layerMenu->addAction(m_layerPanToSelectedOnMapDisplay);
 
 2787   m_layerMenu->addSeparator();
 
 2788   m_layerMenu->addAction(m_layerShowTable);
 
 2789   m_layerMenu->addAction(m_viewStyleExplorer);
 
 2790   m_layerMenu->addSeparator();
 
 2791   m_layerMenu->addAction(m_layerRemoveObjectSelection);
 
 2792   m_layerMenu->addSeparator();
 
 2793   m_layerMenu->addAction(m_layerSRS);
 
 2794   m_layerMenu->addSeparator();
 
 2795   m_layerMenu->addAction(m_layerProperties);
 
 2804   m_mapMenu->setObjectName(
"Map");
 
 2805   m_mapMenu->setTitle(tr(
"&Map"));
 
 2807   m_mapMenu->addAction(m_mapDraw);
 
 2808   m_mapMenu->addAction(m_mapStopDrawing);
 
 2809   m_mapMenu->addSeparator();
 
 2810   m_mapMenu->addAction(m_mapInfo);
 
 2811   m_mapMenu->addAction(m_mapRemoveSelection);
 
 2812   m_mapMenu->addAction(m_mapSelection);
 
 2813   m_mapMenu->addSeparator();
 
 2814   m_mapMenu->addAction(m_mapPan);
 
 2815   m_mapMenu->addAction(m_mapZoomExtent);
 
 2816   m_mapMenu->addAction(m_mapZoomIn);
 
 2817   m_mapMenu->addAction(m_mapZoomOut);
 
 2818   m_mapMenu->addSeparator();
 
 2819   m_mapMenu->addAction(m_mapNextExtent);
 
 2820   m_mapMenu->addAction(m_mapPreviousExtent);
 
 2821   m_mapMenu->addSeparator();
 
 2822   m_mapMenu->addAction(m_mapMeasureAngle);
 
 2823   m_mapMenu->addAction(m_mapMeasureArea);
 
 2824   m_mapMenu->addAction(m_mapMeasureDistance);
 
 2825   m_mapMenu->addSeparator();
 
 2826   m_mapMenu->addAction(m_mapSRID);
 
 2827   m_mapMenu->addAction(m_mapUnknownSRID);
 
 2830   QActionGroup* mapToolsGroup = 
new QActionGroup(m_mapMenu);
 
 2831   mapToolsGroup->setObjectName(
"Map.ToolsGroup");
 
 2832   mapToolsGroup->addAction(m_mapZoomIn);
 
 2833   mapToolsGroup->addAction(m_mapZoomOut);
 
 2834   mapToolsGroup->addAction(m_mapPan);
 
 2835   mapToolsGroup->addAction(m_mapMeasureDistance);
 
 2836   mapToolsGroup->addAction(m_mapMeasureArea);
 
 2837   mapToolsGroup->addAction(m_mapMeasureAngle);
 
 2838   mapToolsGroup->addAction(m_mapInfo);
 
 2839   mapToolsGroup->addAction(m_mapSelection);
 
 2840   mapToolsGroup->addAction(m_mapRemoveSelection);
 
 2845   m_toolsMenu->setObjectName(
"Tools");
 
 2846   m_toolsMenu->setTitle(tr(
"&Tools"));
 
 2850   m_toolsExchangerMenu->setObjectName(
"Tools.Exchanger");
 
 2851   m_toolsExchangerMenu->setTitle(tr(
"&Data Exchanger"));
 
 2852   m_toolsExchangerMenu->setIcon(QIcon::fromTheme(
"datasource-exchanger"));
 
 2853   m_toolsExchangerMenu->addAction(m_toolsDataExchangerDirect);
 
 2854   m_toolsExchangerMenu->addAction(m_toolsDataExchanger);
 
 2856   m_toolsMenu->addAction(m_toolsDataSourceExplorer);
 
 2857   m_toolsMenu->addAction(m_toolsQueryDataSource);
 
 2858   m_toolsMenu->addSeparator();
 
 2859   m_toolsMenu->addAction(m_toolsRasterMultiResolution);
 
 2861   m_toolsMenu->addSeparator();
 
 2862   m_toolsMenu->addAction(m_toolsCustomize);  
 
 2865   m_pluginsMenu->setObjectName(
"Plugins");
 
 2866   m_pluginsMenu->setTitle(tr(
"Pl&ugins"));
 
 2868   m_pluginsMenu->addSeparator()->setObjectName(
"ManagePluginsSeparator");
 
 2869   m_pluginsMenu->addAction(m_pluginsManager);
 
 2872   m_helpMenu->setObjectName(
"Help");
 
 2873   m_helpMenu->setTitle(tr(
"&Help"));
 
 2875   m_helpMenu->addAction(m_helpContents);
 
 2879   setMenuBar(m_menubar);
 
 2888   m_statusbar = 
new QStatusBar(
this);
 
 2889   m_statusbar->setObjectName(
"StatusBar");
 
 2890   setStatusBar(m_statusbar);
 
 2893   std::vector<QToolBar*>::iterator it;
 
 2895   for(it=bars.begin(); it!=bars.end(); ++it)
 
 2897     QToolBar* bar = *it;
 
 2898     addToolBar(Qt::TopToolBarArea, bar);
 
 2899     m_viewToolBarsMenu->addAction(bar->toggleViewAction());
 
 2907   m_selected = 
new QLabel(m_statusbar);
 
 2908   m_selected->setText(tr(
"Selected rows: 0"));
 
 2909   m_statusbar->addPermanentWidget(m_selected);
 
 2912   QToolButton* mapUnknownSRIDToolButton = 
new QToolButton(m_statusbar);
 
 2913   mapUnknownSRIDToolButton->setDefaultAction(m_mapUnknownSRID);
 
 2914   m_statusbar->addPermanentWidget(mapUnknownSRIDToolButton);
 
 2917   QToolButton* mapSRIDToolButton = 
new QToolButton(m_statusbar);
 
 2918   mapSRIDToolButton->setDefaultAction(m_mapSRID);
 
 2919   m_statusbar->addPermanentWidget(mapSRIDToolButton);
 
 2922   m_mapSRIDLineEdit = 
new QLineEdit(m_statusbar);
 
 2923   m_mapSRIDLineEdit->setFixedWidth(120);
 
 2924   m_mapSRIDLineEdit->setAlignment(Qt::AlignHCenter);
 
 2925   m_mapSRIDLineEdit->setEnabled(
false);
 
 2927   int srid = m_display->getDisplay()->getSRID();
 
 2928   srid != 
TE_UNKNOWN_SRS ? m_mapSRIDLineEdit->setText(
"EPSG:" + QString::number(srid)) : m_mapSRIDLineEdit->setText(tr(
"Unknown SRS"));
 
 2929   m_statusbar->addPermanentWidget(m_mapSRIDLineEdit);
 
 2932   m_coordinateLineEdit = 
new QLineEdit(m_statusbar);
 
 2933   m_coordinateLineEdit->setFixedWidth(220);
 
 2934   m_coordinateLineEdit->setAlignment(Qt::AlignHCenter);
 
 2935   m_coordinateLineEdit->setReadOnly(
true);
 
 2936   m_coordinateLineEdit->setFocusPolicy(Qt::NoFocus);
 
 2937   m_coordinateLineEdit->setText(tr(
"Coordinates"));
 
 2938   m_statusbar->addPermanentWidget(m_coordinateLineEdit);
 
 2941   QToolButton* stopDrawToolButton = 
new QToolButton(m_statusbar);
 
 2942   stopDrawToolButton->setDefaultAction(m_mapStopDrawing);
 
 2943   m_statusbar->addPermanentWidget(stopDrawToolButton);
 
 2948   connect(m_fileExit, SIGNAL(triggered()), SLOT(close()));
 
 2949   connect(m_fileRestartSystem, SIGNAL(triggered()), SLOT(onRestartSystemTriggered()));
 
 2950   connect(m_projectAddLayerDataset, SIGNAL(triggered()), SLOT(onAddDataSetLayerTriggered()));
 
 2951   connect(m_projectAddLayerQueryDataSet, SIGNAL(triggered()), SLOT(onAddQueryLayerTriggered()));
 
 2952   connect(m_projectAddLayerTabularDataSet, SIGNAL(triggered()), SLOT(onAddTabularLayerTriggered()));
 
 2953   connect(m_projectRemoveLayer, SIGNAL(triggered()), SLOT(onRemoveLayerTriggered()));
 
 2954   connect(m_projectRenameLayer, SIGNAL(triggered()), SLOT(onRenameLayerTriggered()));
 
 2955   connect(m_projectProperties, SIGNAL(triggered()), SLOT(onProjectPropertiesTriggered()));
 
 2956   connect(m_projectChangeLayerDataSource, SIGNAL(triggered()), SLOT(onChangeLayerDataSourceTriggered()));
 
 2957   connect(m_projectUpdateLayerDataSource, SIGNAL(triggered()), SLOT(onUpdateLayerDataSourceTriggered()));
 
 2958   connect(m_pluginsManager, SIGNAL(triggered()), SLOT(onPluginsManagerTriggered()));
 
 2959   connect(m_recentProjectsMenu, SIGNAL(triggered(QAction*)), SLOT(onRecentProjectsTriggered(QAction*)));
 
 2960   connect(m_fileNewProject, SIGNAL(triggered()), SLOT(onNewProjectTriggered()));
 
 2961   connect(m_fileOpenProject, SIGNAL(triggered()), SLOT(onOpenProjectTriggered()));
 
 2962   connect(m_fileSaveProject, SIGNAL(triggered()), SLOT(onSaveProjectTriggered()));
 
 2963   connect(m_fileSaveProjectAs, SIGNAL(triggered()), SLOT(onSaveProjectAsTriggered()));
 
 2964   connect(m_toolsCustomize, SIGNAL(triggered()), SLOT(onToolsCustomizeTriggered()));
 
 2965   connect(m_toolsDataExchanger, SIGNAL(triggered()), SLOT(onToolsDataExchangerTriggered()));
 
 2966   connect(m_toolsDataExchangerDirect, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectTriggered()));
 
 2967   connect(m_toolsDataExchangerDirectPopUp, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectPopUpTriggered()));
 
 2968   connect(m_toolsQueryDataSource, SIGNAL(triggered()), SLOT(onToolsQueryDataSourceTriggered()));
 
 2969   connect(m_toolsRasterMultiResolution, SIGNAL(triggered()), SLOT(onToolsRasterMultiResolutionTriggered()));
 
 2971   connect(m_helpContents, SIGNAL(triggered()), SLOT(onHelpTriggered()));
 
 2972   connect(m_layerChartsHistogram, SIGNAL(triggered()), SLOT(onLayerHistogramTriggered()));
 
 2973   connect(m_layerLinkTable, SIGNAL(triggered()), SLOT(onLinkTriggered()));
 
 2974   connect(m_layerChartsScatter, SIGNAL(triggered()), SLOT(onLayerScatterTriggered()));
 
 2975   connect(m_layerChart, SIGNAL(triggered()), SLOT(onLayerChartTriggered()));
 
 2976   connect(m_projectAddFolderLayer, SIGNAL(triggered()), SLOT(onAddFolderLayerTriggered()));
 
 2977   connect(m_layerProperties, SIGNAL(triggered()), SLOT(onLayerPropertiesTriggered()));
 
 2978   connect(m_layerRemoveObjectSelection, SIGNAL(triggered()), SLOT(onLayerRemoveSelectionTriggered()));
 
 2979   connect(m_layerRemoveItem, SIGNAL(triggered()), SLOT(onLayerRemoveItemTriggered()));
 
 2980   connect(m_layerSRS, SIGNAL(triggered()), SLOT(onLayerSRSTriggered()));
 
 2981   connect(m_layerObjectGrouping, SIGNAL(triggered()), SLOT(onLayerGroupingTriggered()));
 
 2982   connect(m_mapSRID, SIGNAL(triggered()), SLOT(onMapSRIDTriggered()));
 
 2983   connect(m_mapUnknownSRID, SIGNAL(triggered()), SLOT(onMapSetUnknwonSRIDTriggered()));
 
 2984   connect(m_mapDraw, SIGNAL(triggered()), SLOT(onDrawTriggered()));
 
 2985   connect(m_layerFitOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitOnMapDisplayTriggered()));
 
 2986   connect(m_layerFitSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitSelectedOnMapDisplayTriggered()));
 
 2987   connect(m_layerPanToSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerPanToSelectedOnMapDisplayTriggered()));
 
 2988   connect(m_layerCompositionMode, SIGNAL(hovered()), SLOT(onLayerCompositionModeTriggered()));
 
 2989   connect(m_queryLayer, SIGNAL(triggered()), SLOT(onQueryLayerTriggered()));
 
 2990   connect(m_mapZoomIn, SIGNAL(toggled(
bool)), SLOT(onZoomInToggled(
bool)));
 
 2991   connect(m_mapZoomOut, SIGNAL(toggled(
bool)), SLOT(onZoomOutToggled(
bool)));
 
 2992   connect(m_mapPreviousExtent, SIGNAL(triggered()), SLOT(onPreviousExtentTriggered()));
 
 2993   connect(m_mapNextExtent, SIGNAL(triggered()), SLOT(onNextExtentTriggered()));
 
 2994   connect(m_mapPan, SIGNAL(toggled(
bool)), SLOT(onPanToggled(
bool)));
 
 2995   connect(m_mapZoomExtent, SIGNAL(triggered()), SLOT(onZoomExtentTriggered()));
 
 2996   connect(m_mapInfo, SIGNAL(toggled(
bool)), SLOT(onInfoToggled(
bool)));
 
 2997   connect(m_mapRemoveSelection, SIGNAL(triggered()), SLOT(onMapRemoveSelectionTriggered()));
 
 2998   connect(m_mapSelection, SIGNAL(toggled(
bool)), SLOT(onSelectionToggled(
bool)));
 
 2999   connect(m_mapMeasureDistance, SIGNAL(toggled(
bool)), SLOT(onMeasureDistanceToggled(
bool)));
 
 3000   connect(m_mapMeasureArea, SIGNAL(toggled(
bool)), SLOT(onMeasureAreaToggled(
bool)));
 
 3001   connect(m_mapMeasureAngle, SIGNAL(toggled(
bool)), SLOT(onMeasureAngleToggled(
bool)));
 
 3002   connect(m_mapStopDrawing, SIGNAL(triggered()), SLOT(onStopDrawTriggered()));
 
 3003   connect(m_layerShowTable, SIGNAL(triggered()), SLOT(onLayerShowTableTriggered()));
 
 3004   connect(m_viewFullScreen, SIGNAL(toggled(
bool)), SLOT(onFullScreenToggled(
bool)));
 
 3005   connect(m_toolsDataSourceExplorer, SIGNAL(triggered()), SLOT(onDataSourceExplorerTriggered()));
 
A connector for the te::qt::widgets::LayerExplorer class to the Application Framework. 
 
This event signals that a new layer was created. 
 
void onRemoveLayerTriggered()
 
void resetTerraLib(const bool &status)
 
void onRenameLayerTriggered()
 
virtual void setConfigFile(const std::string &configFileName)
It gives access to the controller singleton. 
 
virtual void newProject()
 
void registerMenu(QMenu *mnu)
Register the mnu. 
 
virtual void initSlotsConnections()
 
void onZoomInToggled(bool checked)
 
double m_x
The x coordinate value. 
 
MapDisplay * getDisplay()
 
QMenu * m_recentProjectsMenu
 
This is the base class for layers. 
 
void onStopDrawTriggered()
 
te::map::AbstractLayerPtr m_layer
Layer whose selected objects were changed. 
 
It indicates that a new project was created. 
 
te::qt::af::DataSetTableDockWidget * GetLayerDock(const te::map::AbstractLayer *layer, const std::vector< te::qt::af::DataSetTableDockWidget * > &docs)
 
void onPanToggled(bool checked)
 
A for customization of the application components. 
 
virtual void initializePlugins()
Load the plugin list and initialize the plugins enabled by the user. 
 
void onLayerSelectedObjectsChanged(const te::map::AbstractLayerPtr &layer)
 
A class that models the description of a dataset. 
 
void onLayerPanToSelectedOnMapDisplayTriggered()
 
TEQTAFEXPORT QString GetWindowTitle(const Project &project)
Return a QString with the new window title based on the project informations. 
 
A base class for application events. 
 
virtual ~BaseApplication()
 
void onChangeLayerDataSourceTriggered()
 
virtual const char * what() const 
It outputs the exception message. 
 
void registerMenuBar(QMenuBar *bar)
Register the bar. 
 
void onChartDisplayCreated(te::qt::widgets::ChartDisplayWidget *chartDisplay, te::map::AbstractLayer *layer)
 
A connector for the te::qt::widgets::StyleDockWidget class to the Application Framework. 
 
A connector for the te::qt::widgets::LayerExplorer class to the Application Framework. 
 
TEQTAFEXPORT std::vector< QToolBar * > ReadToolBarsFromSettings(QWidget *barsParent=0)
Returns a vector of tool bars registered in the QSettings. 
 
This event indicates that the objects of the given layer must be highlighted. 
 
This event signals that the srid of the map display changed. 
 
A connector of the te::qt::widgets::MapDisplay class to the Application Framework. 
 
This class models the concept of a project for the TerraLib Application Framework. 
 
virtual void makeDialog()
 
A connector for the te::qt::widgets::StyleDockWidget class to the Application Framework. 
 
void setResetTerraLibFlag(const bool &status)
 
Contains a list of the map display events. 
 
double m_urx
Upper right corner x-coordinate. 
 
TEQTAFEXPORT QString UnsavedStar(const QString windowTitle, bool isUnsaved)
Unsaved star. 
 
void onMapRemoveSelectionTriggered()
 
A singleton for holding he application splash screen. 
 
void set(te::qt::af::Project *prj)
Set the current project. 
 
void onLayerPropertiesTriggered()
 
double getWidth() const 
It returns the envelope width. 
 
void onLayerSRSTriggered()
 
double m_y
The y coordinate value. 
 
virtual void initStatusBar()
 
void onStyleExplorerVisibilityChanged(bool visible)
 
void onZoomExtentTriggered()
 
An utility struct for representing 2D coordinates. 
 
A layer that can be used as a container for other kind of layers. 
 
void onAddFolderLayerTriggered()
 
TEQTAFEXPORT void SaveLastDatasourceOnSettings(const QString &dsType)
 
#define TE_TR(message)
It marks a string in order to get translated. 
 
TEQTAFEXPORT void SaveState(QMainWindow *mainWindow)
 
void onInfoToggled(bool checked)
 
This event indicates that the selected objects of the layer were changed. 
 
InterfaceController * getInterfaceController()
 
QMenu * m_toolsExchangerMenu
 
A dialog for edition of te::qt::af::Project informations. 
 
TEQTAFEXPORT void SaveDataSourcesFile()
Saves data sources file. 
 
void onLayerCompositionModeTriggered()
 
void onAddDataSetLayerTriggered()
 
virtual void initAction(QAction *&act, const QString &icon, const QString &name, const QString &text, const QString &tooltip, bool iconVisibleInMenu, bool isCheckable, bool enabled, QObject *parent)
 
virtual void initialize()
Initializes the application framework. 
 
virtual void setExtent(te::gm::Envelope &e, bool doRefresh=true)
It sets the world visible area and refreshes the contents in the map display. 
 
Contains the list of the project events. 
 
void onToolsQueryDataSourceTriggered()
 
virtual void initActions()
 
TEMAPEXPORT te::gm::Envelope GetSelectedExtent(const std::list< te::map::AbstractLayerPtr > layers, int srid, bool onlyVisibles)
It calculates the extent of selected objects of the given layers in the given SRID. 
 
void onMapSetUnknwonSRIDTriggered()
 
void onToolsCustomizeTriggered()
 
Coord2D getCenter() const 
It returns the rectangle's center coordinate. 
 
void onPreviousExtentTriggered()
 
std::list< te::map::AbstractLayerPtr > getAllLayers(bool invalid=true)
It gets all the layers (single and folder layers) of the project. 
 
double m_llx
Lower left corner x-coordinate. 
 
void onNewProjectTriggered()
 
A connector of the te::qt::widgets::MapDisplay class to the Application Framework. 
 
This class represents the informations needed to build map charts. 
 
static ApplicationController & getInstance()
It returns a reference to the singleton instance. 
 
void onMeasureAngleToggled(bool checked)
 
void onToolsDataExchangerTriggered()
 
An Envelope defines a 2D rectangular region. 
 
const std::string & getDataSourceId() const 
 
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib. 
 
void onSaveProjectTriggered()
 
void CloseAllTables(std::vector< te::qt::af::DataSetTableDockWidget * > &tables)
 
void setProjectAsChanged(const bool &changed)
It sets the project status as changed or not. 
 
void onMeasureDistanceToggled(bool checked)
 
void onToolsDataExchangerDirectPopUpTriggered()
 
void addListener(QObject *obj)
Insert an application item that will listen to framework events. 
 
virtual int getSRID() const 
It return the Spatial Reference System used by the Map Display. 
 
void onSelectionToggled(bool checked)
 
This class controls how a set of layers are displayed. 
 
Contains a list of the layer events. 
 
TEDATAACCESSEXPORT void Save(const std::string &fileName)
 
std::list< te::map::AbstractLayerPtr > getSingleLayers(bool invalid=true)
It gets all the single layers of the project. 
 
void onLayerRemoveItemTriggered()
 
TEQTAFEXPORT void GetProjectInformationsFromSettings(QString &defaultAuthor, int &maxSaved)
 
An exception class for the TerraLib Application Framework. 
 
void onLayerFitOnMapDisplayTriggered()
 
void onToolsFixGeometryTriggered()
 
virtual const te::gm::Envelope & getExtent() const 
It returns the world extent showned by the MapDisplay. 
 
void onMeasureAreaToggled(bool checked)
 
void onQueryLayerTriggered()
 
virtual void initializeProjectMenus()
Initializes the menus for the most recent open projects. 
 
QMenu * m_projectAddLayerMenu
 
void onRecentProjectsTriggered(QAction *proj)
 
const QString & getAppProjectExtension() const 
Returns the application project extension. 
 
void onLayerFitSelectedOnMapDisplayTriggered()
 
void showProgressDockWidget()
 
void onFullScreenToggled(bool checked)
 
void cancelTasks(unsigned int type)
Cancels the task with the given task type and inform all viewers that a task was canceled. 
 
TEQTAFEXPORT void RestoreState(QMainWindow *mainWindow)
 
void onProjectPropertiesTriggered()
 
void onLayerExplorerVisibilityChanged(bool visible)
 
void onMapSRIDTriggered()
 
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
 
TEQTAFEXPORT QString GetExtensionFilter()
Return extension filter string. 
 
void onLayerShowTableTriggered()
 
BaseApplication(QWidget *parent=0)
 
void onPluginsManagerTriggered()
 
This event signals that a item belonging to a layer will be removed from the layer explorer...
 
QMenu * m_viewToolBarsMenu
 
double m_lly
Lower left corner y-coordinate. 
 
Signals a mouse moved over the current display. 
 
void onOpenProjectTriggered()
 
virtual void closeEvent(QCloseEvent *e)
 
It indicates that the project has unsaved changes. 
 
void onLayerRemoveSelectionTriggered()
 
int addViewer(AbstractProgressViewer *apv)
Attach a progress viewer. 
 
A dataset is the unit of information manipulated by the data access module of TerraLib. 
 
void broadcast(te::qt::af::evt::Event *evt)
Send events in broadcast for all registered components. 
 
void onRestartSystemTriggered()
 
void onAddTabularLayerTriggered()
 
void onToolsDataExchangerDirectTriggered()
 
te::qt::af::Project * getProject()
Get the current project. 
 
TEQTAFEXPORT Project * ReadProject(const std::string &uri)
Reads and return a te::qt::af::Project from the file. 
 
double m_ury
Upper right corner y-coordinate. 
 
void onDisplayDataTableChanged(bool visible)
 
This class models the concept of a project for the TerraLib Application Framework. 
 
void onCreateNewLayer(te::map::AbstractLayerPtr layer)
 
void onSaveProjectAsTriggered()
 
void onLayerChartTriggered()
 
virtual void initToolbars()
 
void onUpdateLayerDataSourceTriggered()
 
void removeListener(QObject *obj)
Remove the obj from the list of event listeners. 
 
void onDataSourceExplorerTriggered()
 
void onZoomOutToggled(bool checked)
 
void onNextExtentTriggered()
 
TEQTAFEXPORT bool GetOpenLastProjectFromSettings()
 
void onAddQueryLayerTriggered()
 
void onHighlightLayerObjects(const te::map::AbstractLayerPtr &layer, te::da::DataSet *dataset, const QColor &color)
 
A layer with reference to a dataset. 
 
A connector to controll all non modal interfaces. 
 
virtual void openProject(const QString &projectFileName)
 
This event signals that a layer is to be removed from the layer explorer. 
 
QWidget * m_centralwidget
 
void clearAll()
Removes references for Viewers and tasks. 
 
QString getMostRecentProject() const 
Returns the most recent project. 
 
void onLayerScatterTriggered()
 
TEQTAFEXPORT void Save(const Project &project, const std::string &uri)
Saves the informations of the project in the uri file. 
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
 
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one. 
 
Contains the list of the application events. 
 
A QMainWindow to be used as the basis for TerraLib applications. 
 
virtual void resetState()
 
void onToolsRasterMultiResolutionTriggered()
 
double getHeight() const 
It returns the envelope height. 
 
void onLayerGroupingTriggered()
 
The base API for controllers of TerraLib applications. 
 
void onLayerHistogramTriggered()
 
virtual QMessageBox::StandardButton checkProjectSave()
 
void onApplicationTriggered(te::qt::af::evt::Event *evt)
 
bool isValid() const 
It tells if the rectangle is valid or not. 
 
void registerToolBar(const QString &id, QToolBar *bar)
Register the toolbar in the list of the known toolbars. 
 
A connector to controll all non modal interfaces. 
 
TEQTAFEXPORT QString GetLastDatasourceFromSettings()
 
virtual void finalize()
Finalize the application framework. 
 
void setProject(Project *proj)
Sets the project to be inspected. 
 
std::pair< int, std::string > m_srid
 
void onLayerTableClose(te::qt::af::DataSetTableDockWidget *wid)
 
void setDataSourceId(const std::string &id)
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
 
void updateRecentProjects(const QString &prjFile, const QString &prjTitle)
Update the list of recent projects. This is commonly used when there's a new most recent project...