All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Info.h
Go to the documentation of this file.
1 /* Copyright (C) 2001-2009 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/qt/widgets/tools/Info.h
22 
23  \brief This class implements a concrete tool to get informations about a specified feature using pointing operation.
24 */
25 
26 #ifndef __TERRALIB_QT_WIDGETS_INTERNAL_INFO_H
27 #define __TERRALIB_QT_WIDGETS_INTERNAL_INFO_H
28 
29 // TerraLib
30 #include "../../../maptools/AbstractLayer.h"
31 #include "../Config.h"
32 #include "AbstractTool.h"
33 
34 // Qt
35 #include <QtGui/QTreeWidget>
36 #include <QtGui/QTreeWidgetItem>
37 
38 // STL
39 #include <list>
40 
41 namespace te
42 {
43  namespace da
44  {
45  class DataSet;
46  }
47 
48  namespace gm
49  {
50  class Envelope;
51  class Geometry;
52  }
53 
54  namespace rst
55  {
56  class Raster;
57  }
58 
59  namespace qt
60  {
61  namespace widgets
62  {
63 // Forward declarations
64  class MapDisplay;
65 
66  /*!
67  \class Info
68 
69  \brief This class implements a concrete tool to get informations about a specified feature using pointing operation.
70 
71  \ingroup widgets
72  */
74  {
75  Q_OBJECT
76 
77  public:
78 
79  /** @name Initializer Methods
80  * Methods related to instantiation and destruction.
81  */
82  //@{
83 
84  /*!
85  \brief It constructs a info tool associated with the given map display.
86 
87  \param display The map display associated with the tool.
88  \param cursor The tool cursor.
89  \param layers The layer list that will be queried.
90  \param parent The tool's parent.
91 
92  \note The tool will NOT take the ownership of the given pointers.
93  */
94  Info(MapDisplay* display, const QCursor& cursor, const std::list<te::map::AbstractLayerPtr>& layers, QObject* parent = 0);
95 
96  /*! \brief Destructor. */
97  ~Info();
98 
99  //@}
100 
101  /** @name AbstractTool Methods
102  * Methods related with tool behavior.
103  */
104  //@{
105 
106  bool mouseReleaseEvent(QMouseEvent* e);
107 
108  //@}
109 
110  public slots:
111 
112  void setLayers(const std::list<te::map::AbstractLayerPtr>& layers);
113 
114  private:
115 
116  void getInfo(const te::map::AbstractLayerPtr& layer, const te::gm::Envelope& e);
117 
118  void getGeometryInfo(QTreeWidgetItem* layerItem, te::da::DataSet* dataset, const te::gm::Envelope& e, int srid, bool needRemap);
119 
120  void getRasterInfo(QTreeWidgetItem* layerItem, te::rst::Raster* raster, const te::gm::Envelope& e, int srid, bool needRemap);
121 
122  void drawGeometry(te::gm::Geometry* g);
123 
124  private:
125 
126  std::list<te::map::AbstractLayerPtr> m_layers; //!<The layer list that will be queried.
127  QTreeWidget* m_infoWidget; //!< Widget used to show the informations.
128  };
129 
130  } // end namespace widgets
131  } // end namespace qt
132 } // end namespace te
133 
134 #endif // __TERRALIB_QT_WIDGETS_INTERNAL_INFO_H
#define TEQTWIDGETSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:101
QTreeWidget * m_infoWidget
Widget used to show the informations.
Definition: Info.h:127
This class defines an interface for objects that can receive application events and respond to them...
Definition: AbstractTool.h:62
This class implements a concrete tool to get informations about a specified feature using pointing op...
Definition: Info.h:73
Abstract tool concept.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:73
A widget to control the display of a set of layers.
Definition: MapDisplay.h:65
An abstract class for raster data strucutures.
Definition: Raster.h:70
std::list< te::map::AbstractLayerPtr > m_layers
The layer list that will be queried.
Definition: Info.h:126
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:111