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/dataset/ObjectIdSet.h" 
   35 #include "../../maptools/DataSetLayer.h" 
   36 #include "../../maptools/Utils.h" 
   37 #include "../../srs/Config.h" 
   38 #include "../../srs/SpatialReferenceSystemManager.h" 
   39 #include "../widgets/canvas/EyeBirdMapDisplayWidget.h" 
   40 #include "../widgets/canvas/MultiThreadMapDisplay.h" 
   41 #include "../widgets/canvas/ZoomInMapDisplayWidget.h" 
   42 #include "../widgets/charts/ChartLayerDialog.h" 
   43 #include "../widgets/charts/HistogramDialog.h" 
   44 #include "../widgets/charts/ScatterDialog.h" 
   45 #include "../widgets/datasource/core/DataSourceType.h" 
   46 #include "../widgets/datasource/core/DataSourceTypeManager.h" 
   47 #include "../widgets/datasource/selector/DataSourceExplorerDialog.h" 
   48 #include "../widgets/datasource/selector/DataSourceSelectorDialog.h" 
   49 #include "../widgets/exchanger/DataExchangerWizard.h" 
   50 #include "../widgets/exchanger/DirectExchangerDialog.h" 
   51 #include "../widgets/externalTable/DataPropertiesDialog.h" 
   52 #include "../widgets/help/HelpManager.h" 
   53 #include "../widgets/layer/explorer/ColorMapItem.h" 
   54 #include "../widgets/layer/explorer/ChartItem.h" 
   55 #include "../widgets/layer/explorer/GroupingItem.h" 
   56 #include "../widgets/layer/explorer/LayerExplorer.h" 
   57 #include "../widgets/layer/explorer/LayerTreeView.h" 
   58 #include "../widgets/layer/explorer/AbstractTreeItem.h" 
   59 #include "../widgets/layer/explorer/FolderLayerItem.h" 
   60 #include "../widgets/layer/info/LayerPropertiesInfoWidget.h" 
   61 #include "../widgets/layer/selector/AbstractLayerSelector.h" 
   62 #include "../widgets/plugin/manager/PluginManagerDialog.h" 
   63 #include "../widgets/progress/ProgressViewerBar.h" 
   64 #include "../widgets/progress/ProgressViewerDialog.h" 
   65 #include "../widgets/progress/ProgressViewerWidget.h" 
   66 #include "../widgets/query/QueryDataSourceDialog.h" 
   67 #include "../widgets/query/QueryDialog.h" 
   68 #include "../widgets/query/QueryLayerBuilderWizard.h" 
   69 #include "../widgets/se/GroupingDialog.h" 
   70 #include "../widgets/se/StyleDockWidget.h" 
   71 #include "../widgets/tools/Info.h" 
   72 #include "../widgets/tools/Measure.h" 
   73 #include "../widgets/tools/Pan.h" 
   74 #include "../widgets/tools/Selection.h" 
   75 #include "../widgets/tools/ZoomArea.h" 
   76 #include "../widgets/tools/ZoomClick.h" 
   77 #include "../widgets/srs/SRSManagerDialog.h" 
  100 #include <QActionGroup> 
  101 #include <QApplication> 
  102 #include <QCloseEvent> 
  103 #include <QDockWidget> 
  104 #include <QFileDialog> 
  105 #include <QInputDialog> 
  109 #include <QStatusBar> 
  111 #include <QToolButton> 
  119 #include <boost/filesystem.hpp> 
  120 #include <boost/format.hpp> 
  121 #include <boost/uuid/random_generator.hpp> 
  122 #include <boost/uuid/uuid_io.hpp> 
  127   std::vector<te::qt::af::DataSetTableDockWidget*>::const_iterator it;
 
  129   for(it=docs.begin(); it!=docs.end(); ++it)
 
  130     if((*it)->getLayer() == layer)
 
  138   std::vector<te::qt::af::DataSetTableDockWidget*>::iterator it;
 
  140   for(it=tables.begin(); it!=tables.end(); ++it)
 
  147   : QMainWindow(parent, 0),
 
  148     m_mapCursorSize(QSize(20, 20)),
 
  155     m_progressDockWidget(0),
 
  156     m_zoomInDisplaysDockWidget(0),
 
  157     m_eyeBirdDisplaysDockWidget(0),
 
  158     m_restartTerraLib(false)
 
  163   if (objectName().isEmpty())
 
  164     setObjectName(
"BaseApplicationForm");
 
  167   setMinimumSize(QSize(640, 480));
 
  208     m_iController->removeInteface(m_queryDlg);
 
  210   delete m_iController;
 
  213   delete m_styleExplorer;
 
  216   delete m_progressDockWidget;
 
  217   delete m_zoomInDisplaysDockWidget;
 
  218   delete m_eyeBirdDisplaysDockWidget;
 
  220   while(!m_tableDocks.empty())
 
  221     delete *m_tableDocks.begin();
 
  230   throw Exception(
"Not implemented yet!");
 
  241   catch(
const std::exception& e)
 
  243     QString msgErr(tr(
"Could not initialize the application: %1"));
 
  245     msgErr = msgErr.arg(e.what());
 
  264   catch(
const std::exception& e)
 
  266     QString msgErr(tr(
"Error loading plugins: %1"));
 
  268     msgErr = msgErr.arg(e.what());
 
  282       openProject(recentProject);
 
  286       QString msgErr(tr(
"Error loading the project: %1!"));
 
  288       msgErr = msgErr.arg(ex.
what());
 
  297   onSelectionToggled(
true);
 
  298   m_mapSelection->setChecked(
true);
 
  300   m_viewDataTable->setChecked(
false);
 
  301   m_viewDataTable->setEnabled(
false);
 
  317   m_restartTerraLib = !status;
 
  330       m_project->setProjectAsChanged(
true);
 
  337       QMainWindow::addToolBar(Qt::TopToolBarArea, e->
m_toolbar);
 
  344       QString text = 
"(" + QString::number(e->
m_x, 
'f', 5) + 
" , " + QString::number(e->
m_y, 
'f', 5) + 
")";
 
  345       m_coordinateLineEdit->setText(text);
 
  353       std::pair<int, std::string> srid = e->
m_srid;
 
  357         QString sridText(srid.second.c_str());
 
  358         sridText += 
":" + QString::number(srid.first);
 
  359         m_mapSRIDLineEdit->setText(sridText);
 
  363         m_mapSRIDLineEdit->setText(
"Unknown SRS");
 
  364         m_coordinateLineEdit->setText(
"Coordinates");
 
  375       m_selected->setText(tr(
"Selected rows: ")+QString::number(lEvt->
m_layer->getSelected()->size()));
 
  391     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  393     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  394       parentLayer = selectedLayerItems.front()->getLayer();
 
  401     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
  402       dselector->setDataSourceToUse(dsTypeSett);
 
  404     int retval = dselector->exec();
 
  406     if(retval == QDialog::Rejected)
 
  409     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
 
  411     if(selectedDatasources.empty())
 
  416     const std::string& dsTypeId = selectedDatasources.front()->getType();
 
  422     if(lselectorw.get() == 0)
 
  423       throw Exception((boost::format(
TE_TR(
"No layer selector widget found for this type of data source: %1%!")) % dsTypeId).str());
 
  428       throw Exception(
TE_TR(
"Wrong type of object for layer selection!"));
 
  430     lselector->
set(selectedDatasources);
 
  432     std::list<te::map::AbstractLayerPtr> layers = lselector->
getLayers();
 
  437       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  439     std::list<te::map::AbstractLayerPtr>::const_iterator it = layers.begin();
 
  440     std::list<te::map::AbstractLayerPtr>::const_iterator itend = layers.end();
 
  444       if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  457   catch(
const std::exception& e)
 
  463     QMessageBox::warning(
this,
 
  465                          tr(
"Unknown error while trying to add a layer from a dataset!"));
 
  474       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  479     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  481     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  482       parentLayer = selectedLayerItems.front()->getLayer();
 
  488     qlb->setLayerList(layers);
 
  490     int retval = qlb->exec();
 
  492     if(retval == QDialog::Rejected)
 
  497     if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  506   catch(
const std::exception& e)
 
  512     QMessageBox::warning(
this,
 
  514                          tr(
"Unknown error while trying to add a layer from a queried dataset!"));
 
  523       throw Exception(
TE_TR(
"Error: there is no opened project!"));
 
  528     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  530     if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  531       parentLayer = selectedLayerItems.front()->getLayer();
 
  534     int res = dlg.exec();
 
  535     if (res == QDialog::Accepted)
 
  537       if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
 
  547   catch(
const std::exception& e)
 
  553     QMessageBox::warning(
this,
 
  555                          tr(
"Unknown error while trying to add a layer from a queried dataset!"));
 
  565     doc->setWindowTitle(
"Histogram");
 
  566     doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
 
  570     addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
  573   catch(
const std::exception& e)
 
  581  std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  583   if(selectedLayerItems.empty())
 
  585     QString msg = tr(
"Select at least one layer to be removed!");
 
  586     QMessageBox::warning(
this, tr(
"Remove Layer"), msg);
 
  592   QString questionTitle;
 
  594   if(selectedLayerItems.size() == 1)
 
  596     msg = tr(
"Do you really want to remove the selected layer?");
 
  597     questionTitle = tr(
"Remove Layer");
 
  601     msg = tr(
"Do you really want to remove the selected layers?");
 
  602     questionTitle = tr(
"Remove Layers");
 
  605   int reply = QMessageBox::question(
this, questionTitle, msg, QMessageBox::No, QMessageBox::Yes);
 
  607   if(reply == QMessageBox::No)
 
  610   std::list<te::qt::widgets::AbstractTreeItem*>::const_iterator it;
 
  611   for(it = selectedLayerItems.begin();  it != selectedLayerItems.end(); ++it)
 
  622     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  629     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
  630       dselector->setDataSourceToUse(dsTypeSett);
 
  632     int retval = dselector->exec();
 
  634     if(retval == QDialog::Rejected)
 
  637     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
 
  639     if(selectedDatasources.empty())
 
  644     const std::string& dsId = selectedDatasources.front()->getId();
 
  656   catch(
const std::exception& e)
 
  662     QMessageBox::warning(
this,
 
  664                          tr(
"Unknown error while trying to change a layer data source!"));
 
  670   std::list<te::qt::widgets::AbstractTreeItem*> selectedItems = m_explorer->getExplorer()->getSelectedItems();
 
  672   std::list<te::qt::widgets::AbstractTreeItem*>::const_iterator it;
 
  673   for(it = selectedItems.begin();  it != selectedItems.end(); ++it)
 
  682  std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  684   if(selectedLayerItems.empty() ||
 
  685     (selectedLayerItems.size() == 1 &&  !selectedLayerItems.front()->getLayer()) ||
 
  686     selectedLayerItems.size() > 1)
 
  688     QString msg = tr(
"Select only one layer to be renamed!");
 
  689     QMessageBox::warning(
this, tr(
"Rename Layer"), msg);
 
  699                                        tr(
"Rename Layer:"), QLineEdit::Normal,
 
  700                                        layer->getTitle().c_str(), &ok);
 
  711   layer->setTitle(text.toStdString());
 
  724   catch(
const std::exception& e)
 
  732   QString projFile = proj->data().toString();
 
  734   openProject(projFile);
 
  746   QString file = QFileDialog::getOpenFileName(
this, tr(
"Open project file"), qApp->applicationDirPath(), tr(
"XML File (*.xml *.XML)"));
 
  757     QString msg = tr(
"Fail to open project.");
 
  766   std::string fName = m_project->getFileName();
 
  770     QString fileName = QFileDialog::getSaveFileName(
this, tr(
"Save Project File"), qApp->applicationDirPath(), tr(
"XML Files (*.xml *.XML)"));
 
  772     if(!fileName.isEmpty())
 
  774       QFileInfo info(fileName);
 
  776       if(info.suffix() != 
"xml")
 
  779       fName = fileName.toStdString();
 
  780       m_project->setFileName(fName);
 
  793   m_project->setProjectAsChanged(
false);
 
  800   wTitle += tr(
"Project:");
 
  803   wTitle += m_project->getTitle().c_str();
 
  805   setWindowTitle(wTitle);
 
  817   QString fileName = QFileDialog::getSaveFileName(
this, tr(
"Save Project File"), qApp->applicationDirPath(), tr(
"XML Files (*.xml *.XML)"));
 
  819   if(fileName.isEmpty())
 
  822   std::string fName = fileName.toStdString();
 
  824   m_project->setFileName(fName);
 
  834   m_project->setProjectAsChanged(
false);
 
  838   wTitle += tr(
"Project:");
 
  841   wTitle += m_project->getTitle().c_str();
 
  843   setWindowTitle(wTitle);
 
  850   QMessageBox msgBox(
this);
 
  852   msgBox.setText(tr(
"The system will be restarted."));
 
  853   msgBox.setInformativeText(tr(
"Do you want to continue?"));
 
  854   msgBox.setWindowTitle(tr(
"Restart system"));
 
  856   msgBox.addButton(QMessageBox::No);
 
  857   msgBox.addButton(QMessageBox::Yes);
 
  859   msgBox.setDefaultButton(QMessageBox::Yes);
 
  861   if(msgBox.exec() == QMessageBox::Yes)
 
  872   catch(
const std::exception& e)
 
  885   catch(
const std::exception& e)
 
  902     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
  907   catch(
const std::exception& e)
 
  919     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
  921     if(selectedLayerItems.empty())
 
  924                            tr(
"Select a single layer in the layer explorer!"));
 
  931     std::list<te::map::AbstractLayerPtr> layers;
 
  932     layers.push_back(selectedLayer);
 
  938   catch(
const std::exception& e)
 
  955   catch(
const std::exception& e)
 
  972   if(editor.exec() == QDialog::Accepted)
 
  976     title += tr(
"Project:");
 
  978     title += m_project->getTitle().c_str();
 
  980     setWindowTitle(title);
 
  989   std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
 
  991   if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() == 
"FOLDER_LAYER_ITEM")
 
  992     parentLayer = selectedLayerItems.front()->getLayer();
 
  997                                       tr(
"Folder layer name:"), QLineEdit::Normal,
 
  998                                       tr(
"Enter folder layer name"), &ok);
 
 1009   static boost::uuids::basic_random_generator<boost::mt19937> gen;
 
 1010   boost::uuids::uuid u = gen();
 
 1011   std::string 
id = boost::uuids::to_string(u);
 
 1014   folderLayer->setTitle(text.toStdString());
 
 1015   folderLayer->setId(
id);
 
 1026   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
 
 1035   QDockWidget* doc = 
new QDockWidget(
this, Qt::Dialog);
 
 1039   doc->setWidget(info);
 
 1040   doc->setWindowTitle(info->windowTitle());
 
 1041   doc->setAttribute(Qt::WA_DeleteOnClose, 
true);
 
 1048   std::list<te::map::AbstractLayerPtr> layers =  m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1056   std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
 
 1058   while(it != layers.end())
 
 1062     if(!layer->isValid())
 
 1068     layer->clearSelected();
 
 1079   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
 
 1087   srsDialog.setWindowTitle(tr(
"Choose the SRS"));
 
 1089   if(srsDialog.exec() == QDialog::Rejected)
 
 1096   lay->setSRID(srid.first);
 
 1101   std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
 
 1110       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = layers.begin();
 
 1112       while(it != layers.end())
 
 1114         if(!(*it)->getLayer()->isValid())
 
 1117                            tr(
"There are invalid layers selected!"));
 
 1128   if (lay->getSchema()->hasRaster())
 
 1137     addDockWidget(Qt::BottomDockWidgetArea, doc);
 
 1142     if(!m_tableDocks.empty())
 
 1143       tabifyDockWidget(m_tableDocks[m_tableDocks.size()-1], doc);
 
 1145     m_tableDocks.push_back(doc);
 
 1155   m_viewDataTable->setChecked(
true);
 
 1157   m_viewDataTable->setEnabled(
true);
 
 1164     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1166     if(selectedLayers.empty())
 
 1169                            tr(
"Select a layer in the layer explorer!"));
 
 1174       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1176       while(it != selectedLayers.end())
 
 1178         if(!it->get()->isValid())
 
 1181                            tr(
"There are invalid layers selected!"));
 
 1199     int res = dlg.exec();
 
 1200     if (res == QDialog::Accepted)
 
 1204       doc->setWindowTitle(
"Histogram");
 
 1205       doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
 
 1206       doc->
setLayer(selectedLayer.get());
 
 1209       addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
 1213   catch(
const std::exception& e)
 
 1223     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1225     if(selectedLayers.empty())
 
 1228                            tr(
"Select a layer in the layer explorer!"));
 
 1233       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1235       while(it != selectedLayers.end())
 
 1237         if(!it->get()->isValid())
 
 1240                            tr(
"There are invalid layers selected!"));
 
 1257     int res = dlg.exec();
 
 1258     if (res == QDialog::Accepted)
 
 1263       doc->setWindowTitle(
"Scatter");
 
 1264       doc->setWindowIcon(QIcon::fromTheme(
"chart-scatter"));
 
 1266       doc->
setLayer(selectedLayer.get());
 
 1268       addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
 
 1272   catch(
const std::exception& e)
 
 1282     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1284     if(selectedLayerItems.empty())
 
 1287                            tr(
"Select a single layer in the layer explorer!"));
 
 1292       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
 
 1294       while(it != selectedLayerItems.end())
 
 1296         if(!(*it)->getLayer()->isValid())
 
 1299                            tr(
"There are invalid layers selected!"));
 
 1325       m_explorer->getExplorer()->remove(chartItem);
 
 1329     m_explorer->getExplorer()->collapse(selectedLayerItem);
 
 1331     if(dlg.exec() == QDialog::Accepted)
 
 1334       m_explorer->getExplorer()->expand(selectedLayerItem);
 
 1338         m_explorer->getExplorer()->expand(chartItem);
 
 1340       m_display->getDisplay()->refresh();
 
 1347   catch(
const std::exception& e)
 
 1357     std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1359     if(selectedLayerItems.empty())
 
 1362                            tr(
"Select a single layer in the layer explorer!"));
 
 1367       std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
 
 1369       while(it != selectedLayerItems.end())
 
 1371         if(!(*it)->getLayer()->isValid())
 
 1374                            tr(
"There are invalid layers selected!"));
 
 1388     std::list<te::map::AbstractLayerPtr> allLayersList = m_explorer->getExplorer()->getTopLayers();
 
 1389     std::vector<te::map::AbstractLayerPtr> allLayers(allLayersList.begin(), allLayersList.end());
 
 1392     dlg.setLayers(selectedLayer, allLayers);
 
 1398       m_explorer->getExplorer()->remove(groupingItem);
 
 1404       m_explorer->getExplorer()->remove(cmi);
 
 1408     m_explorer->getExplorer()->collapse(selectedLayerItem);
 
 1410     if(dlg.exec() == QDialog::Accepted)
 
 1413       m_explorer->getExplorer()->expand(selectedLayerItem);
 
 1417         m_explorer->getExplorer()->expand(groupingItem);
 
 1421         m_explorer->getExplorer()->expand(cmi);
 
 1423       m_display->getDisplay()->refresh();
 
 1430   catch(
const std::exception& e)
 
 1439   srsDialog.setWindowTitle(tr(
"Choose the SRS"));
 
 1441   if(srsDialog.exec() == QDialog::Rejected)
 
 1449   m_display->getDisplay()->setSRID(srid.first);
 
 1454   std::pair<int, std::string> srid = std::make_pair(
TE_UNKNOWN_SRS, 
"");
 
 1473     std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1475     if(selectedLayers.empty())
 
 1478                            tr(
"Select a layer in the layer explorer!"));
 
 1483       std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1485       while(it != selectedLayers.end())
 
 1487         if(!it->get()->isValid())
 
 1490                            tr(
"There are invalid layers selected!"));
 
 1515                            TE_TR(
"The spatial reference system of the map display and the layer are not compatible!"));
 
 1519     if(display->
getSRID() != selectedLayer->getSRID())
 
 1524   catch(
const std::exception& e)
 
 1532   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1533   if(selectedLayers.empty())
 
 1535     QString msg = tr(
"Select at least a layer to accomplish this operation!");
 
 1541     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1543     while(it != selectedLayers.end())
 
 1545       if(!it->get()->isValid())
 
 1548                           tr(
"There are invalid layers selected!"));
 
 1560     QString msg = tr(
"Select object(s) in the selected layer(s) to accomplish this operation!");
 
 1565   m_display->getDisplay()->setExtent(finalEnv, 
true);
 
 1570   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1571   if(selectedLayers.empty())
 
 1573     QString msg = tr(
"Select at least a layer to accomplish this operation!");
 
 1579     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1581     while(it != selectedLayers.end())
 
 1583       if(!it->get()->isValid())
 
 1586                           tr(
"There are invalid layers selected!"));
 
 1602   double halfWidth = displayExtent.
getWidth() * 0.5;
 
 1603   double halfHeight = displayExtent.
getHeight() * 0.5;
 
 1607   newExtent.
m_llx = centerOfSelectedExtent.x - halfWidth;
 
 1608   newExtent.
m_lly = centerOfSelectedExtent.y - halfHeight;
 
 1610   newExtent.
m_urx = centerOfSelectedExtent.x + halfWidth;
 
 1611   newExtent.
m_ury = centerOfSelectedExtent.y + halfHeight;
 
 1618   std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
 
 1620   if(selectedLayers.empty())
 
 1623                          tr(
"Select a layer in the layer explorer!"));
 
 1628     std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
 
 1630     while(it != selectedLayers.end())
 
 1632       if(!it->get()->isValid())
 
 1635                           tr(
"There are invalid layers selected!"));
 
 1654       m_iController->addInterface(m_queryDlg);
 
 1658     m_queryDlg->setLayerList(m_project->getTopLayers());
 
 1660   std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
 
 1662   if(!selectedLayerItems.empty())
 
 1667     m_queryDlg->setCurrentLayer(selectedLayer);
 
 1678   QCursor zoomAreaCursor(QIcon::fromTheme(
"zoom-in").pixmap(m_mapCursorSize));
 
 1681   m_display->setCurrentTool(zoomArea);
 
 1692   QCursor zoomOutCursor(QIcon::fromTheme(
"zoom-out").pixmap(m_mapCursorSize));
 
 1695   m_display->setCurrentTool(zoomOut);
 
 1703   m_display->previousExtent();
 
 1708   m_display->nextExtent();
 
 1717   m_display->setCurrentTool(pan);
 
 1725   if(!m_project && m_project->getTopLayers().empty())
 
 1738   QPixmap pxmap = QIcon::fromTheme(
"pointer-info").pixmap(m_mapCursorSize);
 
 1739   QCursor infoCursor(pxmap, 0, 0);
 
 1742   m_display->setCurrentTool(info);
 
 1744   connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), info, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
 
 1751   std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
 
 1753   while(it != layers.end())
 
 1757     layer->clearSelected();
 
 1772   m_display->setCurrentTool(selection);
 
 1774   connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), selection, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
 
 1786   QCursor measureDistanceCursor(QIcon::fromTheme(
"distance-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 1789   m_display->setCurrentTool(distance);
 
 1797   QCursor measureAreaCursor(QIcon::fromTheme(
"area-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 1800   m_display->setCurrentTool(area);
 
 1808   QCursor measureAngleCursor(QIcon::fromTheme(
"angle-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
 
 1811   m_display->setCurrentTool(angle);
 
 1821   m_progressDockWidget->setVisible(
true);
 
 1826   std::vector<DataSetTableDockWidget*>::iterator it;
 
 1828   for(it=m_tableDocks.begin(); it!=m_tableDocks.end(); ++it)
 
 1832   if(it != m_tableDocks.end())
 
 1833     m_tableDocks.erase(it);
 
 1835   if(m_tableDocks.empty())
 
 1837     m_viewDataTable->setChecked(
false);
 
 1838     m_viewDataTable->setEnabled(
false);
 
 1846   checked ? showFullScreen() : showMaximized();
 
 1851   assert(layer.get());
 
 1859   assert(layer.get());
 
 1868   m_viewLayerExplorer->blockSignals(
true);
 
 1869   m_viewLayerExplorer->setChecked(visible);
 
 1870   m_viewLayerExplorer->blockSignals(
false);
 
 1875   m_viewMapDisplay->blockSignals(
true);
 
 1876   m_viewMapDisplay->setChecked(visible);
 
 1877   m_viewMapDisplay->blockSignals(
false);
 
 1882   if(m_tableDocks.empty())
 
 1885   for(std::size_t i = 0; i < m_tableDocks.size(); ++i)
 
 1888       m_tableDocks[i]->show();
 
 1890       m_tableDocks[i]->hide();
 
 1893   m_viewDataTable->setChecked(visible);
 
 1898   m_viewStyleExplorer->blockSignals(
true);
 
 1899   m_viewStyleExplorer->setChecked(visible);
 
 1900   m_viewStyleExplorer->blockSignals(
false);
 
 1911     if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
 
 1912       dExplorer->setDataSourceToUse(dsTypeSett);
 
 1915     int retval = dExplorer->exec();
 
 1917     if(retval == QDialog::Rejected)
 
 1920     std::list<te::da::DataSourceInfoPtr> selectedDatasources = dExplorer->getSelecteds();
 
 1922     if(selectedDatasources.empty())
 
 1927     const std::string& dsTypeId = selectedDatasources.front()->getType();
 
 1931   catch(
const std::exception& e)
 
 1937     QMessageBox::warning(
this,
 
 1939                          tr(
"DataSetExplorer Error!"));
 
 1970     if(checkProjectSave() == QMessageBox::Cancel)
 
 1973     if(!boost::filesystem::exists(projectFileName.toStdString()))
 
 1985     m_project = nproject;
 
 1997     wTitle += tr(
"Project:");
 
 2000     wTitle += m_project->getTitle().c_str();
 
 2002     setWindowTitle(wTitle);
 
 2016     QString msg(tr(
"Fail to open project: %1"));
 
 2018     msg = msg.arg(projectFileName);
 
 2020     throw Exception(
TE_TR(msg.toStdString()));
 
 2026   if(m_project != 0 && m_project->hasChanged())
 
 2028     QString msg(
"The current project has unsaved changes. Do you want to save them?");
 
 2032       onSaveProjectTriggered();
 
 2037   return QMessageBox::NoButton;
 
 2042   if(checkProjectSave() == QMessageBox::Cancel)
 
 2056   m_project->setTitle(tr(
"New Project").toStdString());
 
 2058   m_project->setAuthor(author.toStdString());
 
 2064   wTitle += tr(
"Project:");
 
 2067   wTitle += m_project->getTitle().c_str();
 
 2069   setWindowTitle(wTitle);
 
 2073   m_project->setProjectAsChanged(
false);
 
 2088   initSlotsConnections();
 
 2093   QAction* act = 
new QAction(
this);
 
 2094   act->setSeparator(
true);
 
 2097   lexplorer->setObjectName(
"LayerExplorerDockWidget");
 
 2099   treeView->setAnimated(
true);
 
 2109   QAction* noItemSelectedSep = 
new QAction(
this);
 
 2110   noItemSelectedSep->setSeparator(
true);
 
 2118   treeView->
add(m_projectAddLayerMenu->menuAction(), 
"", 
"FOLDER_LAYER_ITEM");
 
 2120   QAction* folderSep1 = 
new QAction(
this);
 
 2121   folderSep1->setSeparator(
true);
 
 2122   treeView->
add(folderSep1, 
"", 
"FOLDER_LAYER_ITEM");
 
 2124   treeView->
add(m_projectAddFolderLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2126   QAction* folderSep2 = 
new QAction(
this);
 
 2127   folderSep2->setSeparator(
true);
 
 2128   treeView->
add(folderSep2, 
"", 
"FOLDER_LAYER_ITEM");
 
 2130   treeView->
add(m_projectRemoveLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2131   treeView->
add(m_projectRenameLayer, 
"", 
"FOLDER_LAYER_ITEM");
 
 2134   treeView->
add(m_layerObjectGrouping);
 
 2135   treeView->
add(m_toolsDataExchangerDirectPopUp);
 
 2136   treeView->
add(m_layerChartsHistogram);
 
 2137   treeView->
add(m_layerChart);
 
 2138   treeView->
add(m_queryLayer);
 
 2139   treeView->
add(m_layerChartsScatter);
 
 2141   QAction* actionChartSep = 
new QAction(
this);
 
 2142   actionChartSep->setSeparator(
true);
 
 2143   treeView->
add(actionChartSep);
 
 2145   treeView->
add(m_layerShowTable);
 
 2146   treeView->
add(m_viewStyleExplorer);
 
 2148   QAction* actionStyleSep = 
new QAction(
this);
 
 2149   actionStyleSep->setSeparator(
true);
 
 2150   treeView->
add(actionStyleSep);
 
 2152   treeView->
add(m_layerRemoveObjectSelection);
 
 2153   treeView->
add(m_projectRemoveLayer);
 
 2154   treeView->
add(m_projectRenameLayer);
 
 2156   QAction* actionRemoveSep = 
new QAction(
this);
 
 2157   actionRemoveSep->setSeparator(
true);
 
 2158   treeView->
add(actionRemoveSep);
 
 2160   treeView->
add(m_layerFitOnMapDisplay);
 
 2161   treeView->
add(m_layerFitSelectedOnMapDisplay);
 
 2162   treeView->
add(m_layerPanToSelectedOnMapDisplay);
 
 2164   QAction* actionFitSep = 
new QAction(
this);
 
 2165   actionFitSep->setSeparator(
true);
 
 2166   treeView->
add(actionFitSep);
 
 2168   treeView->
add(m_layerSRS);
 
 2170   QAction* actionSRSSep = 
new QAction(
this);
 
 2171   actionSRSSep->setSeparator(
true);
 
 2172   treeView->
add(actionSRSSep);
 
 2174   treeView->
add(m_layerProperties);
 
 2177   treeView->
add(m_layerRemoveItem, 
"", 
"ITEM_OF_LAYER");
 
 2180   treeView->
add(m_layerObjectGrouping, 
"", 
"RASTER_LAYER_ITEM");
 
 2181   treeView->
add(m_layerChartsHistogram, 
"", 
"RASTER_LAYER_ITEM");
 
 2182   treeView->
add(m_layerChartsScatter, 
"", 
"RASTER_LAYER_ITEM");
 
 2184   QAction* rasterSep1 = 
new QAction(
this);
 
 2185   rasterSep1->setSeparator(
true);
 
 2186   treeView->
add(rasterSep1, 
"", 
"RASTER_LAYER_ITEM");
 
 2188   treeView->
add(m_viewStyleExplorer, 
"", 
"RASTER_LAYER_ITEM");
 
 2190   QAction* rasterSep2 = 
new QAction(
this);
 
 2191   rasterSep2->setSeparator(
true);
 
 2192   treeView->
add(rasterSep2, 
"", 
"RASTER_LAYER_ITEM");
 
 2194   treeView->
add(m_projectRemoveLayer, 
"", 
"RASTER_LAYER_ITEM");
 
 2195   treeView->
add(m_projectRenameLayer, 
"", 
"RASTER_LAYER_ITEM");
 
 2197   QAction* rasterSep3 = 
new QAction(
this);
 
 2198   rasterSep3->setSeparator(
true);
 
 2199   treeView->
add(rasterSep3, 
"", 
"RASTER_LAYER_ITEM");
 
 2201   treeView->
add(m_layerFitOnMapDisplay, 
"", 
"RASTER_LAYER_ITEM");
 
 2203   QAction* rasterSep4 = 
new QAction(
this);
 
 2204   rasterSep4->setSeparator(
true);
 
 2205   treeView->
add(rasterSep4, 
"", 
"RASTER_LAYER_ITEM");
 
 2207   treeView->
add(m_layerSRS, 
"", 
"RASTER_LAYER_ITEM");
 
 2209   QAction* rasterSep5 = 
new QAction(
this);
 
 2210   rasterSep5->setSeparator(
true);
 
 2211   treeView->
add(rasterSep5, 
"", 
"RASTER_LAYER_ITEM");
 
 2213   treeView->
add(m_layerProperties, 
"", 
"RASTER_LAYER_ITEM");
 
 2217   treeView->
add(m_projectChangeLayerDataSource, 
"", 
"INVALID_LAYER_ITEM");
 
 2218   treeView->
add(m_projectRemoveLayer, 
"", 
"INVALID_LAYER_ITEM");
 
 2228   QAction* multipleSelectedSep = 
new QAction(
this);
 
 2229   multipleSelectedSep->setSeparator(
true);
 
 2236   QMainWindow::addDockWidget(Qt::LeftDockWidgetArea, lexplorer);
 
 2238   connect(m_viewLayerExplorer, SIGNAL(toggled(
bool)), lexplorer, SLOT(setVisible(
bool)));
 
 2239   m_viewLayerExplorer->setChecked(
true);
 
 2240   connect(lexplorer, SIGNAL(visibilityChanged(
bool)), 
this, SLOT(onLayerExplorerVisibilityChanged(
bool)));
 
 2249   connect(m_display, SIGNAL(hasPreviousExtent(
bool)), m_mapPreviousExtent, SLOT(setEnabled(
bool)));
 
 2250   connect(m_display, SIGNAL(hasNextExtent(
bool)), m_mapNextExtent, SLOT(setEnabled(
bool)));
 
 2254   stylelDock->setObjectName(
"StyleDockWidget");
 
 2255   QMainWindow::addDockWidget(Qt::RightDockWidgetArea, stylelDock);
 
 2256   stylelDock->connect(m_viewStyleExplorer, SIGNAL(toggled(
bool)), SLOT(setVisible(
bool)));
 
 2257   m_viewStyleExplorer->setChecked(
false);
 
 2258   stylelDock->setVisible(
false);
 
 2259   connect(stylelDock, SIGNAL(visibilityChanged(
bool)), 
this, SLOT(onStyleExplorerVisibilityChanged(
bool)));
 
 2260   connect(stylelDock, SIGNAL(repaintMapDisplay()), 
this, SLOT(onDrawTriggered()));
 
 2284   QDockWidget* doc = 
new QDockWidget(tr(
"Map Display"), 
this);
 
 2285   doc->setWidget(map);
 
 2286   QMainWindow::setCentralWidget(doc);
 
 2287   doc->connect(m_viewMapDisplay, SIGNAL(toggled(
bool)), SLOT(setVisible(
bool)));
 
 2288   m_viewMapDisplay->setChecked(
true);
 
 2289   connect(doc, SIGNAL(visibilityChanged(
bool)), 
this, SLOT(onDisplayVisibilityChanged(
bool)));
 
 2292   connect(m_viewDataTable, SIGNAL(toggled(
bool)), 
this, SLOT(onDisplayDataTableChanged(
bool)));
 
 2304   pvb->setFixedWidth(220);
 
 2310   m_statusbar->addPermanentWidget(pvb);
 
 2312   connect(pvb, SIGNAL(clicked()), 
this, SLOT(showProgressDockWidget()));
 
 2314   m_progressDockWidget = 
new QDockWidget(
this);
 
 2315   m_progressDockWidget->setObjectName(
"ProgressDockWidget");
 
 2316   m_progressDockWidget->setWidget(pvw);
 
 2317   m_progressDockWidget->setMinimumHeight(300);
 
 2318   m_progressDockWidget->setAllowedAreas(Qt::RightDockWidgetArea);
 
 2319   m_progressDockWidget->setWindowTitle(tr(
"Tasks Progress"));
 
 2320   addDockWidget(Qt::RightDockWidgetArea, m_progressDockWidget);
 
 2321   m_progressDockWidget->setVisible(
false);
 
 2326   if(checkProjectSave() == QMessageBox::Cancel)
 
 2332   emit applicationClose(); 
 
 2338                                              const QString& text, 
const QString& tooltip,
 
 2339                                              bool iconVisibleInMenu, 
bool isCheckable,
 
 2340                                              bool enabled, QObject* parent)
 
 2342   act = 
new QAction (parent);
 
 2345     act->setIcon(QIcon::fromTheme(icon));
 
 2347   act->setObjectName(name);
 
 2349   act->setIconVisibleInMenu(iconVisibleInMenu);
 
 2350   act->setCheckable(isCheckable);
 
 2351   act->setEnabled(enabled);
 
 2353 #ifndef QT_NO_TOOLTIP 
 2354   act->setToolTip(tooltip);
 
 2361   initAction(m_viewLayerExplorer, 
"view-layer-explorer", 
"View.Layer Explorer", tr(
"&Layer Explorer"), tr(
"Show or hide the layer explorer"), 
true, 
true, 
true, m_menubar);
 
 2362   initAction(m_viewMapDisplay, 
"view-map-display", 
"View.Map Display", tr(
"&Map Display"), tr(
"Show or hide the map display"), 
true, 
true, 
true, m_menubar);
 
 2363   initAction(m_viewDataTable, 
"view-data-table", 
"View.Data Table", tr(
"&Data Table"), tr(
"Show or hide the data table"), 
true, 
true, 
true, m_menubar);
 
 2364   initAction(m_viewStyleExplorer, 
"style", 
"View.Style Explorer", tr(
"&Style Explorer"), tr(
"Show or hide the style explorer"), 
true, 
true, 
true, m_menubar);
 
 2365   initAction(m_viewFullScreen, 
"view-fullscreen", 
"View.Full Screen", tr(
"F&ull Screen"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2371   initAction(m_toolsCustomize, 
"preferences-system", 
"Tools.Customize", tr(
"&Customize..."), tr(
"Customize the system preferences"), 
true, 
false, 
true, m_menubar);
 
 2372   initAction(m_toolsDataExchanger, 
"datasource-exchanger", 
"Tools.Exchanger.All to All", tr(
"&Advanced..."), tr(
"Exchange data sets between data sources"), 
true, 
false, 
true, m_menubar);
 
 2373   initAction(m_toolsDataExchangerDirect, 
"data-exchange-direct-icon", 
"Tools.Exchanger.Direct", tr(
"&Layer..."), tr(
"Exchange data sets from layers"), 
true, 
false, 
true, m_menubar);
 
 2374   initAction(m_toolsDataExchangerDirectPopUp, 
"data-exchange-direct-icon", 
"Tools.Exchanger.Direct", tr(
"&Exchange..."), tr(
"Exchange data sets from layers"), 
true, 
false, 
true, m_menubar);
 
 2375   initAction(m_toolsDataSourceExplorer, 
"datasource-explorer", 
"Tools.Data Source Explorer", tr(
"&Data Source Explorer..."), tr(
"Show or hide the data source explorer"), 
 
 2376     true, 
false, 
true, m_menubar);
 
 2377   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);
 
 2392   initAction(m_pluginsManager, 
"plugin", 
"Plugins.Management", tr(
"&Manage Plugins..."), tr(
"Manage the application plugins"), 
true, 
false, 
true, m_menubar);
 
 2395   initAction(m_helpContents, 
"help-browser", 
"Help.View Help", tr(
"&View Help..."), tr(
"Shows help dialog"), 
true, 
false, 
true, m_menubar);
 
 2397   initAction(m_helpAbout, 
"help-about-browser", 
"Help.About", tr(
"&About..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2400   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);
 
 2401   initAction(m_projectAddFolderLayer, 
"folderlayer-new", 
"Project.New Folder Layer", tr(
"Add &Folder Layer..."), tr(
"Add a new folder layer"), 
true, 
false, 
true, m_menubar);
 
 2402   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);
 
 2403   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);
 
 2404   initAction(m_projectRemoveLayer, 
"layer-remove", 
"Project.Remove Layer", tr(
"&Remove Layer(s)"), tr(
"Remove layer(s) from the project"), 
true, 
false, 
true, 
this);
 
 2405   initAction(m_projectRenameLayer, 
"layer-rename", 
"Project.Rename Layer", tr(
"Rename Layer..."), tr(
"Rename layer"), 
true, 
false, 
true, 
this);
 
 2406   initAction(m_projectChangeLayerDataSource, 
"", 
"Project.Change Layer Data Source", tr(
"&Change Layer Data Source"), tr(
"Chanage layer Data Source"), 
true, 
false, 
true, 
this);
 
 2407   initAction(m_projectProperties, 
"document-info", 
"Project.Properties", tr(
"&Properties..."), tr(
"Show the project properties"), 
true, 
false, 
true, m_menubar);
 
 2411   initAction(m_layerRemoveObjectSelection, 
"pointer-remove-selection", 
"Layer.Remove Selection", tr(
"&Remove Selection"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2412   initAction(m_layerRemoveItem, 
"item-remove", 
"Layer.Remove Item", tr(
"&Remove Item"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2413   initAction(m_layerObjectGrouping, 
"grouping", 
"Layer.ObjectGrouping", tr(
"&Classification..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2414   initAction(m_layerProperties, 
"layer-info", 
"Layer.Properties", tr(
"&Properties..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2415   initAction(m_layerSRS, 
"layer-srs", 
"Layer.SRS", tr(
"&Inform SRS..."), tr(
""), 
true, 
false, 
true, m_menubar);  
 
 2416   initAction(m_layerShowTable, 
"view-data-table", 
"Layer.Show Table", tr(
"S&how Table"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2417   initAction(m_layerChartsHistogram, 
"chart-bar", 
"Layer.Charts.Histogram", tr(
"&Histogram..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2418   initAction(m_layerChartsScatter, 
"chart-scatter", 
"Layer.Charts.Scatter", tr(
"&Scatter..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2419   initAction(m_layerChart, 
"chart-pie", 
"Layer.Charts.Chart", tr(
"&Pie/Bar Chart..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2420   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);
 
 2421   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);
 
 2422   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);
 
 2423   initAction(m_queryLayer, 
"view-filter", 
"Layer.Query", tr(
"Query..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2426   initAction(m_fileNewProject, 
"document-new", 
"File.New Project", tr(
"&New Project..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2427   initAction(m_fileSaveProject, 
"document-save", 
"File.Save Project", tr(
"&Save Project"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2428   initAction(m_fileSaveProjectAs, 
"document-save-as", 
"File.Save Project As", tr(
"Save Project &As..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2429   initAction(m_fileOpenProject, 
"document-open", 
"File.Open Project", tr(
"&Open Project..."), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2430   initAction(m_fileRestartSystem, 
"", 
"File.Restart System", tr(
"&Restart System..."), tr(
"Restart the system."), 
true, 
false, 
true, m_menubar);
 
 2431   initAction(m_fileExit, 
"system-log-out", 
"File.Exit", tr(
"E&xit"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2432   initAction(m_filePrintPreview, 
"document-print-preview", 
"File.Print Preview", tr(
"Print Pre&view..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2433   initAction(m_filePrint, 
"document-print", 
"File.Print", tr(
"&Print..."), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2436   initAction(m_mapSRID, 
"srs", 
"Map.SRID", tr(
"&SRS..."), tr(
"Config the Map SRS"), 
true, 
false, 
true, m_menubar);
 
 2437   initAction(m_mapUnknownSRID, 
"srs-unknown", 
"Map.UnknownSRID", tr(
"&Set Unknown SRS"), tr(
"Set the Map SRS to unknown"), 
true, 
false, 
true, m_menubar);
 
 2438   initAction(m_mapDraw, 
"map-draw", 
"Map.Draw", tr(
"&Draw"), tr(
"Draw the visible layers"), 
true, 
false, 
true, m_menubar);
 
 2439   initAction(m_mapZoomIn, 
"zoom-in", 
"Map.Zoom In", tr(
"Zoom &In"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2440   initAction(m_mapZoomOut, 
"zoom-out", 
"Map.Zoom Out", tr(
"Zoom &Out"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2441   initAction(m_mapPan, 
"pan", 
"Map.Pan", tr(
"&Pan"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2442   initAction(m_mapZoomExtent, 
"zoom-extent", 
"Map.Zoom Extent", tr(
"Zoom &Extent"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2443   initAction(m_mapPreviousExtent, 
"edit-undo", 
"Map.Previous Extent", tr(
"&Previous Extent"), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2444   initAction(m_mapNextExtent, 
"edit-redo", 
"Map.Next Extent", tr(
"&Next Extent"), tr(
""), 
true, 
false, 
false, m_menubar);
 
 2445   initAction(m_mapInfo, 
"pointer-info", 
"Map.Info", tr(
"&Info"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2446   initAction(m_mapRemoveSelection, 
"pointer-remove-selection", 
"Map.Remove Selection", tr(
"&Remove Selection"), tr(
""), 
true, 
false, 
true, m_menubar);
 
 2447   initAction(m_mapSelection, 
"pointer-selection", 
"Map.Selection", tr(
"&Selection"), tr(
""), 
true, 
true, 
true, m_menubar);  
 
 2448   initAction(m_mapMeasureDistance, 
"distance-measure", 
"Map.Measure Distance", tr(
"Measure &Distance"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2449   initAction(m_mapMeasureArea, 
"area-measure", 
"Map.Measure Area", tr(
"Measure &Area"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2450   initAction(m_mapMeasureAngle, 
"angle-measure", 
"Map.Measure Angle", tr(
"Measure &Angle"), tr(
""), 
true, 
true, 
true, m_menubar);
 
 2451   initAction(m_mapStopDrawing, 
"map-draw-cancel", 
"Map.Stop Drawing", tr(
"&Stop Drawing"), tr(
"Stop all drawing tasks"), 
true, 
false, 
true, m_menubar);
 
 2454   QActionGroup* mapToolsGroup = 
new QActionGroup(
this);
 
 2455   mapToolsGroup->addAction(m_mapZoomIn);
 
 2456   mapToolsGroup->addAction(m_mapZoomOut);
 
 2457   mapToolsGroup->addAction(m_mapPan);
 
 2458   mapToolsGroup->addAction(m_mapMeasureDistance);
 
 2459   mapToolsGroup->addAction(m_mapMeasureArea);
 
 2460   mapToolsGroup->addAction(m_mapMeasureAngle);
 
 2461   mapToolsGroup->addAction(m_mapInfo);
 
 2462   mapToolsGroup->addAction(m_mapSelection);
 
 2463   mapToolsGroup->addAction(m_mapRemoveSelection);
 
 2469   m_menubar->setObjectName(QString::fromUtf8(
"menubar"));
 
 2470   m_menubar->setGeometry(QRect(0, 0, 640, 21));
 
 2473   m_fileMenu->setObjectName(
"File");
 
 2474   m_fileMenu->setTitle(tr(
"&File"));
 
 2476   m_recentProjectsMenu->setObjectName(
"File.Recent Projects");
 
 2477   m_recentProjectsMenu->setTitle(tr(
"Recent &Projects"));
 
 2479   m_fileMenu->addAction(m_fileNewProject);
 
 2480   m_fileMenu->addAction(m_fileOpenProject);
 
 2481   m_fileMenu->addAction(m_fileSaveProject);
 
 2482   m_fileMenu->addAction(m_fileSaveProjectAs);
 
 2483   m_fileMenu->addSeparator();
 
 2484   m_fileMenu->addMenu(m_recentProjectsMenu);
 
 2485   m_recentProjectsMenu->setEnabled(
false);
 
 2486   m_fileMenu->addSeparator();
 
 2487   m_fileMenu->addAction(m_filePrintPreview);
 
 2488   m_fileMenu->addAction(m_filePrint);
 
 2489   m_fileMenu->addSeparator();
 
 2490   m_fileMenu->addAction(m_fileRestartSystem);
 
 2492 #if TE_PLATFORM != TE_PLATFORMCODE_APPLE 
 2493   m_fileMenu->addSeparator();
 
 2496   m_fileMenu->addAction(m_fileExit);
 
 2519   m_viewMenu->setObjectName(
"View");
 
 2520   m_viewMenu->setTitle(tr(
"&View"));
 
 2522   m_viewToolBarsMenu->setObjectName(
"View.Toolbars");
 
 2523   m_viewToolBarsMenu->setTitle(tr(
"&Toolbars"));
 
 2526   m_viewMenu->addAction(m_viewDataTable);
 
 2527   m_viewMenu->addAction(m_viewLayerExplorer);
 
 2528   m_viewMenu->addAction(m_viewMapDisplay);
 
 2529   m_viewMenu->addAction(m_viewStyleExplorer);
 
 2531   m_viewMenu->addSeparator();
 
 2532   m_viewMenu->addAction(m_viewFullScreen);
 
 2533   m_viewMenu->addSeparator();
 
 2534   m_viewMenu->addMenu(m_viewToolBarsMenu);
 
 2538   m_projectMenu->setObjectName(
"Project");
 
 2539   m_projectMenu->setTitle(tr(
"&Project"));
 
 2542   m_projectAddLayerMenu->setObjectName(
"Project.Add Layer");
 
 2543   m_projectAddLayerMenu->setTitle(tr(
"&Add Layer"));
 
 2544   m_projectAddLayerMenu->setIcon(QIcon::fromTheme(
"layer-add"));
 
 2545   m_projectAddLayerMenu->addAction(m_projectAddLayerTabularDataSet);
 
 2546   m_projectAddLayerMenu->addAction(m_projectAddLayerDataset);
 
 2547   m_projectAddLayerMenu->addSeparator();
 
 2548   m_projectAddLayerMenu->addAction(m_projectAddLayerQueryDataSet);
 
 2549   m_projectAddLayerMenu->addSeparator();
 
 2550   m_projectMenu->addAction(m_projectAddFolderLayer);
 
 2551   m_projectMenu->addSeparator();
 
 2552   m_projectMenu->addAction(m_projectRemoveLayer);
 
 2553   m_projectMenu->addAction(m_projectRenameLayer);
 
 2554   m_projectMenu->addSeparator();
 
 2555   m_projectMenu->addAction(m_projectProperties);
 
 2557   m_layerMenu->setObjectName(
"Layer");
 
 2558   m_layerMenu->setTitle(tr(
"&Layer"));
 
 2560   m_layerMenu->addAction(m_layerObjectGrouping);
 
 2561   m_layerMenu->addAction(m_layerChartsHistogram);
 
 2562   m_layerMenu->addAction(m_layerChart);
 
 2563   m_layerMenu->addAction(m_queryLayer);
 
 2564   m_layerMenu->addAction(m_layerChartsScatter);
 
 2565   m_layerMenu->addSeparator();
 
 2566   m_layerMenu->addAction(m_layerFitOnMapDisplay);
 
 2567   m_layerMenu->addAction(m_layerFitSelectedOnMapDisplay);
 
 2568   m_layerMenu->addAction(m_layerPanToSelectedOnMapDisplay);
 
 2569   m_layerMenu->addSeparator();
 
 2570   m_layerMenu->addAction(m_layerShowTable);
 
 2571   m_layerMenu->addAction(m_viewStyleExplorer);
 
 2572   m_layerMenu->addSeparator();
 
 2573   m_layerMenu->addAction(m_layerRemoveObjectSelection);
 
 2574   m_layerMenu->addSeparator();
 
 2575   m_layerMenu->addAction(m_layerSRS);
 
 2576   m_layerMenu->addSeparator();
 
 2577   m_layerMenu->addAction(m_layerProperties);
 
 2586   m_mapMenu->setObjectName(
"Map");
 
 2587   m_mapMenu->setTitle(tr(
"&Map"));
 
 2589   m_mapMenu->addAction(m_mapDraw);
 
 2590   m_mapMenu->addAction(m_mapStopDrawing);
 
 2591   m_mapMenu->addSeparator();
 
 2592   m_mapMenu->addAction(m_mapInfo);
 
 2593   m_mapMenu->addAction(m_mapRemoveSelection);
 
 2594   m_mapMenu->addAction(m_mapSelection);
 
 2595   m_mapMenu->addSeparator();
 
 2596   m_mapMenu->addAction(m_mapPan);
 
 2597   m_mapMenu->addAction(m_mapZoomExtent);
 
 2598   m_mapMenu->addAction(m_mapZoomIn);
 
 2599   m_mapMenu->addAction(m_mapZoomOut);
 
 2600   m_mapMenu->addSeparator();
 
 2601   m_mapMenu->addAction(m_mapNextExtent);
 
 2602   m_mapMenu->addAction(m_mapPreviousExtent);
 
 2603   m_mapMenu->addSeparator();
 
 2604   m_mapMenu->addAction(m_mapMeasureAngle);
 
 2605   m_mapMenu->addAction(m_mapMeasureArea);
 
 2606   m_mapMenu->addAction(m_mapMeasureDistance);
 
 2607   m_mapMenu->addSeparator();
 
 2608   m_mapMenu->addAction(m_mapSRID);
 
 2609   m_mapMenu->addAction(m_mapUnknownSRID);
 
 2614   m_toolsMenu->setObjectName(
"Tools");
 
 2615   m_toolsMenu->setTitle(tr(
"&Tools"));
 
 2619   m_toolsExchangerMenu->setObjectName(
"Tools.Exchanger");
 
 2620   m_toolsExchangerMenu->setTitle(tr(
"&Data Exchanger"));
 
 2621   m_toolsExchangerMenu->setIcon(QIcon::fromTheme(
"datasource-exchanger"));
 
 2622   m_toolsExchangerMenu->addAction(m_toolsDataExchangerDirect);
 
 2623   m_toolsExchangerMenu->addAction(m_toolsDataExchanger);
 
 2625   m_toolsMenu->addAction(m_toolsDataSourceExplorer);
 
 2626   m_toolsMenu->addAction(m_toolsQueryDataSource);
 
 2627   m_toolsMenu->addSeparator();
 
 2628   m_toolsMenu->addAction(m_toolsCustomize);  
 
 2631   m_pluginsMenu->setObjectName(
"Plugins");
 
 2632   m_pluginsMenu->setTitle(tr(
"Pl&ugins"));
 
 2634   m_pluginsMenu->addAction(m_pluginsManager);
 
 2637   m_helpMenu->setObjectName(
"Help");
 
 2638   m_helpMenu->setTitle(tr(
"&Help"));
 
 2640   m_helpMenu->addAction(m_helpContents);
 
 2644   setMenuBar(m_menubar);
 
 2653   m_statusbar = 
new QStatusBar(
this);
 
 2654   m_statusbar->setObjectName(
"StatusBar");
 
 2655   setStatusBar(m_statusbar);
 
 2658   std::vector<QToolBar*>::iterator it;
 
 2660   for(it=bars.begin(); it!=bars.end(); ++it)
 
 2662     QToolBar* bar = *it;
 
 2663     addToolBar(Qt::TopToolBarArea, bar);
 
 2664     m_viewToolBarsMenu->addAction(bar->toggleViewAction());
 
 2672   m_selected = 
new QLabel(m_statusbar);
 
 2673   m_selected->setText(tr(
"Selected rows: 0"));
 
 2674   m_statusbar->addPermanentWidget(m_selected);
 
 2677   QToolButton* mapUnknownSRIDToolButton = 
new QToolButton(m_statusbar);
 
 2678   mapUnknownSRIDToolButton->setDefaultAction(m_mapUnknownSRID);
 
 2679   m_statusbar->addPermanentWidget(mapUnknownSRIDToolButton);
 
 2682   QToolButton* mapSRIDToolButton = 
new QToolButton(m_statusbar);
 
 2683   mapSRIDToolButton->setDefaultAction(m_mapSRID);
 
 2684   m_statusbar->addPermanentWidget(mapSRIDToolButton);
 
 2687   m_mapSRIDLineEdit = 
new QLineEdit(m_statusbar);
 
 2688   m_mapSRIDLineEdit->setFixedWidth(120);
 
 2689   m_mapSRIDLineEdit->setAlignment(Qt::AlignHCenter);
 
 2690   m_mapSRIDLineEdit->setEnabled(
false);
 
 2692   int srid = m_display->getDisplay()->getSRID();
 
 2693   srid != 
TE_UNKNOWN_SRS ? m_mapSRIDLineEdit->setText(
"EPSG:" + QString::number(srid)) : m_mapSRIDLineEdit->setText(tr(
"Unknown SRS"));
 
 2694   m_statusbar->addPermanentWidget(m_mapSRIDLineEdit);
 
 2697   m_coordinateLineEdit = 
new QLineEdit(m_statusbar);
 
 2698   m_coordinateLineEdit->setFixedWidth(220);
 
 2699   m_coordinateLineEdit->setAlignment(Qt::AlignHCenter);
 
 2700   m_coordinateLineEdit->setReadOnly(
true);
 
 2701   m_coordinateLineEdit->setFocusPolicy(Qt::NoFocus);
 
 2702   m_coordinateLineEdit->setText(tr(
"Coordinates"));
 
 2703   m_statusbar->addPermanentWidget(m_coordinateLineEdit);
 
 2706   QToolButton* stopDrawToolButton = 
new QToolButton(m_statusbar);
 
 2707   stopDrawToolButton->setDefaultAction(m_mapStopDrawing);
 
 2708   m_statusbar->addPermanentWidget(stopDrawToolButton);
 
 2713   connect(m_fileExit, SIGNAL(triggered()), SLOT(close()));
 
 2714   connect(m_fileRestartSystem, SIGNAL(triggered()), SLOT(onRestartSystemTriggered()));
 
 2715   connect(m_projectAddLayerDataset, SIGNAL(triggered()), SLOT(onAddDataSetLayerTriggered()));
 
 2716   connect(m_projectAddLayerQueryDataSet, SIGNAL(triggered()), SLOT(onAddQueryLayerTriggered()));
 
 2717   connect(m_projectAddLayerTabularDataSet, SIGNAL(triggered()), SLOT(onAddTabularLayerTriggered()));
 
 2718   connect(m_projectRemoveLayer, SIGNAL(triggered()), SLOT(onRemoveLayerTriggered()));
 
 2719   connect(m_projectRenameLayer, SIGNAL(triggered()), SLOT(onRenameLayerTriggered()));
 
 2720   connect(m_projectProperties, SIGNAL(triggered()), SLOT(onProjectPropertiesTriggered()));
 
 2721   connect(m_projectChangeLayerDataSource, SIGNAL(triggered()), SLOT(onChangeLayerDataSourceTriggered()));
 
 2722   connect(m_pluginsManager, SIGNAL(triggered()), SLOT(onPluginsManagerTriggered()));
 
 2723   connect(m_recentProjectsMenu, SIGNAL(triggered(QAction*)), SLOT(onRecentProjectsTriggered(QAction*)));
 
 2724   connect(m_fileNewProject, SIGNAL(triggered()), SLOT(onNewProjectTriggered()));
 
 2725   connect(m_fileOpenProject, SIGNAL(triggered()), SLOT(onOpenProjectTriggered()));
 
 2726   connect(m_fileSaveProject, SIGNAL(triggered()), SLOT(onSaveProjectTriggered()));
 
 2727   connect(m_fileSaveProjectAs, SIGNAL(triggered()), SLOT(onSaveProjectAsTriggered()));
 
 2728   connect(m_toolsCustomize, SIGNAL(triggered()), SLOT(onToolsCustomizeTriggered()));
 
 2729   connect(m_toolsDataExchanger, SIGNAL(triggered()), SLOT(onToolsDataExchangerTriggered()));
 
 2730   connect(m_toolsDataExchangerDirect, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectTriggered()));
 
 2731   connect(m_toolsDataExchangerDirectPopUp, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectPopUpTriggered()));
 
 2732   connect(m_toolsQueryDataSource, SIGNAL(triggered()), SLOT(onToolsQueryDataSourceTriggered()));
 
 2733   connect(m_helpContents, SIGNAL(triggered()), SLOT(onHelpTriggered()));
 
 2734   connect(m_layerChartsHistogram, SIGNAL(triggered()), SLOT(onLayerHistogramTriggered()));
 
 2735   connect(m_layerChartsScatter, SIGNAL(triggered()), SLOT(onLayerScatterTriggered()));
 
 2736   connect(m_layerChart, SIGNAL(triggered()), SLOT(onLayerChartTriggered()));
 
 2737   connect(m_projectAddFolderLayer, SIGNAL(triggered()), SLOT(onAddFolderLayerTriggered()));
 
 2738   connect(m_layerProperties, SIGNAL(triggered()), SLOT(onLayerPropertiesTriggered()));
 
 2739   connect(m_layerRemoveObjectSelection, SIGNAL(triggered()), SLOT(onLayerRemoveSelectionTriggered()));
 
 2740   connect(m_layerRemoveItem, SIGNAL(triggered()), SLOT(onLayerRemoveItemTriggered()));
 
 2741   connect(m_layerSRS, SIGNAL(triggered()), SLOT(onLayerSRSTriggered()));
 
 2742   connect(m_layerObjectGrouping, SIGNAL(triggered()), SLOT(onLayerGroupingTriggered()));
 
 2743   connect(m_mapSRID, SIGNAL(triggered()), SLOT(onMapSRIDTriggered()));
 
 2744   connect(m_mapUnknownSRID, SIGNAL(triggered()), SLOT(onMapSetUnknwonSRIDTriggered()));
 
 2745   connect(m_mapDraw, SIGNAL(triggered()), SLOT(onDrawTriggered()));
 
 2746   connect(m_layerFitOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitOnMapDisplayTriggered()));
 
 2747   connect(m_layerFitSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitSelectedOnMapDisplayTriggered()));
 
 2748   connect(m_layerPanToSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerPanToSelectedOnMapDisplayTriggered()));
 
 2749   connect(m_queryLayer, SIGNAL(triggered()), SLOT(onQueryLayerTriggered()));
 
 2750   connect(m_mapZoomIn, SIGNAL(toggled(
bool)), SLOT(onZoomInToggled(
bool)));
 
 2751   connect(m_mapZoomOut, SIGNAL(toggled(
bool)), SLOT(onZoomOutToggled(
bool)));
 
 2752   connect(m_mapPreviousExtent, SIGNAL(triggered()), SLOT(onPreviousExtentTriggered()));
 
 2753   connect(m_mapNextExtent, SIGNAL(triggered()), SLOT(onNextExtentTriggered()));
 
 2754   connect(m_mapPan, SIGNAL(toggled(
bool)), SLOT(onPanToggled(
bool)));
 
 2755   connect(m_mapZoomExtent, SIGNAL(triggered()), SLOT(onZoomExtentTriggered()));
 
 2756   connect(m_mapInfo, SIGNAL(toggled(
bool)), SLOT(onInfoToggled(
bool)));
 
 2757   connect(m_mapRemoveSelection, SIGNAL(triggered()), SLOT(onMapRemoveSelectionTriggered()));
 
 2758   connect(m_mapSelection, SIGNAL(toggled(
bool)), SLOT(onSelectionToggled(
bool)));
 
 2759   connect(m_mapMeasureDistance, SIGNAL(toggled(
bool)), SLOT(onMeasureDistanceToggled(
bool)));
 
 2760   connect(m_mapMeasureArea, SIGNAL(toggled(
bool)), SLOT(onMeasureAreaToggled(
bool)));
 
 2761   connect(m_mapMeasureAngle, SIGNAL(toggled(
bool)), SLOT(onMeasureAngleToggled(
bool)));
 
 2762   connect(m_mapStopDrawing, SIGNAL(triggered()), SLOT(onStopDrawTriggered()));
 
 2763   connect(m_layerShowTable, SIGNAL(triggered()), SLOT(onLayerShowTableTriggered()));
 
 2764   connect(m_viewFullScreen, SIGNAL(toggled(
bool)), SLOT(onFullScreenToggled(
bool)));
 
 2765   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. 
 
const QString & getAppTitle() const 
Returns the application title. 
 
void onLayerSelectedObjectsChanged(const te::map::AbstractLayerPtr &layer)
 
A class that models the description of a dataset. 
 
void onLayerPanToSelectedOnMapDisplayTriggered()
 
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. 
 
void onDisplayVisibilityChanged(bool visible)
 
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. 
 
QMenu * m_toolsExchangerMenu
 
A dialog for edition of te::qt::af::Project informations. 
 
TEQTAFEXPORT void SaveDataSourcesFile()
Saves data sources file. 
 
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. 
 
#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)
 
void onLayerRemoveItemTriggered()
 
TEQTAFEXPORT void GetProjectInformationsFromSettings(QString &defaultAuthor, int &maxSaved)
 
An exception class for the TerraLib Application Framework. 
 
void onLayerFitOnMapDisplayTriggered()
 
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)
 
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. ...
 
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 onSaveProjectAsTriggered()
 
void onLayerChartTriggered()
 
virtual void initToolbars()
 
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()
 
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)
 
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...