Updates to AddTask macro from Chris
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterMatrixFrame.h
1 #ifndef ALIMUONPAINTERMATRIXFRAME_H
2 #define ALIMUONPAINTERMATRIXFRAME_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup graphics
10 /// \class AliMUONPainterMatrixFrame
11 /// \brief Widget to plot a matrix of painters
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TGFrame
16 #  include "TGFrame.h"
17 #endif
18 #include <float.h>
19
20 class AliMUONPainterColorSlider;
21 class AliMUONPainterPlotSelector;
22 class AliMUONPainterMatrix;
23 class AliMUONPainterHighlighter;
24 class AliMUONVPainter;
25 class AliMUONVTrackerData;
26 class TGButtonGroup;
27 class TGToolTip;
28 class TList;
29 class TObjArray;
30 class TRootEmbeddedCanvas;
31
32 class AliMUONPainterMatrixFrame : public TGCompositeFrame
33 {
34 public:
35   AliMUONPainterMatrixFrame(const TGWindow* window, UInt_t w, UInt_t h);
36   virtual ~AliMUONPainterMatrixFrame();
37   
38   void Clear(Option_t* opt="");
39
40   void DataRangeAutoRequested();
41   
42   void DataRangeWasChanged(Double_t* range);
43     
44   void DataSourceWasChanged(const char* name, AliMUONVTrackerData* data, Int_t dataIndex);
45
46   void EventInfo(Int_t event, Int_t px, Int_t py, TObject* selected);
47
48   void MouseEnter(AliMUONVPainter* painter); // *SIGNAL*
49
50   void MouseMotion(AliMUONVPainter* painter, Double_t* position); // *SIGNAL*
51
52   void MouseLeave(const AliMUONVPainter* painter); // *SIGNAL*
53   
54   void ResponderButtonWasClicked(Int_t id); 
55
56   void OutlineButtonWasClicked(Int_t id); 
57   
58   void Use(AliMUONPainterMatrix* group);
59   
60   void TitleHasChanged(const char* newTitle); // *SIGNAL*
61   
62   void Update(); 
63
64   /// Get the matrix pointer
65   AliMUONPainterMatrix* Matrix() const { return fPainterMatrix; }
66   
67   void SaveAs(const char* filename="", Option_t* option="") const;
68
69   void UpdateInterface(Bool_t fromScratch);
70   
71 private:
72   /// not implemented
73   AliMUONPainterMatrixFrame(const AliMUONPainterMatrixFrame& rhs);
74   /// not implemented
75   AliMUONPainterMatrixFrame& operator=(const AliMUONPainterMatrixFrame& rhs);
76
77   void ChangeTitle(const TString& title);
78   
79   void ChangeTitle(AliMUONVPainter* painter, const char* basename=0x0,
80                    Double_t x=FLT_MAX, Double_t y=FLT_MAX);
81   
82   void CreateButtons();
83   
84   void UpdateDataRange();
85   
86   void ViewModified();
87   
88 private:
89   AliMUONPainterMatrix* fPainterMatrix; ///< the matrix we plot (not owner)
90   TRootEmbeddedCanvas* fView; ///< the canvas used to plot
91   TGHorizontalFrame* fInterface;  ///< the interface frame
92   TGButtonGroup* fResponderButtons; ///< the responder buttons
93   TGButtonGroup* fOutlineButtons; ///< the outline buttons
94   
95   AliMUONPainterPlotSelector* fPlotSelector; ///< the data source selection
96     
97   AliMUONPainterHighlighter* fPainterHighlighter; ///< the highlighter
98   
99   UInt_t fCanvasWidth; ///< canvas width
100   UInt_t fCanvasHeight; ///< canvas height
101   
102   TGCompositeFrame* fMainFrame; ///< our main frame
103   
104   AliMUONPainterColorSlider* fColorSlider; ///< color slider (for data)
105   
106   ClassDef(AliMUONPainterMatrixFrame,1) // Widget for drawing painter matrix
107 };
108
109 #endif