Umasoft
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
LayerDlg.h
1 //
2 // Name: LayerDlg.h
3 //
4 // Copyright (c) 2003-2011 Virtual Terrain Project
5 // Free for all uses, see license.txt for details.
6 //
7 
8 #ifndef __LayerDlg_H__
9 #define __LayerDlg_H__
10 
11 #include "wx/imaglist.h"
12 #include "wx/aui/aui.h"
13 
14 #include "EnviroUI.h"
15 #include "vtlib/core/AbstractLayer.h"
16 #include "vtlib/core/TerrainLayers.h"
17 #include "vtlib/core/Globe.h"
18 
19 enum LayerType
20 {
21  LT_UNKNOWN = -1,
22  LT_ABSTRACT,
23  LT_ROAD,
24  LT_STRUCTURE,
25  LT_VEG,
26  LT_IMAGE,
27 // LT_ELEVATION, // these aren't layer types in enviro.. yet :)
28 // LT_WATER,
29 // LT_TRANSIT,
30 // LT_UTILITY,
31  LAYER_TYPES
32 };
33 
34 // WDR: class declarations
35 class LayerItemData : public wxTreeItemData
36 {
37 public:
38  LayerItemData(vtStructureLayer *slay, int index, int item)
39  {
40  Defaults();
41  m_type = LT_STRUCTURE;
42  m_layer = m_slay = slay;
43  m_index = index;
44  m_item = item;
45  }
47  {
48  Defaults();
49  m_type = LT_ABSTRACT;
50  m_layer = m_alay = alay;
51  m_fset = set;
52  }
54  {
55  Defaults();
56  m_type = LT_IMAGE;
57  m_layer = m_ilay = ilay;
58  }
60  {
61  Defaults();
62  m_type = LT_ABSTRACT;
63  m_glay = glay;
64  m_fset = glay->m_pSet;
65  }
66  LayerItemData(LayerType type)
67  {
68  Defaults();
69  m_type = type;
70  }
71  void Defaults()
72  {
73  m_layer = NULL;
74  m_alay = NULL;
75  m_slay = NULL;
76  m_glay = NULL;
77  m_fset = NULL;
78  m_index = -1;
79  m_item = -1;
80  }
81  LayerType m_type;
82  vtLayer *m_layer;
83  vtAbstractLayer *m_alay;
84  vtImageLayer *m_ilay;
85  vtStructureLayer *m_slay;
86  vtFeatureSet *m_fset;
87  GlobeLayer *m_glay;
88  int m_index;
89  int m_item;
90 };
91 
92 
93 //----------------------------------------------------------------------------
94 // LayerDlg
95 //----------------------------------------------------------------------------
96 
97 class LayerDlg: public wxPanel
98 {
99 public:
100  // constructors and destructors
101  LayerDlg( wxWindow *parent, wxWindowID id, const wxString &title,
102  const wxPoint& pos = wxDefaultPosition,
103  const wxSize& size = wxDefaultSize,
104  long style = wxDEFAULT_DIALOG_STYLE );
105  ~LayerDlg();
106 
107  // WDR: method declarations for LayerDlg
108  void RefreshTreeContents();
109  void RefreshTreeTerrain();
110  void UpdateTreeTerrain();
111  void RefreshTreeSpace();
112 
113  void SetShowAll(bool bTrue);
114  void UpdateEnabling();
115 
116  // Public handler declarations for LayerDlg
117  void OnLayerCreate( wxCommandEvent &event );
118  void OnLayerLoad( wxCommandEvent &event );
119 
120 private:
121  // WDR: member variable declarations for LayerDlg
122  wxTreeCtrl *m_pTree;
123  wxTreeItemId m_root;
124  wxTreeItemId m_item;
125  wxImageList *m_imageListNormal;
126  bool m_bShowAll;
127 
128 private:
129  wxAuiManager m_mgr;
130  wxPanel *m_main;
131  wxToolBar *m_pToolbar;
132 
133  osg::Node *GetNodeFromItem(wxTreeItemId item, bool bContainer = false);
134  vtStructureLayer *GetStructureLayerFromItem(wxTreeItemId item);
135  vtLayer *GetLayerFromItem(wxTreeItemId item);
136  LayerItemData *GetLayerDataFromItem(wxTreeItemId item);
137  void ToggleVisible(bool bVis, wxTreeItemId id);
138  void CreateImageList(int size = 16);
139 
140  // WDR: handler declarations for LayerDlg
141  void OnLayerRemove( wxCommandEvent &event );
142  void OnLayerSave( wxCommandEvent &event );
143  void OnLayerSaveAs( wxCommandEvent &event );
144  void OnZoomTo( wxCommandEvent &event );
145  void OnVisible( wxCommandEvent &event );
146  void OnTable( wxCommandEvent &event );
147  void OnRefresh( wxCommandEvent &event );
148  void OnShadowVisible( wxCommandEvent &event );
149  void OnShowAll( wxCommandEvent &event );
150  void OnSelChanged( wxTreeEvent &event );
151 
152  void OnUpdateCreate(wxUpdateUIEvent& event);
153  void OnUpdateVisible(wxUpdateUIEvent& event);
154  void OnUpdateRefresh(wxUpdateUIEvent& event);
155  void OnUpdateShadow(wxUpdateUIEvent& event);
156  void OnUpdateShowAll(wxUpdateUIEvent& event);
157 
158 private:
159  DECLARE_EVENT_TABLE()
160 };
161 
162 #endif // __LayerDlg_H__