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...