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