1 /**********************************************************
2  * Version $Id$
3  *********************************************************/
4 
5 ///////////////////////////////////////////////////////////
6 //                                                       //
7 //                         SAGA                          //
8 //                                                       //
9 //      System for Automated Geoscientific Analyses      //
10 //                                                       //
11 //                    User Interface                     //
12 //                                                       //
13 //                    Program: SAGA                      //
14 //                                                       //
15 //-------------------------------------------------------//
16 //                                                       //
17 //                   WKSP_Base_Item.h                    //
18 //                                                       //
19 //          Copyright (C) 2005 by Olaf Conrad            //
20 //                                                       //
21 //-------------------------------------------------------//
22 //                                                       //
23 // This file is part of 'SAGA - System for Automated     //
24 // Geoscientific Analyses'. SAGA is free software; you   //
25 // can redistribute it and/or modify it under the terms  //
26 // of the GNU General Public License as published by the //
27 // Free Software Foundation, either version 2 of the     //
28 // License, or (at your option) any later version.       //
29 //                                                       //
30 // SAGA is distributed in the hope that it will be       //
31 // useful, but WITHOUT ANY WARRANTY; without even the    //
32 // implied warranty of MERCHANTABILITY or FITNESS FOR A  //
33 // PARTICULAR PURPOSE. See the GNU General Public        //
34 // License for more details.                             //
35 //                                                       //
36 // You should have received a copy of the GNU General    //
37 // Public License along with this program; if not, see   //
38 // <http://www.gnu.org/licenses/>.                       //
39 //                                                       //
40 //-------------------------------------------------------//
41 //                                                       //
42 //    contact:    Olaf Conrad                            //
43 //                Institute of Geography                 //
44 //                University of Goettingen               //
45 //                Goldschmidtstr. 5                      //
46 //                37077 Goettingen                       //
47 //                Germany                                //
48 //                                                       //
49 //    e-mail:     oconrad@saga-gis.org                   //
50 //                                                       //
51 ///////////////////////////////////////////////////////////
52 
53 //---------------------------------------------------------
54 
55 
56 ///////////////////////////////////////////////////////////
57 //														 //
58 //														 //
59 //														 //
60 ///////////////////////////////////////////////////////////
61 
62 //---------------------------------------------------------
63 #ifndef _HEADER_INCLUDED__SAGA_GUI__WKSP_Base_Item_H
64 #define _HEADER_INCLUDED__SAGA_GUI__WKSP_Base_Item_H
65 
66 
67 ///////////////////////////////////////////////////////////
68 //														 //
69 //														 //
70 //														 //
71 ///////////////////////////////////////////////////////////
72 
73 //---------------------------------------------------------
74 #include <wx/menu.h>
75 #include <wx/treectrl.h>
76 
77 #include <saga_api/saga_api.h>
78 
79 #include "view_base.h"
80 
81 
82 ///////////////////////////////////////////////////////////
83 //														 //
84 //														 //
85 //														 //
86 ///////////////////////////////////////////////////////////
87 
88 //---------------------------------------------------------
89 #define LAYER_DRAW_FLAG_NOEDITS		0x01
90 #define LAYER_DRAW_FLAG_NOLABELS	0x02
91 #define LAYER_DRAW_FLAG_THUMBNAIL	0x04
92 
93 
94 ///////////////////////////////////////////////////////////
95 //														 //
96 //														 //
97 //														 //
98 ///////////////////////////////////////////////////////////
99 
100 //---------------------------------------------------------
101 typedef enum
102 {
103 	WKSP_ITEM_Tool_Manager,
104 	WKSP_ITEM_Tool_Group,
105 	WKSP_ITEM_Tool_Library,
106 	WKSP_ITEM_Tool,
107 
108 	WKSP_ITEM_Data_Manager,
109 
110 	WKSP_ITEM_Table_Manager,
111 	WKSP_ITEM_Table,
112 
113 	WKSP_ITEM_Shapes_Manager,
114 	WKSP_ITEM_Shapes_Type,
115 	WKSP_ITEM_Shapes,
116 
117 	WKSP_ITEM_TIN_Manager,
118 	WKSP_ITEM_TIN,
119 
120 	WKSP_ITEM_PointCloud_Manager,
121 	WKSP_ITEM_PointCloud,
122 
123 	WKSP_ITEM_Grid_Manager,
124 	WKSP_ITEM_Grid_System,
125 	WKSP_ITEM_Grid,
126 	WKSP_ITEM_Grids,
127 
128 	WKSP_ITEM_Map_Manager,
129 	WKSP_ITEM_Map,
130 	WKSP_ITEM_Map_Layer,
131 	WKSP_ITEM_Map_Graticule,
132 	WKSP_ITEM_Map_BaseMap,
133 
134 	WKSP_ITEM_Undefined
135 }
136 TWKSP_Item;
137 
138 
139 ///////////////////////////////////////////////////////////
140 //														 //
141 //														 //
142 //														 //
143 ///////////////////////////////////////////////////////////
144 
145 //---------------------------------------------------------
146 class CWKSP_Base_Item : public wxTreeItemData
147 {
148 	friend class CWKSP_Base_Manager;
149 
150 public:
151 	CWKSP_Base_Item(void);
152 	virtual ~CWKSP_Base_Item(void);
153 
Get_Type(void)154 	virtual TWKSP_Item				Get_Type				(void)	{	return( WKSP_ITEM_Undefined );	}
155 
Get_Name(void)156 	virtual wxString				Get_Name				(void)	{	return( wxEmptyString );		}
Get_Description(void)157 	virtual wxString				Get_Description			(void)	{	return( wxEmptyString );		}
158 
Get_Menu(void)159 	virtual wxMenu *				Get_Menu				(void)	{	return( NULL );					}
160 
161 	virtual bool					On_Command				(int Cmd_ID);
162 	virtual bool					On_Command_UI			(wxUpdateUIEvent &event);
163 
164 	virtual bool					On_Data_Deletion		(CSG_Data_Object *pObject);
165 
166 	virtual CSG_Parameters *		Get_Parameters			(void);
167 	virtual CSG_Parameter *			Get_Parameter			(const CSG_String &Identifier);
168 	virtual void					Parameters_Changed		(void);
169 
170 	class CWKSP_Base_Control *		Get_Control				(void);
Get_Manager(void)171 	class CWKSP_Base_Manager *		Get_Manager				(void)	{	return( m_pManager );	}
172 
Get_ID(void)173 	int								Get_ID					(void)	{	return( m_ID );			}
174 	int								Get_Index				(void);
175 
is_Manager(void)176 	bool							is_Manager				(void)	{	return( m_bManager );	}
177 	bool							is_Selected				(void);
178 
179 	static wxString					Get_Type_Name			(TWKSP_Item Type);
180 
181 
182 protected:
183 
184 	CSG_Parameters					m_Parameters;
185 
186 
187 	virtual void					On_Create_Parameters	(void);
188 
189 	virtual int						On_Parameter_Changed	(CSG_Parameters *pParameters, CSG_Parameter *pParameter, int Flags);
190 
191 
192 	static int						Parameter_Callback		(CSG_Parameter *pParameter, int Flags);
193 
194 
195 private:
196 
197 	bool							m_bManager;
198 
199 	int								m_ID;
200 
201 	CWKSP_Base_Manager				*m_pManager;
202 
203 
204 	bool							_On_Data_Deletion		(CSG_Parameters &Parameters, CSG_Data_Object *pObject);
205 
206 };
207 
208 
209 ///////////////////////////////////////////////////////////
210 //														 //
211 //														 //
212 //														 //
213 ///////////////////////////////////////////////////////////
214 
215 //---------------------------------------------------------
216 #endif // #ifndef _HEADER_INCLUDED__SAGA_GUI__WKSP_Base_Item_H
217