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/utils/ScopedCursor.h"
83 #include "../widgets/srs/SRSManagerDialog.h"
84 #include "../widgets/vector/FixGeometryDialog.h"
108 #include <QActionGroup>
109 #include <QApplication>
110 #include <QCloseEvent>
111 #include <QDockWidget>
112 #include <QFileDialog>
113 #include <QInputDialog>
117 #include <QStatusBar>
119 #include <QToolButton>
127 #include <boost/filesystem.hpp>
128 #include <boost/format.hpp>
129 #include <boost/uuid/random_generator.hpp>
130 #include <boost/uuid/uuid_io.hpp>
135 std::vector<te::qt::af::DataSetTableDockWidget*>::const_iterator it;
137 for(it=docs.begin(); it!=docs.end(); ++it)
138 if((*it)->getLayer() == layer)
146 std::vector<te::qt::af::DataSetTableDockWidget*>::iterator it;
148 for (it = tables.begin(); it != tables.end(); ++it)
155 : QMainWindow(parent, 0),
156 m_mapCursorSize(QSize(20, 20)),
164 m_progressDockWidget(0),
165 m_zoomInDisplaysDockWidget(0),
166 m_eyeBirdDisplaysDockWidget(0),
167 m_restartTerraLib(false)
172 if (objectName().isEmpty())
173 setObjectName(
"BaseApplicationForm");
176 setMinimumSize(QSize(640, 480));
218 while (!m_tableDocks.empty())
219 delete *m_tableDocks.begin();
224 m_iController->removeInteface(m_queryDlg);
227 delete m_iController;
228 delete m_styleExplorer;
230 delete m_compModeMenu;
231 delete m_progressDockWidget;
232 delete m_zoomInDisplaysDockWidget;
233 delete m_eyeBirdDisplaysDockWidget;
236 delete m_explorer->getExplorer();
256 throw Exception(
"Not implemented yet!");
267 catch(
const std::exception& e)
269 QString msgErr(tr(
"Could not initialize the application: %1"));
271 msgErr = msgErr.arg(e.what());
290 catch(
const std::exception& e)
292 QString msgErr(tr(
"Error loading plugins: %1"));
294 msgErr = msgErr.arg(e.what());
308 openProject(recentProject);
312 QString msgErr(tr(
"Error loading the project: %1!"));
314 msgErr = msgErr.arg(ex.
what());
323 onSelectionToggled(
true);
324 m_mapSelection->setChecked(
true);
326 m_viewDataTable->setChecked(
false);
327 m_viewDataTable->setEnabled(
false);
341 return m_iController;
346 m_restartTerraLib = !status;
359 m_project->setProjectAsChanged(
true);
366 QMainWindow::addToolBar(Qt::TopToolBarArea, e->
m_toolbar);
373 QString text =
"(" + QString::number(e->
m_x,
'f', 5) +
" , " + QString::number(e->
m_y,
'f', 5) +
")";
374 m_coordinateLineEdit->setText(text);
382 std::pair<int, std::string> srid = e->
m_srid;
386 QString sridText(srid.second.c_str());
387 sridText +=
":" + QString::number(srid.first);
388 m_mapSRIDLineEdit->setText(sridText);
392 m_mapSRIDLineEdit->setText(
"Unknown SRS");
393 m_coordinateLineEdit->setText(
"Coordinates");
404 m_selected->setText(tr(
"Selected rows: ")+QString::number(lEvt->
m_layer->getSelected()->size()));
418 throw Exception(
TE_TR(
"Error: there is no opened project!"));
420 QApplication::setOverrideCursor(Qt::WaitCursor);
425 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
427 if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() ==
"FOLDER_LAYER_ITEM")
428 parentLayer = selectedLayerItems.front()->getLayer();
435 if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
436 dselector->setDataSourceToUse(dsTypeSett);
438 QApplication::restoreOverrideCursor();
440 int retval = dselector->exec();
442 QApplication::setOverrideCursor(Qt::WaitCursor);
444 if(retval == QDialog::Rejected)
446 QApplication::restoreOverrideCursor();
450 std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
452 if(selectedDatasources.empty())
454 QApplication::restoreOverrideCursor();
460 const std::string& dsTypeId = selectedDatasources.front()->getType();
466 if(lselectorw.get() == 0)
468 QApplication::restoreOverrideCursor();
469 throw Exception((boost::format(
TE_TR(
"No layer selector widget found for this type of data source: %1%!")) % dsTypeId).str());
476 QApplication::restoreOverrideCursor();
477 throw Exception(
TE_TR(
"Wrong type of object for layer selection!"));
480 lselector->
set(selectedDatasources);
482 QApplication::restoreOverrideCursor();
484 std::list<te::map::AbstractLayerPtr> layers = lselector->
getLayers();
486 QApplication::setOverrideCursor(Qt::WaitCursor);
490 std::list<te::map::AbstractLayerPtr>::const_iterator it = layers.begin();
491 std::list<te::map::AbstractLayerPtr>::const_iterator itend = layers.end();
495 if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
508 catch(
const std::exception& e)
510 QApplication::restoreOverrideCursor();
515 QApplication::restoreOverrideCursor();
516 QMessageBox::warning(
this,
518 tr(
"Unknown error while trying to add a layer from a dataset!"));
520 QApplication::restoreOverrideCursor();
528 throw Exception(
TE_TR(
"Error: there is no opened project!"));
533 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
535 if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() ==
"FOLDER_LAYER_ITEM")
536 parentLayer = selectedLayerItems.front()->getLayer();
542 qlb->setLayerList(layers);
544 int retval = qlb->exec();
546 if(retval == QDialog::Rejected)
551 if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
560 catch(
const std::exception& e)
566 QMessageBox::warning(
this,
568 tr(
"Unknown error while trying to add a layer from a queried dataset!"));
577 throw Exception(
TE_TR(
"Error: there is no opened project!"));
582 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
584 if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() ==
"FOLDER_LAYER_ITEM")
585 parentLayer = selectedLayerItems.front()->getLayer();
588 int res = dlg.exec();
589 if (res == QDialog::Accepted)
591 if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
601 catch(
const std::exception& e)
607 QMessageBox::warning(
this,
609 tr(
"Unknown error while trying to add a layer from a queried dataset!"));
619 doc->setWindowTitle(
"Histogram");
620 doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
624 addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
627 catch(
const std::exception& e)
635 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
637 if(selectedLayerItems.empty())
639 QString msg = tr(
"Select at least one layer to be removed!");
640 QMessageBox::warning(
this, tr(
"Remove Layer"), msg);
646 QString questionTitle;
648 if(selectedLayerItems.size() == 1)
650 msg = tr(
"Do you really want to remove the selected layer?");
651 questionTitle = tr(
"Remove Layer");
655 msg = tr(
"Do you really want to remove the selected layers?");
656 questionTitle = tr(
"Remove Layers");
659 int reply = QMessageBox::question(
this, questionTitle, msg, QMessageBox::No, QMessageBox::Yes);
661 if(reply == QMessageBox::No)
664 m_explorer->removeLayers(selectedLayerItems);
678 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
685 if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
686 dselector->setDataSourceToUse(dsTypeSett);
688 int retval = dselector->exec();
690 if(retval == QDialog::Rejected)
693 std::list<te::da::DataSourceInfoPtr> selectedDatasources = dselector->getSelecteds();
695 if(selectedDatasources.empty())
700 const std::string& dsId = selectedDatasources.front()->getId();
712 catch(
const std::exception& e)
718 QMessageBox::warning(
this,
720 tr(
"Unknown error while trying to change a layer data source!"));
728 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
730 if(selectedLayerItems.empty())
740 std::list<te::da::DataSourceInfoPtr> selecteds;
744 selecteds.push_back(ds);
746 const std::string& dsTypeId = selecteds.front()->getType();
752 if(connectorw.get() == 0)
754 throw Exception((boost::format(
TE_TR(
"No layer selector widget found for this type of data source: %1%!")) % dsTypeId).str());
761 throw Exception(
TE_TR(
"Wrong type of object for layer selection!"));
764 connector->
update(selecteds);
766 catch(
const std::exception& e)
772 QMessageBox::warning(
this,
774 tr(
"Unknown error while trying to update a layer data source!"));
780 std::list<te::qt::widgets::AbstractTreeItem*> selectedItems = m_explorer->getExplorer()->getSelectedItems();
782 std::list<te::qt::widgets::AbstractTreeItem*>::const_iterator it;
783 for(it = selectedItems.begin(); it != selectedItems.end(); ++it)
792 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
794 if(selectedLayerItems.empty() ||
795 (selectedLayerItems.size() == 1 && !selectedLayerItems.front()->getLayer()) ||
796 selectedLayerItems.size() > 1)
798 QString msg = tr(
"Select only one layer to be renamed!");
799 QMessageBox::warning(
this, tr(
"Rename Layer"), msg);
810 layer->getTitle().c_str(), &ok);
821 layer->setTitle(text.toStdString());
834 catch(
const std::exception& e)
842 QString projFile = proj->data().toString();
844 openProject(projFile);
867 QString msg = tr(
"Fail to open project.");
876 std::string fName = m_project->getFileName();
882 if(!fileName.isEmpty())
884 if(m_project->getTitle() ==
"New Project")
885 m_project->setTitle(boost::filesystem::basename(fileName.toStdString()));
887 QFileInfo info(fileName);
891 if(info.suffix() != appProjectExtension)
894 s.append(appProjectExtension);
898 fName = fileName.toStdString();
899 m_project->setFileName(fName);
928 m_project->setProjectAsChanged(
false);
938 if(fileName.isEmpty())
941 std::string fName = fileName.toStdString();
943 m_project->setFileName(fName);
945 if(!boost::filesystem::exists(fName) && m_project->getTitle() ==
"New Project")
947 m_project->setTitle(boost::filesystem::basename(fName));
969 m_project->setProjectAsChanged(
false);
974 QMessageBox msgBox(
this);
976 msgBox.setText(tr(
"The system will be restarted."));
977 msgBox.setInformativeText(tr(
"Do you want to continue?"));
978 msgBox.setWindowTitle(tr(
"Restart system"));
980 msgBox.addButton(QMessageBox::No);
981 msgBox.addButton(QMessageBox::Yes);
983 msgBox.setDefaultButton(QMessageBox::Yes);
985 if(msgBox.exec() == QMessageBox::Yes)
996 catch(
const std::exception& e)
1009 catch(
const std::exception& e)
1026 if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
1031 catch(
const std::exception& e)
1043 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
1045 if(selectedLayerItems.empty())
1048 tr(
"Select a single layer in the layer explorer!"));
1055 std::list<te::map::AbstractLayerPtr> layers;
1056 layers.push_back(selectedLayer);
1062 catch(
const std::exception& e)
1082 catch(
const std::exception& e)
1099 catch(
const std::exception& e)
1116 catch (
const std::exception& e)
1133 if(editor.exec() == QDialog::Accepted)
1145 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
1147 if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() ==
"FOLDER_LAYER_ITEM")
1148 parentLayer = selectedLayerItems.front()->getLayer();
1154 tr(
"Enter folder layer name"), &ok);
1165 static boost::uuids::basic_random_generator<boost::mt19937> gen;
1166 boost::uuids::uuid u = gen();
1167 std::string
id = boost::uuids::to_string(u);
1170 folderLayer->setTitle(text.toStdString());
1171 folderLayer->setId(
id);
1182 std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
1191 QDockWidget* doc =
new QDockWidget(
this, Qt::Dialog);
1195 doc->setWidget(info);
1196 doc->setWindowTitle(info->windowTitle());
1197 doc->setAttribute(Qt::WA_DeleteOnClose,
true);
1206 std::list<te::map::AbstractLayerPtr> layers = m_explorer->getExplorer()->getSelectedSingleLayers();
1214 std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
1216 while(it != layers.end())
1220 if(!layer->isValid())
1226 layer->clearSelected();
1237 std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedItems();
1245 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
1247 if(srsDialog.exec() == QDialog::Rejected)
1254 lay->setSRID(srid.first);
1259 std::list<te::qt::widgets::AbstractTreeItem*> layers = m_explorer->getExplorer()->getSelectedSingleLayerItems();
1268 std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = layers.begin();
1270 while(it != layers.end())
1272 if(!(*it)->getLayer()->isValid())
1275 tr(
"There are invalid layers selected!"));
1286 if (lay->getSchema()->hasRaster())
1295 addDockWidget(Qt::BottomDockWidgetArea, doc);
1300 if(!m_tableDocks.empty())
1301 tabifyDockWidget(m_tableDocks[m_tableDocks.size()-1], doc);
1303 m_tableDocks.push_back(doc);
1313 m_viewDataTable->setChecked(
true);
1315 m_viewDataTable->setEnabled(
true);
1322 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1324 if(selectedLayers.empty())
1327 tr(
"Select a layer in the layer explorer!"));
1332 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1334 while(it != selectedLayers.end())
1336 if(!it->get()->isValid())
1339 tr(
"There are invalid layers selected!"));
1357 dlg.setWindowTitle(dlg.windowTitle() +
" (" + tr(
"Layer") +
":" + selectedLayer->getTitle().c_str() +
")");
1359 int res = dlg.exec();
1360 if (res == QDialog::Accepted)
1364 doc->setWindowTitle(tr(
"Histogram"));
1365 doc->setWindowIcon(QIcon::fromTheme(
"chart-bar"));
1366 doc->
setLayer(selectedLayer.get());
1369 addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
1373 catch(
const std::exception& e)
1384 throw Exception(
TE_TR(
"Error: there is no opened project!"));
1389 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedLayerItems();
1391 if(selectedLayerItems.size() == 1 && selectedLayerItems.front()->getItemType() ==
"FOLDER_LAYER_ITEM")
1392 parentLayer = selectedLayerItems.front()->getLayer();
1394 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1396 if(selectedLayers.empty())
1399 tr(
"Select a layer in the layer explorer!"));
1404 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1406 while(it != selectedLayers.end())
1408 if(!it->get()->isValid())
1411 tr(
"There are invalid layers selected!"));
1422 elb->setInputLayer(selectedLayer);
1424 int retval = elb->exec();
1426 if(retval == QDialog::Rejected)
1431 if((m_explorer != 0) && (m_explorer->getExplorer() != 0))
1440 catch(
const std::exception& e)
1446 QMessageBox::warning(
this,
1448 tr(
"Unknown error while trying to add a layer from a queried dataset!"));
1456 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1458 if(selectedLayers.empty())
1461 tr(
"Select a layer in the layer explorer!"));
1466 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1468 while(it != selectedLayers.end())
1470 if(!it->get()->isValid())
1473 tr(
"There are invalid layers selected!"));
1491 dlg.setWindowTitle(dlg.windowTitle() +
" (" + tr(
"Layer") +
":" + selectedLayer->getTitle().c_str() +
")");
1493 int res = dlg.exec();
1494 if (res == QDialog::Accepted)
1499 doc->setWindowTitle(tr(
"Scatter"));
1500 doc->setWindowIcon(QIcon::fromTheme(
"chart-scatter"));
1502 doc->
setLayer(selectedLayer.get());
1504 addDockWidget(Qt::RightDockWidgetArea, doc, Qt::Horizontal);
1508 catch(
const std::exception& e)
1518 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
1520 if(selectedLayerItems.empty())
1523 tr(
"Select a single layer in the layer explorer!"));
1528 std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
1530 while(it != selectedLayerItems.end())
1532 if(!(*it)->getLayer()->isValid())
1535 tr(
"There are invalid layers selected!"));
1549 dlg.setWindowTitle(dlg.windowTitle() +
" (" + tr(
"Layer") +
":" + selectedLayer->getTitle().c_str() +
")");
1564 m_explorer->getExplorer()->remove(chartItem);
1568 m_explorer->getExplorer()->collapse(selectedLayerItem);
1570 if(dlg.exec() == QDialog::Accepted)
1573 m_explorer->getExplorer()->expand(selectedLayerItem);
1577 m_explorer->getExplorer()->expand(chartItem);
1579 m_display->getDisplay()->refresh();
1586 catch(
const std::exception& e)
1596 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
1598 if(selectedLayerItems.empty())
1601 tr(
"Select a single layer in the layer explorer!"));
1606 std::list<te::qt::widgets::AbstractTreeItem*>::iterator it = selectedLayerItems.begin();
1608 while(it != selectedLayerItems.end())
1610 if(!(*it)->getLayer()->isValid())
1613 tr(
"There are invalid layers selected!"));
1628 std::vector<te::map::AbstractLayerPtr> allLayers(allLayersList.begin(), allLayersList.end());
1631 dlg.setLayers(selectedLayer, allLayers);
1637 m_explorer->getExplorer()->remove(groupingItem);
1643 m_explorer->getExplorer()->remove(cmi);
1647 m_explorer->getExplorer()->collapse(selectedLayerItem);
1649 if(dlg.exec() == QDialog::Accepted)
1652 m_explorer->getExplorer()->expand(selectedLayerItem);
1656 m_explorer->getExplorer()->expand(groupingItem);
1660 m_explorer->getExplorer()->expand(cmi);
1662 m_display->getDisplay()->refresh();
1669 catch(
const std::exception& e)
1678 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
1680 if(srsDialog.exec() == QDialog::Rejected)
1688 m_display->getDisplay()->setSRID(srid.first);
1693 std::pair<int, std::string> srid = std::make_pair(
TE_UNKNOWN_SRS,
"");
1707 m_display->draw(visibleLayers);
1709 if (visibleLayers.size() > 0)
1710 m_layerFitOnMapDisplay->setEnabled(
true);
1712 m_layerFitOnMapDisplay->setEnabled(
false);
1721 if (visibleLayers.size() > 0)
1722 m_layerFitOnMapDisplay->setEnabled(
true);
1724 m_layerFitOnMapDisplay->setEnabled(
false);
1727 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1729 if(selectedLayers.empty())
1731 m_layerFitOnMapDisplay->setEnabled(
false);
1734 tr(
"Select a layer in the layer explorer!"));
1739 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1741 while(it != selectedLayers.end())
1743 if(!it->get()->isValid())
1746 tr(
"There are invalid layers selected!"));
1770 display->
setSRID(selectedLayer->getSRID());
1778 TE_TR(
"The spatial reference system of the map display and the layer are not compatible!"));
1782 if (display->
getSRID() != selectedLayer->getSRID())
1787 catch(
const std::exception& e)
1795 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1796 if(selectedLayers.empty())
1798 QString msg = tr(
"Select at least a layer to accomplish this operation!");
1804 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1806 while(it != selectedLayers.end())
1808 if(!it->get()->isValid())
1811 tr(
"There are invalid layers selected!"));
1823 QString msg = tr(
"Select object(s) in the selected layer(s) to accomplish this operation!");
1828 m_display->getDisplay()->setExtent(finalEnv,
true);
1833 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1834 if(selectedLayers.empty())
1836 QString msg = tr(
"Select at least a layer to accomplish this operation!");
1842 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1844 while(it != selectedLayers.end())
1846 if(!it->get()->isValid())
1849 tr(
"There are invalid layers selected!"));
1865 double halfWidth = displayExtent.
getWidth() * 0.5;
1866 double halfHeight = displayExtent.
getHeight() * 0.5;
1870 newExtent.
m_llx = centerOfSelectedExtent.x - halfWidth;
1871 newExtent.
m_lly = centerOfSelectedExtent.y - halfHeight;
1873 newExtent.
m_urx = centerOfSelectedExtent.x + halfWidth;
1874 newExtent.
m_ury = centerOfSelectedExtent.y + halfHeight;
1881 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1883 if(!selectedLayers.empty())
1885 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1887 m_compModeMenu->setLayer(*it);
1893 std::list<te::map::AbstractLayerPtr> selectedLayers = m_explorer->getExplorer()->getSelectedSingleLayers();
1895 if(selectedLayers.empty())
1898 tr(
"Select a layer in the layer explorer!"));
1903 std::list<te::map::AbstractLayerPtr>::iterator it = selectedLayers.begin();
1905 while(it != selectedLayers.end())
1907 if(!it->get()->isValid())
1910 tr(
"There are invalid layers selected!"));
1929 m_iController->addInterface(m_queryDlg);
1935 m_queryDlg->setLayerList(allLayersList);
1938 std::list<te::qt::widgets::AbstractTreeItem*> selectedLayerItems = m_explorer->getExplorer()->getSelectedSingleLayerItems();
1940 if(!selectedLayerItems.empty())
1945 m_queryDlg->setCurrentLayer(selectedLayer);
1956 QCursor zoomAreaCursor(QIcon::fromTheme(
"zoom-in").pixmap(m_mapCursorSize));
1959 m_display->setCurrentTool(zoomArea);
1970 QCursor zoomOutCursor(QIcon::fromTheme(
"zoom-out").pixmap(m_mapCursorSize));
1973 m_display->setCurrentTool(zoomOut);
1981 m_display->previousExtent();
1986 m_display->nextExtent();
1995 m_display->setCurrentTool(pan);
2003 if(!m_project && m_project->getTopLayers().empty())
2009 m_display->fit(visibleLayers);
2011 if (visibleLayers.size() > 0)
2012 m_layerFitOnMapDisplay->setEnabled(
true);
2014 m_layerFitOnMapDisplay->setEnabled(
false);
2023 QPixmap pxmap = QIcon::fromTheme(
"pointer-info").pixmap(m_mapCursorSize);
2024 QCursor infoCursor(pxmap, 0, 0);
2027 m_display->setCurrentTool(info);
2029 connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), info, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
2037 std::list<te::map::AbstractLayerPtr>::iterator it = layers.begin();
2039 while(it != layers.end())
2043 layer->clearSelected();
2058 m_display->setCurrentTool(selection);
2060 connect(m_explorer->getExplorer(), SIGNAL(selectedLayersChanged(
const std::list<te::map::AbstractLayerPtr>&)), selection, SLOT(setLayers(
const std::list<te::map::AbstractLayerPtr>&)));
2072 QCursor measureDistanceCursor(QIcon::fromTheme(
"distance-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
2075 m_display->setCurrentTool(distance);
2083 QCursor measureAreaCursor(QIcon::fromTheme(
"area-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
2086 m_display->setCurrentTool(area);
2094 QCursor measureAngleCursor(QIcon::fromTheme(
"angle-measure-cursor").pixmap(m_mapCursorSize), 0, 0);
2097 m_display->setCurrentTool(angle);
2107 m_progressDockWidget->setVisible(
true);
2112 std::vector<DataSetTableDockWidget*>::iterator it;
2114 for(it=m_tableDocks.begin(); it!=m_tableDocks.end(); ++it)
2118 if (it != m_tableDocks.end())
2119 m_tableDocks.erase(it);
2121 if(m_tableDocks.empty())
2123 m_viewDataTable->setChecked(
false);
2124 m_viewDataTable->setEnabled(
false);
2132 checked ? showFullScreen() : showMaximized();
2137 assert(layer.get());
2145 assert(layer.get());
2154 m_viewLayerExplorer->blockSignals(
true);
2155 m_viewLayerExplorer->setChecked(visible);
2156 m_viewLayerExplorer->blockSignals(
false);
2161 if(m_tableDocks.empty())
2164 for(std::size_t i = 0; i < m_tableDocks.size(); ++i)
2167 m_tableDocks[i]->show();
2169 m_tableDocks[i]->hide();
2172 m_viewDataTable->setChecked(visible);
2177 m_viewStyleExplorer->blockSignals(
true);
2178 m_viewStyleExplorer->setChecked(visible);
2179 m_viewStyleExplorer->blockSignals(
false);
2190 if(!dsTypeSett.isNull() && !dsTypeSett.isEmpty())
2191 dExplorer->setDataSourceToUse(dsTypeSett);
2194 int retval = dExplorer->exec();
2196 if(retval == QDialog::Rejected)
2199 std::list<te::da::DataSourceInfoPtr> selectedDatasources = dExplorer->getSelecteds();
2201 if(selectedDatasources.empty())
2206 const std::string& dsTypeId = selectedDatasources.front()->getType();
2210 catch(
const std::exception& e)
2216 QMessageBox::warning(
this,
2218 tr(
"DataSetExplorer Error!"));
2253 QApplication::setOverrideCursor(Qt::WaitCursor);
2256 if(checkProjectSave() == QMessageBox::Cancel)
2258 QApplication::restoreOverrideCursor();
2262 if(!boost::filesystem::exists(projectFileName.toStdString()))
2264 QApplication::restoreOverrideCursor();
2279 m_project = nproject;
2300 QApplication::restoreOverrideCursor();
2305 QApplication::restoreOverrideCursor();
2306 QString msg(tr(
"Fail to open project: %1"));
2308 msg = msg.arg(projectFileName);
2310 throw Exception(
TE_TR(msg.toStdString()));
2312 QApplication::restoreOverrideCursor();
2317 if(m_project != 0 && m_project->hasChanged())
2319 QString msg(
"The current project has unsaved changes. Do you want to save them?");
2323 onSaveProjectTriggered();
2328 return QMessageBox::NoButton;
2333 if(checkProjectSave() == QMessageBox::Cancel)
2347 m_project->setTitle(tr(
"New Project").toStdString());
2349 m_project->setAuthor(author.toStdString());
2356 m_project->setProjectAsChanged(
false);
2371 initSlotsConnections();
2377 m_layerCompositionMode->setMenu(m_compModeMenu->getMenu());
2380 QAction* act =
new QAction(
this);
2381 act->setSeparator(
true);
2384 lexplorer->setObjectName(
"LayerExplorerDockWidget");
2386 treeView->setAnimated(
true);
2396 QAction* noItemSelectedSep =
new QAction(
this);
2397 noItemSelectedSep->setSeparator(
true);
2405 treeView->
add(m_projectAddLayerMenu->menuAction(),
"",
"FOLDER_LAYER_ITEM");
2407 QAction* folderSep1 =
new QAction(
this);
2408 folderSep1->setSeparator(
true);
2409 treeView->
add(folderSep1,
"",
"FOLDER_LAYER_ITEM");
2411 treeView->
add(m_projectAddFolderLayer,
"",
"FOLDER_LAYER_ITEM");
2413 QAction* folderSep2 =
new QAction(
this);
2414 folderSep2->setSeparator(
true);
2415 treeView->
add(folderSep2,
"",
"FOLDER_LAYER_ITEM");
2417 treeView->
add(m_projectRemoveLayer,
"",
"FOLDER_LAYER_ITEM");
2418 treeView->
add(m_projectRenameLayer,
"",
"FOLDER_LAYER_ITEM");
2421 treeView->
add(m_layerObjectGrouping);
2422 treeView->
add(m_toolsDataExchangerDirectPopUp);
2423 treeView->
add(m_layerChartsHistogram);
2424 treeView->
add(m_layerChart);
2425 treeView->
add(m_queryLayer);
2426 treeView->
add(m_layerChartsScatter);
2427 treeView->
add(m_layerLinkTable,
"",
"DATASET_LAYER_ITEM");
2429 QAction* actionChartSep =
new QAction(
this);
2430 actionChartSep->setSeparator(
true);
2431 treeView->
add(actionChartSep);
2433 treeView->
add(m_layerShowTable);
2434 treeView->
add(m_viewStyleExplorer);
2436 QAction* actionStyleSep =
new QAction(
this);
2437 actionStyleSep->setSeparator(
true);
2438 treeView->
add(actionStyleSep);
2440 treeView->
add(m_layerRemoveObjectSelection);
2441 treeView->
add(m_projectRemoveLayer);
2442 treeView->
add(m_projectRenameLayer);
2444 QAction* actionRemoveSep =
new QAction(
this);
2445 actionRemoveSep->setSeparator(
true);
2446 treeView->
add(actionRemoveSep);
2448 treeView->
add(m_layerFitOnMapDisplay);
2449 treeView->
add(m_layerFitSelectedOnMapDisplay);
2450 treeView->
add(m_layerPanToSelectedOnMapDisplay);
2452 QAction* actionFitSep =
new QAction(
this);
2453 actionFitSep->setSeparator(
true);
2454 treeView->
add(actionFitSep);
2456 treeView->
add(m_layerSRS);
2458 QAction* actionSRSSep =
new QAction(
this);
2459 actionSRSSep->setSeparator(
true);
2460 treeView->
add(actionSRSSep);
2462 treeView->
add(m_layerCompositionMode);
2463 treeView->
add(m_layerProperties);
2466 treeView->
add(m_layerRemoveItem,
"",
"ITEM_OF_LAYER");
2469 treeView->
add(m_layerObjectGrouping,
"",
"RASTER_LAYER_ITEM");
2470 treeView->
add(m_layerChartsHistogram,
"",
"RASTER_LAYER_ITEM");
2471 treeView->
add(m_layerChartsScatter,
"",
"RASTER_LAYER_ITEM");
2473 QAction* rasterSep1 =
new QAction(
this);
2474 rasterSep1->setSeparator(
true);
2475 treeView->
add(rasterSep1,
"",
"RASTER_LAYER_ITEM");
2477 treeView->
add(m_viewStyleExplorer,
"",
"RASTER_LAYER_ITEM");
2479 QAction* rasterSep2 =
new QAction(
this);
2480 rasterSep2->setSeparator(
true);
2481 treeView->
add(rasterSep2,
"",
"RASTER_LAYER_ITEM");
2483 treeView->
add(m_projectRemoveLayer,
"",
"RASTER_LAYER_ITEM");
2484 treeView->
add(m_projectRenameLayer,
"",
"RASTER_LAYER_ITEM");
2486 QAction* rasterSep3 =
new QAction(
this);
2487 rasterSep3->setSeparator(
true);
2488 treeView->
add(rasterSep3,
"",
"RASTER_LAYER_ITEM");
2490 treeView->
add(m_layerFitOnMapDisplay,
"",
"RASTER_LAYER_ITEM");
2492 QAction* rasterSep4 =
new QAction(
this);
2493 rasterSep4->setSeparator(
true);
2494 treeView->
add(rasterSep4,
"",
"RASTER_LAYER_ITEM");
2496 treeView->
add(m_layerSRS,
"",
"RASTER_LAYER_ITEM");
2498 QAction* rasterSep5 =
new QAction(
this);
2499 rasterSep5->setSeparator(
true);
2500 treeView->
add(rasterSep5,
"",
"RASTER_LAYER_ITEM");
2502 treeView->
add(m_layerCompositionMode,
"",
"RASTER_LAYER_ITEM");
2503 treeView->
add(m_layerProperties,
"",
"RASTER_LAYER_ITEM");
2507 treeView->
add(m_projectChangeLayerDataSource,
"",
"INVALID_LAYER_ITEM");
2508 treeView->
add(m_projectUpdateLayerDataSource,
"",
"INVALID_LAYER_ITEM");
2509 treeView->
add(m_projectRemoveLayer,
"",
"INVALID_LAYER_ITEM");
2519 QAction* multipleSelectedSep =
new QAction(
this);
2520 multipleSelectedSep->setSeparator(
true);
2527 QMainWindow::addDockWidget(Qt::LeftDockWidgetArea, lexplorer);
2529 connect(m_viewLayerExplorer, SIGNAL(toggled(
bool)), lexplorer, SLOT(setVisible(
bool)));
2530 m_viewLayerExplorer->setChecked(
true);
2531 connect(lexplorer, SIGNAL(visibilityChanged(
bool)),
this, SLOT(onLayerExplorerVisibilityChanged(
bool)));
2535 m_explorer->setParent(lexplorer);
2543 QMainWindow::setCentralWidget(map);
2545 connect(m_display, SIGNAL(hasPreviousExtent(
bool)), m_mapPreviousExtent, SLOT(setEnabled(
bool)));
2546 connect(m_display, SIGNAL(hasNextExtent(
bool)), m_mapNextExtent, SLOT(setEnabled(
bool)));
2550 stylelDock->setObjectName(
"StyleDockWidget");
2551 QMainWindow::addDockWidget(Qt::RightDockWidgetArea, stylelDock);
2552 stylelDock->connect(m_viewStyleExplorer, SIGNAL(toggled(
bool)), SLOT(setVisible(
bool)));
2553 m_viewStyleExplorer->setChecked(
false);
2554 stylelDock->setVisible(
false);
2555 connect(stylelDock, SIGNAL(visibilityChanged(
bool)),
this, SLOT(onStyleExplorerVisibilityChanged(
bool)));
2556 connect(stylelDock, SIGNAL(repaintMapDisplay()),
this, SLOT(onDrawTriggered()));
2581 connect(m_viewDataTable, SIGNAL(toggled(
bool)),
this, SLOT(onDisplayDataTableChanged(
bool)));
2593 pvb->setFixedWidth(220);
2599 m_statusbar->addPermanentWidget(pvb);
2601 connect(pvb, SIGNAL(clicked()),
this, SLOT(showProgressDockWidget()));
2603 m_progressDockWidget =
new QDockWidget(
this);
2604 m_progressDockWidget->setObjectName(
"ProgressDockWidget");
2605 m_progressDockWidget->setWidget(pvw);
2606 m_progressDockWidget->setMinimumHeight(300);
2607 m_progressDockWidget->setAllowedAreas(Qt::RightDockWidgetArea);
2608 m_progressDockWidget->setWindowTitle(tr(
"Tasks Progress"));
2609 addDockWidget(Qt::RightDockWidgetArea, m_progressDockWidget);
2610 m_progressDockWidget->setVisible(
false);
2615 if(checkProjectSave() == QMessageBox::Cancel)
2621 emit applicationClose();
2627 const QString& text,
const QString& tooltip,
2628 bool iconVisibleInMenu,
bool isCheckable,
2629 bool enabled, QObject* parent)
2631 act =
new QAction (parent);
2634 act->setIcon(QIcon::fromTheme(icon));
2636 act->setObjectName(name);
2638 act->setIconVisibleInMenu(iconVisibleInMenu);
2639 act->setCheckable(isCheckable);
2640 act->setEnabled(enabled);
2642 #ifndef QT_NO_TOOLTIP
2643 act->setToolTip(tooltip);
2650 initAction(m_viewLayerExplorer,
"view-layer-explorer",
"View.Layer Explorer", tr(
"&Layer Explorer"), tr(
"Show or hide the layer explorer"),
true,
true,
true, m_menubar);
2651 initAction(m_viewDataTable,
"view-data-table",
"View.Data Table", tr(
"&Data Table"), tr(
"Show or hide the data table"),
true,
true,
true, m_menubar);
2652 initAction(m_viewStyleExplorer,
"style",
"View.Style Explorer", tr(
"&Style Explorer"), tr(
"Show or hide the style explorer"),
true,
true,
true, m_menubar);
2653 initAction(m_viewFullScreen,
"view-fullscreen",
"View.Full Screen", tr(
"F&ull Screen"), tr(
""),
true,
true,
true, m_menubar);
2659 initAction(m_toolsCustomize,
"preferences-system",
"Tools.Customize", tr(
"&Customize..."), tr(
"Customize the system preferences"),
true,
false,
true, m_menubar);
2660 initAction(m_toolsDataExchanger,
"datasource-exchanger",
"Tools.Exchanger.All to All", tr(
"&Advanced..."), tr(
"Exchange data sets between data sources"),
true,
false,
true, m_menubar);
2661 initAction(m_toolsDataExchangerDirect,
"data-exchange-direct-icon",
"Tools.Exchanger.Direct", tr(
"&Layer..."), tr(
"Exchange data sets from layers"),
true,
false,
true, m_menubar);
2662 initAction(m_toolsDataExchangerDirectPopUp,
"data-exchange-direct-icon",
"Tools.Exchanger.Direct", tr(
"&Exchange..."), tr(
"Exchange data sets from layers"),
true,
false,
true, m_menubar);
2663 initAction(m_toolsDataSourceExplorer,
"datasource-explorer",
"Tools.Data Source Explorer", tr(
"&Data Source Explorer..."), tr(
"Show or hide the data source explorer"),
2664 true,
false,
true, m_menubar);
2665 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);
2666 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);
2682 initAction(m_pluginsManager,
"plugin",
"Plugins.Management", tr(
"&Manage Plugins..."), tr(
"Manage the application plugins"),
true,
false,
true, m_menubar);
2685 initAction(m_helpContents,
"help-browser",
"Help.View Help", tr(
"&View Help..."), tr(
"Shows help dialog"),
true,
false,
true, m_menubar);
2687 initAction(m_helpAbout,
"help-about-browser",
"Help.About", tr(
"&About..."), tr(
""),
true,
false,
false, m_menubar);
2690 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);
2691 initAction(m_projectAddFolderLayer,
"folderlayer-new",
"Project.New Folder Layer", tr(
"Add &Folder Layer..."), tr(
"Add a new folder layer"),
true,
false,
true, m_menubar);
2692 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);
2693 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);
2694 initAction(m_projectRemoveLayer,
"layer-remove",
"Project.Remove Layer", tr(
"&Remove Layer(s)"), tr(
"Remove layer(s) from the project"),
true,
false,
true,
this);
2695 initAction(m_projectRenameLayer,
"layer-rename",
"Project.Rename Layer", tr(
"Rename Layer..."), tr(
"Rename layer"),
true,
false,
true,
this);
2696 initAction(m_projectChangeLayerDataSource,
"",
"Project.Change Layer Data Source", tr(
"&Change Layer Data Source"), tr(
"Chanage layer Data Source"),
true,
false,
true,
this);
2697 initAction(m_projectUpdateLayerDataSource,
"",
"Project.Update Layer Data Source", tr(
"&Update Layer Data Source"), tr(
"Update layer Data Source"),
true,
false,
true,
this);
2698 initAction(m_projectProperties,
"document-info",
"Project.Properties", tr(
"&Properties..."), tr(
"Show the project properties"),
true,
false,
true, m_menubar);
2702 initAction(m_layerRemoveObjectSelection,
"pointer-remove-selection",
"Layer.Remove Selection", tr(
"&Remove Selection"), tr(
""),
true,
false,
true, m_menubar);
2703 initAction(m_layerRemoveItem,
"item-remove",
"Layer.Remove Item", tr(
"&Remove Item"), tr(
""),
true,
false,
true, m_menubar);
2704 initAction(m_layerObjectGrouping,
"grouping",
"Layer.ObjectGrouping", tr(
"&Edit Legend..."), tr(
""),
true,
false,
true, m_menubar);
2705 initAction(m_layerProperties,
"layer-info",
"Layer.Properties", tr(
"&Properties..."), tr(
""),
true,
false,
true, m_menubar);
2706 initAction(m_layerSRS,
"layer-srs",
"Layer.SRS", tr(
"&Inform SRS..."), tr(
""),
true,
false,
true, m_menubar);
2707 initAction(m_layerShowTable,
"view-data-table",
"Layer.Show Table", tr(
"S&how Table"), tr(
""),
true,
false,
true, m_menubar);
2708 initAction(m_layerChartsHistogram,
"chart-bar",
"Layer.Charts.Histogram", tr(
"&Histogram..."), tr(
""),
true,
false,
true, m_menubar);
2709 initAction(m_layerChartsScatter,
"chart-scatter",
"Layer.Charts.Scatter", tr(
"&Scatter..."), tr(
""),
true,
false,
true, m_menubar);
2710 initAction(m_layerChart,
"chart-pie",
"Layer.Charts.Chart", tr(
"&Pie/Bar Chart..."), tr(
""),
true,
false,
true, m_menubar);
2711 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,
false, m_menubar);
2712 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);
2713 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);
2714 initAction(m_queryLayer,
"view-filter",
"Layer.Query", tr(
"Query..."), tr(
""),
true,
false,
true, m_menubar);
2715 initAction(m_layerLinkTable,
"layer-link",
"Layer.Link", tr(
"&Link..."), tr(
""),
true,
false,
true, m_menubar);
2716 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);
2719 initAction(m_fileNewProject,
"document-new",
"File.New Project", tr(
"&New Project..."), tr(
""),
true,
false,
true, m_menubar);
2720 initAction(m_fileSaveProject,
"document-save",
"File.Save Project", tr(
"&Save Project"), tr(
""),
true,
false,
true, m_menubar);
2721 initAction(m_fileSaveProjectAs,
"document-save-as",
"File.Save Project As", tr(
"Save Project &As..."), tr(
""),
true,
false,
false, m_menubar);
2722 initAction(m_fileOpenProject,
"document-open",
"File.Open Project", tr(
"&Open Project..."), tr(
""),
true,
false,
true, m_menubar);
2723 initAction(m_fileRestartSystem,
"",
"File.Restart System", tr(
"&Restart System..."), tr(
"Restart the system."),
true,
false,
true, m_menubar);
2724 initAction(m_fileExit,
"system-log-out",
"File.Exit", tr(
"E&xit"), tr(
""),
true,
false,
true, m_menubar);
2725 initAction(m_filePrintPreview,
"document-print-preview",
"File.Print Preview", tr(
"Print Pre&view..."), tr(
""),
true,
false,
false, m_menubar);
2726 initAction(m_filePrint,
"document-print",
"File.Print", tr(
"&Print..."), tr(
""),
true,
false,
false, m_menubar);
2729 initAction(m_mapSRID,
"srs",
"Map.SRID", tr(
"&SRS..."), tr(
"Config the Map SRS"),
true,
false,
true, m_menubar);
2730 initAction(m_mapUnknownSRID,
"srs-unknown",
"Map.UnknownSRID", tr(
"&Set Unknown SRS"), tr(
"Set the Map SRS to unknown"),
true,
false,
true, m_menubar);
2731 initAction(m_mapDraw,
"map-draw",
"Map.Draw", tr(
"&Draw"), tr(
"Draw the visible layers"),
true,
false,
true, m_menubar);
2732 initAction(m_mapZoomIn,
"zoom-in",
"Map.Zoom In", tr(
"Zoom &In"), tr(
""),
true,
true,
true, m_menubar);
2733 initAction(m_mapZoomOut,
"zoom-out",
"Map.Zoom Out", tr(
"Zoom &Out"), tr(
""),
true,
true,
true, m_menubar);
2734 initAction(m_mapPan,
"pan",
"Map.Pan", tr(
"&Pan"), tr(
""),
true,
true,
true, m_menubar);
2735 initAction(m_mapZoomExtent,
"zoom-extent",
"Map.Zoom Extent", tr(
"Zoom &Extent"), tr(
""),
true,
false,
true, m_menubar);
2736 initAction(m_mapPreviousExtent,
"edit-undo",
"Map.Previous Extent", tr(
"&Previous Extent"), tr(
""),
true,
false,
false, m_menubar);
2737 initAction(m_mapNextExtent,
"edit-redo",
"Map.Next Extent", tr(
"&Next Extent"), tr(
""),
true,
false,
false, m_menubar);
2738 initAction(m_mapInfo,
"pointer-info",
"Map.Info", tr(
"&Info"), tr(
""),
true,
true,
true, m_menubar);
2739 initAction(m_mapRemoveSelection,
"pointer-remove-selection",
"Map.Remove Selection", tr(
"&Remove Selection"), tr(
""),
true,
false,
true, m_menubar);
2740 initAction(m_mapSelection,
"pointer-selection",
"Map.Selection", tr(
"&Selection"), tr(
""),
true,
true,
true, m_menubar);
2741 initAction(m_mapMeasureDistance,
"distance-measure",
"Map.Measure Distance", tr(
"Measure &Distance"), tr(
""),
true,
true,
true, m_menubar);
2742 initAction(m_mapMeasureArea,
"area-measure",
"Map.Measure Area", tr(
"Measure &Area"), tr(
""),
true,
true,
true, m_menubar);
2743 initAction(m_mapMeasureAngle,
"angle-measure",
"Map.Measure Angle", tr(
"Measure &Angle"), tr(
""),
true,
true,
true, m_menubar);
2744 initAction(m_mapStopDrawing,
"map-draw-cancel",
"Map.Stop Drawing", tr(
"&Stop Drawing"), tr(
"Stop all drawing tasks"),
true,
false,
true, m_menubar);
2750 m_menubar->setObjectName(
"menubar");
2751 m_menubar->setGeometry(QRect(0, 0, 640, 21));
2754 m_fileMenu->setObjectName(
"File");
2755 m_fileMenu->setTitle(tr(
"&File"));
2757 m_recentProjectsMenu->setObjectName(
"File.Recent Projects");
2758 m_recentProjectsMenu->setTitle(tr(
"Recent &Projects"));
2760 m_fileMenu->addAction(m_fileNewProject);
2761 m_fileMenu->addAction(m_fileOpenProject);
2762 m_fileMenu->addAction(m_fileSaveProject);
2763 m_fileMenu->addAction(m_fileSaveProjectAs);
2764 m_fileMenu->addSeparator();
2765 m_fileMenu->addMenu(m_recentProjectsMenu);
2766 m_recentProjectsMenu->setEnabled(
false);
2767 m_fileMenu->addSeparator();
2768 m_fileMenu->addAction(m_filePrintPreview);
2769 m_fileMenu->addAction(m_filePrint);
2770 m_fileMenu->addSeparator();
2771 m_fileMenu->addAction(m_fileRestartSystem);
2773 #if TE_PLATFORM != TE_PLATFORMCODE_APPLE
2774 m_fileMenu->addSeparator();
2777 m_fileMenu->addAction(m_fileExit);
2800 m_viewMenu->setObjectName(
"View");
2801 m_viewMenu->setTitle(tr(
"&View"));
2803 m_viewToolBarsMenu->setObjectName(
"View.Toolbars");
2804 m_viewToolBarsMenu->setTitle(tr(
"&Toolbars"));
2807 m_viewMenu->addAction(m_viewDataTable);
2808 m_viewMenu->addAction(m_viewLayerExplorer);
2809 m_viewMenu->addAction(m_viewStyleExplorer);
2811 m_viewMenu->addSeparator();
2812 m_viewMenu->addAction(m_viewFullScreen);
2813 m_viewMenu->addSeparator();
2814 m_viewMenu->addMenu(m_viewToolBarsMenu);
2818 m_projectMenu->setObjectName(
"Project");
2819 m_projectMenu->setTitle(tr(
"&Project"));
2822 m_projectAddLayerMenu->setObjectName(
"Project.Add Layer");
2823 m_projectAddLayerMenu->setTitle(tr(
"&Add Layer"));
2824 m_projectAddLayerMenu->setIcon(QIcon::fromTheme(
"layer-add"));
2825 m_projectAddLayerMenu->addAction(m_projectAddLayerTabularDataSet);
2826 m_projectAddLayerMenu->addAction(m_projectAddLayerDataset);
2827 m_projectAddLayerMenu->addSeparator();
2828 m_projectAddLayerMenu->addAction(m_projectAddLayerQueryDataSet);
2829 m_projectAddLayerMenu->addSeparator();
2830 m_projectMenu->addAction(m_projectAddFolderLayer);
2831 m_projectMenu->addSeparator();
2832 m_projectMenu->addAction(m_projectRemoveLayer);
2833 m_projectMenu->addAction(m_projectRenameLayer);
2834 m_projectMenu->addSeparator();
2835 m_projectMenu->addAction(m_projectProperties);
2837 m_layerMenu->setObjectName(
"Layer");
2838 m_layerMenu->setTitle(tr(
"&Layer"));
2840 m_layerMenu->addAction(m_layerObjectGrouping);
2841 m_layerMenu->addAction(m_layerChartsHistogram);
2842 m_layerMenu->addAction(m_layerChart);
2843 m_layerMenu->addAction(m_queryLayer);
2844 m_layerMenu->addAction(m_layerChartsScatter);
2845 m_layerMenu->addSeparator();
2846 m_layerMenu->addAction(m_layerFitOnMapDisplay);
2847 m_layerMenu->addAction(m_layerFitSelectedOnMapDisplay);
2848 m_layerMenu->addAction(m_layerPanToSelectedOnMapDisplay);
2849 m_layerMenu->addSeparator();
2850 m_layerMenu->addAction(m_layerShowTable);
2851 m_layerMenu->addAction(m_viewStyleExplorer);
2852 m_layerMenu->addSeparator();
2853 m_layerMenu->addAction(m_layerRemoveObjectSelection);
2854 m_layerMenu->addSeparator();
2855 m_layerMenu->addAction(m_layerSRS);
2856 m_layerMenu->addSeparator();
2857 m_layerMenu->addAction(m_layerProperties);
2866 m_mapMenu->setObjectName(
"Map");
2867 m_mapMenu->setTitle(tr(
"&Map"));
2869 m_mapMenu->addAction(m_mapDraw);
2870 m_mapMenu->addAction(m_mapStopDrawing);
2871 m_mapMenu->addSeparator();
2872 m_mapMenu->addAction(m_mapInfo);
2873 m_mapMenu->addAction(m_mapRemoveSelection);
2874 m_mapMenu->addAction(m_mapSelection);
2875 m_mapMenu->addSeparator();
2876 m_mapMenu->addAction(m_mapPan);
2877 m_mapMenu->addAction(m_mapZoomExtent);
2878 m_mapMenu->addAction(m_mapZoomIn);
2879 m_mapMenu->addAction(m_mapZoomOut);
2880 m_mapMenu->addSeparator();
2881 m_mapMenu->addAction(m_mapNextExtent);
2882 m_mapMenu->addAction(m_mapPreviousExtent);
2883 m_mapMenu->addSeparator();
2884 m_mapMenu->addAction(m_mapMeasureAngle);
2885 m_mapMenu->addAction(m_mapMeasureArea);
2886 m_mapMenu->addAction(m_mapMeasureDistance);
2887 m_mapMenu->addSeparator();
2888 m_mapMenu->addAction(m_mapSRID);
2889 m_mapMenu->addAction(m_mapUnknownSRID);
2892 QActionGroup* mapToolsGroup =
new QActionGroup(m_mapMenu);
2893 mapToolsGroup->setObjectName(
"Map.ToolsGroup");
2894 mapToolsGroup->addAction(m_mapZoomIn);
2895 mapToolsGroup->addAction(m_mapZoomOut);
2896 mapToolsGroup->addAction(m_mapPan);
2897 mapToolsGroup->addAction(m_mapMeasureDistance);
2898 mapToolsGroup->addAction(m_mapMeasureArea);
2899 mapToolsGroup->addAction(m_mapMeasureAngle);
2900 mapToolsGroup->addAction(m_mapInfo);
2901 mapToolsGroup->addAction(m_mapSelection);
2902 mapToolsGroup->addAction(m_mapRemoveSelection);
2907 m_toolsMenu->setObjectName(
"Tools");
2908 m_toolsMenu->setTitle(tr(
"&Tools"));
2912 m_toolsExchangerMenu->setObjectName(
"Tools.Exchanger");
2913 m_toolsExchangerMenu->setTitle(tr(
"&Data Exchanger"));
2914 m_toolsExchangerMenu->setIcon(QIcon::fromTheme(
"datasource-exchanger"));
2915 m_toolsExchangerMenu->addAction(m_toolsDataExchangerDirect);
2916 m_toolsExchangerMenu->addAction(m_toolsDataExchanger);
2918 m_toolsMenu->addAction(m_toolsDataSourceExplorer);
2919 m_toolsMenu->addAction(m_toolsQueryDataSource);
2920 m_toolsMenu->addSeparator();
2921 m_toolsMenu->addAction(m_toolsRasterMultiResolution);
2923 m_toolsMenu->addSeparator();
2924 m_toolsMenu->addAction(m_toolsCustomize);
2927 m_pluginsMenu->setObjectName(
"Plugins");
2928 m_pluginsMenu->setTitle(tr(
"Pl&ugins"));
2930 m_pluginsMenu->addSeparator()->setObjectName(
"ManagePluginsSeparator");
2931 m_pluginsMenu->addAction(m_pluginsManager);
2934 m_helpMenu->setObjectName(
"Help");
2935 m_helpMenu->setTitle(tr(
"&Help"));
2937 m_helpMenu->addAction(m_helpContents);
2941 setMenuBar(m_menubar);
2950 m_statusbar =
new QStatusBar(
this);
2951 m_statusbar->setObjectName(
"StatusBar");
2952 setStatusBar(m_statusbar);
2955 std::vector<QToolBar*>::iterator it;
2957 for(it=bars.begin(); it!=bars.end(); ++it)
2959 QToolBar* bar = *it;
2960 addToolBar(Qt::TopToolBarArea, bar);
2961 m_viewToolBarsMenu->addAction(bar->toggleViewAction());
2969 m_selected =
new QLabel(m_statusbar);
2970 m_selected->setText(tr(
"Selected rows: 0"));
2971 m_statusbar->addPermanentWidget(m_selected);
2974 QToolButton* mapUnknownSRIDToolButton =
new QToolButton(m_statusbar);
2975 mapUnknownSRIDToolButton->setDefaultAction(m_mapUnknownSRID);
2976 m_statusbar->addPermanentWidget(mapUnknownSRIDToolButton);
2979 QToolButton* mapSRIDToolButton =
new QToolButton(m_statusbar);
2980 mapSRIDToolButton->setDefaultAction(m_mapSRID);
2981 m_statusbar->addPermanentWidget(mapSRIDToolButton);
2984 m_mapSRIDLineEdit =
new QLineEdit(m_statusbar);
2985 m_mapSRIDLineEdit->setFixedWidth(120);
2986 m_mapSRIDLineEdit->setAlignment(Qt::AlignHCenter);
2987 m_mapSRIDLineEdit->setEnabled(
false);
2989 int srid = m_display->getDisplay()->getSRID();
2990 srid !=
TE_UNKNOWN_SRS ? m_mapSRIDLineEdit->setText(
"EPSG:" + QString::number(srid)) : m_mapSRIDLineEdit->setText(tr(
"Unknown SRS"));
2991 m_statusbar->addPermanentWidget(m_mapSRIDLineEdit);
2994 m_coordinateLineEdit =
new QLineEdit(m_statusbar);
2995 m_coordinateLineEdit->setFixedWidth(220);
2996 m_coordinateLineEdit->setAlignment(Qt::AlignHCenter);
2997 m_coordinateLineEdit->setReadOnly(
true);
2998 m_coordinateLineEdit->setFocusPolicy(Qt::NoFocus);
2999 m_coordinateLineEdit->setText(tr(
"Coordinates"));
3000 m_statusbar->addPermanentWidget(m_coordinateLineEdit);
3003 QToolButton* stopDrawToolButton =
new QToolButton(m_statusbar);
3004 stopDrawToolButton->setDefaultAction(m_mapStopDrawing);
3005 m_statusbar->addPermanentWidget(stopDrawToolButton);
3010 connect(m_fileExit, SIGNAL(triggered()), SLOT(close()));
3011 connect(m_fileRestartSystem, SIGNAL(triggered()), SLOT(onRestartSystemTriggered()));
3012 connect(m_projectAddLayerDataset, SIGNAL(triggered()), SLOT(onAddDataSetLayerTriggered()));
3013 connect(m_projectAddLayerQueryDataSet, SIGNAL(triggered()), SLOT(onAddQueryLayerTriggered()));
3014 connect(m_projectAddLayerTabularDataSet, SIGNAL(triggered()), SLOT(onAddTabularLayerTriggered()));
3015 connect(m_projectRemoveLayer, SIGNAL(triggered()), SLOT(onRemoveLayerTriggered()));
3016 connect(m_projectRenameLayer, SIGNAL(triggered()), SLOT(onRenameLayerTriggered()));
3017 connect(m_projectProperties, SIGNAL(triggered()), SLOT(onProjectPropertiesTriggered()));
3018 connect(m_projectChangeLayerDataSource, SIGNAL(triggered()), SLOT(onChangeLayerDataSourceTriggered()));
3019 connect(m_projectUpdateLayerDataSource, SIGNAL(triggered()), SLOT(onUpdateLayerDataSourceTriggered()));
3020 connect(m_pluginsManager, SIGNAL(triggered()), SLOT(onPluginsManagerTriggered()));
3021 connect(m_recentProjectsMenu, SIGNAL(triggered(QAction*)), SLOT(onRecentProjectsTriggered(QAction*)));
3022 connect(m_fileNewProject, SIGNAL(triggered()), SLOT(onNewProjectTriggered()));
3023 connect(m_fileOpenProject, SIGNAL(triggered()), SLOT(onOpenProjectTriggered()));
3024 connect(m_fileSaveProject, SIGNAL(triggered()), SLOT(onSaveProjectTriggered()));
3025 connect(m_fileSaveProjectAs, SIGNAL(triggered()), SLOT(onSaveProjectAsTriggered()));
3026 connect(m_toolsCustomize, SIGNAL(triggered()), SLOT(onToolsCustomizeTriggered()));
3027 connect(m_toolsDataExchanger, SIGNAL(triggered()), SLOT(onToolsDataExchangerTriggered()));
3028 connect(m_toolsDataExchangerDirect, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectTriggered()));
3029 connect(m_toolsDataExchangerDirectPopUp, SIGNAL(triggered()), SLOT(onToolsDataExchangerDirectPopUpTriggered()));
3030 connect(m_toolsQueryDataSource, SIGNAL(triggered()), SLOT(onToolsQueryDataSourceTriggered()));
3031 connect(m_toolsRasterMultiResolution, SIGNAL(triggered()), SLOT(onToolsRasterMultiResolutionTriggered()));
3033 connect(m_helpContents, SIGNAL(triggered()), SLOT(onHelpTriggered()));
3034 connect(m_layerChartsHistogram, SIGNAL(triggered()), SLOT(onLayerHistogramTriggered()));
3035 connect(m_layerLinkTable, SIGNAL(triggered()), SLOT(onLinkTriggered()));
3036 connect(m_layerChartsScatter, SIGNAL(triggered()), SLOT(onLayerScatterTriggered()));
3037 connect(m_layerChart, SIGNAL(triggered()), SLOT(onLayerChartTriggered()));
3038 connect(m_projectAddFolderLayer, SIGNAL(triggered()), SLOT(onAddFolderLayerTriggered()));
3039 connect(m_layerProperties, SIGNAL(triggered()), SLOT(onLayerPropertiesTriggered()));
3040 connect(m_layerRemoveObjectSelection, SIGNAL(triggered()), SLOT(onLayerRemoveSelectionTriggered()));
3041 connect(m_layerRemoveItem, SIGNAL(triggered()), SLOT(onLayerRemoveItemTriggered()));
3042 connect(m_layerSRS, SIGNAL(triggered()), SLOT(onLayerSRSTriggered()));
3043 connect(m_layerObjectGrouping, SIGNAL(triggered()), SLOT(onLayerGroupingTriggered()));
3044 connect(m_mapSRID, SIGNAL(triggered()), SLOT(onMapSRIDTriggered()));
3045 connect(m_mapUnknownSRID, SIGNAL(triggered()), SLOT(onMapSetUnknwonSRIDTriggered()));
3046 connect(m_mapDraw, SIGNAL(triggered()), SLOT(onDrawTriggered()));
3047 connect(m_layerFitOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitOnMapDisplayTriggered()));
3048 connect(m_layerFitSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerFitSelectedOnMapDisplayTriggered()));
3049 connect(m_layerPanToSelectedOnMapDisplay, SIGNAL(triggered()), SLOT(onLayerPanToSelectedOnMapDisplayTriggered()));
3050 connect(m_layerCompositionMode, SIGNAL(hovered()), SLOT(onLayerCompositionModeTriggered()));
3051 connect(m_queryLayer, SIGNAL(triggered()), SLOT(onQueryLayerTriggered()));
3052 connect(m_mapZoomIn, SIGNAL(toggled(
bool)), SLOT(onZoomInToggled(
bool)));
3053 connect(m_mapZoomOut, SIGNAL(toggled(
bool)), SLOT(onZoomOutToggled(
bool)));
3054 connect(m_mapPreviousExtent, SIGNAL(triggered()), SLOT(onPreviousExtentTriggered()));
3055 connect(m_mapNextExtent, SIGNAL(triggered()), SLOT(onNextExtentTriggered()));
3056 connect(m_mapPan, SIGNAL(toggled(
bool)), SLOT(onPanToggled(
bool)));
3057 connect(m_mapZoomExtent, SIGNAL(triggered()), SLOT(onZoomExtentTriggered()));
3058 connect(m_mapInfo, SIGNAL(toggled(
bool)), SLOT(onInfoToggled(
bool)));
3059 connect(m_mapRemoveSelection, SIGNAL(triggered()), SLOT(onMapRemoveSelectionTriggered()));
3060 connect(m_mapSelection, SIGNAL(toggled(
bool)), SLOT(onSelectionToggled(
bool)));
3061 connect(m_mapMeasureDistance, SIGNAL(toggled(
bool)), SLOT(onMeasureDistanceToggled(
bool)));
3062 connect(m_mapMeasureArea, SIGNAL(toggled(
bool)), SLOT(onMeasureAreaToggled(
bool)));
3063 connect(m_mapMeasureAngle, SIGNAL(toggled(
bool)), SLOT(onMeasureAngleToggled(
bool)));
3064 connect(m_mapStopDrawing, SIGNAL(triggered()), SLOT(onStopDrawTriggered()));
3065 connect(m_layerShowTable, SIGNAL(triggered()), SLOT(onLayerShowTableTriggered()));
3066 connect(m_viewFullScreen, SIGNAL(toggled(
bool)), SLOT(onFullScreenToggled(
bool)));
3067 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)
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()
std::list< te::map::AbstractLayerPtr > getVisibleSingleLayers(bool invalid=true)
It gets all the single layers that are visible.
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...