]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/RGTopFrame.h
Getting rid of effC++ warnings about missing copy constructor and assignment operator.
[u/mrichter/AliRoot.git] / EVE / Reve / RGTopFrame.h
1 // $Header$
2
3 #ifndef REVE_RGTopFrame_H
4 #define REVE_RGTopFrame_H
5
6 #include <TClass.h>
7 #include <TGFrame.h>
8 #include <TGStatusBar.h>
9 #include <TGeoManager.h>
10 #include <TROOT.h>
11 #include <TTimer.h>
12 #include <TVirtualPad.h>
13
14 #include <map>
15
16 class TMacro;
17 class TFolder;
18 class TCanvas;
19 class TGTab;
20 class TGStatusBar;
21 class TGListTree;
22 class TGListTreeItem;
23
24 class TGLViewer;
25
26 namespace Reve {
27
28 class VSDSelector;
29 class RGBrowser;
30 class RGEditor;
31
32 class RenderElement;
33 class PadPrimitive;
34
35 class EventBase;
36
37
38 class RGTopFrame : public TGMainFrame
39 {
40   RGTopFrame(const RGTopFrame&);            // Not implemented
41   RGTopFrame& operator=(const RGTopFrame&); // Not implemented
42
43 public:
44   enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
45
46   class RedrawDisabler
47   {
48   private:
49     RedrawDisabler(const RedrawDisabler&);            // Not implemented
50     RedrawDisabler& operator=(const RedrawDisabler&); // Not implemented
51
52     RGTopFrame* fFrame;
53   public:
54     RedrawDisabler(RGTopFrame* f) : fFrame(f)
55     { if (fFrame) fFrame->DisableRedraw(); }
56     ~RedrawDisabler()
57     { if (fFrame) fFrame->EnableRedraw(); }
58   };
59
60 private:
61   TGCompositeFrame    *fMasterFrame;
62   TGTab               *fMasterTab;
63
64   TCanvas             *fGLCanvas;
65   VSDSelector         *fSelector;
66   RGBrowser           *fBrowser;
67   TGStatusBar         *fStatusBar;
68   const char          *fVSDFile;
69
70   TFolder             *fMacroFolder;
71
72   RGEditor            *fEditor;
73
74   EventBase           *fCurrentEvent;
75   PadPrimitive        *fGlobalStore;
76   Bool_t               fKeepEmptyCont;
77
78   Int_t                fRedrawDisabled;
79   Bool_t               fResetCameras;
80   Bool_t               fDropLogicals;
81   Bool_t               fTimerActive;
82   TTimer               fRedrawTimer;
83
84 protected:
85   LookType_e           fLook;
86
87   std::map<TString, TGeoManager*> fGeometries;
88
89 public:
90   RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
91
92   TGCompositeFrame* GetMasterFrame() { return fMasterFrame; }
93   TGTab*            GetMasterTab()   { return fMasterTab; }
94
95   TCanvas*     GetGLCanvas()   { return fGLCanvas; }
96   VSDSelector* GetSelector()   { return fSelector; }
97   RGBrowser*   GetBrowser()    { return fBrowser; }
98   TGStatusBar* GetStatusBar()  { return fStatusBar; }
99
100   // Temporary cheating.
101   TGLViewer*   GetGLViewer();
102
103   TCanvas*     AddCanvasTab(const char* name);
104
105   TGListTree*        GetListTree() const;
106   EventBase*         GetCurrentEvent() const { return fCurrentEvent; }
107   PadPrimitive*      GetGlobalStore()  const { return fGlobalStore; }
108
109   Bool_t             GetKeepEmptyCont()      { return fKeepEmptyCont; } 
110   void               SetKeepEmptyCont(Bool_t keep) { fKeepEmptyCont=keep; }     
111
112   TFolder*  GetMacroFolder() const { return fMacroFolder; }
113   TMacro*   GetMacro(const Text_t* name) const;
114
115   RGEditor* GetEditor() const { return fEditor; }
116   void EditRenderElement(RenderElement* rnr_element);
117
118   void DisableRedraw() { ++fRedrawDisabled; }
119   void EnableRedraw()  { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); }
120
121   void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
122   {
123     if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D();
124     if(resetCameras) fResetCameras = kTRUE;
125     if(dropLogicals) fDropLogicals = kTRUE;
126   }
127   void RegisterRedraw3D();
128   void DoRedraw3D();
129
130   static int  SpawnGuiAndRun(int argc, char **argv);
131   static void SpawnGui(LookType_e revemode = LT_Editor);
132
133   // These are more like ReveManager stuff.
134   TGListTreeItem* AddEvent(EventBase* event); // Could have Reve::Event ...
135   TGListTreeItem* AddRenderElement(RenderElement* rnr_element);
136   TGListTreeItem* AddRenderElement(RenderElement* parent, RenderElement* rnr_element);
137   TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element);
138   TGListTreeItem* AddGlobalRenderElement(RenderElement* parent, RenderElement* rnr_element);
139
140   void RemoveRenderElement(RenderElement* parent, RenderElement* rnr_element);
141   void PreDeleteRenderElement(RenderElement* rnr_element);
142
143   void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
144   void UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
145
146   void RenderElementChecked(TObject* obj, Bool_t state);
147
148   void NotifyBrowser(TGListTreeItem* parent_lti=0);
149   void NotifyBrowser(RenderElement* parent);
150
151   // Hmmph ... geometry management?
152   TGeoManager* GetGeometry(const TString& filename);
153
154   void ThrowException(const char* text="foo");
155
156   ClassDef(RGTopFrame, 0);
157 };
158
159 } // namespace Reve
160
161 extern Reve::RGTopFrame* gReve;
162
163 #endif