00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TContextMenu
00013 #define ROOT_TContextMenu
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ROOT_TContextMenuImp
00027 #include "TContextMenuImp.h"
00028 #endif
00029
00030 #ifndef ROOT_TNamed
00031 #include "TNamed.h"
00032 #endif
00033
00034 class TMethod;
00035 class TFunction;
00036 class TMethodArg;
00037 class TVirtualPad;
00038 class TObjArray;
00039 class TBrowser;
00040 class TToggle;
00041 class TClassMenuItem;
00042
00043
00044 class TContextMenu : public TNamed {
00045
00046 friend class TContextMenuImp;
00047
00048 private:
00049 TContextMenu(const TContextMenu&);
00050 TContextMenu& operator=(const TContextMenu&);
00051
00052 protected:
00053 TContextMenuImp *fContextMenuImp;
00054 TFunction *fSelectedMethod;
00055 TObject *fSelectedObject;
00056 TObject *fCalledObject;
00057 TClassMenuItem *fSelectedMenuItem;
00058 TVirtualPad *fSelectedCanvas;
00059 TVirtualPad *fSelectedPad;
00060 TBrowser *fBrowser;
00061
00062 virtual void DisplayPopUp(Int_t x, Int_t y)
00063 { if (fContextMenuImp) fContextMenuImp->DisplayPopup(x, y); }
00064
00065 private:
00066 TContextMenu();
00067
00068 public:
00069 TContextMenu(const char *name, const char *title = "Context sensitive popup menu");
00070 virtual ~TContextMenu();
00071
00072 virtual void Action(TObject *object, TMethod *method);
00073 virtual void Action(TObject *object, TToggle *toggle);
00074 virtual void Action(TClassMenuItem *classmenuitem);
00075 void Action(TMethod *method) { Action(fSelectedObject, method); }
00076 void Action(TToggle *toggle) { Action(fSelectedObject, toggle); }
00077 virtual const char *CreateArgumentTitle(TMethodArg *argument);
00078 virtual const char *CreateDialogTitle(TObject *object, TFunction *method);
00079 virtual const char *CreatePopupTitle(TObject *object );
00080 virtual void Execute(const char *method, const char *params, Int_t *error=0) { TObject::Execute(method, params, error); }
00081 virtual void Execute(TMethod *method, TObjArray *params, Int_t *error=0) { TObject::Execute(method, params, error); }
00082 virtual void Execute(TObject *object, TFunction *method, const char *params);
00083 virtual void Execute(TObject *object, TFunction *method, TObjArray *params);
00084 void Execute(const char *params) { Execute(fCalledObject, fSelectedMethod, params); }
00085 void Execute(TObjArray *params) { Execute(fCalledObject, fSelectedMethod, params); }
00086 virtual TBrowser *GetBrowser() { return fBrowser; }
00087 virtual TContextMenuImp *GetContextMenuImp() { return fContextMenuImp; }
00088 virtual TVirtualPad *GetSelectedCanvas() { return fSelectedCanvas; }
00089 virtual TFunction *GetSelectedMethod() { return fSelectedMethod; }
00090 virtual TObject *GetSelectedObject() { return fSelectedObject; }
00091 virtual TObject *GetCalledObject() { return fCalledObject; }
00092 virtual TClassMenuItem *GetSelectedMenuItem() { return fSelectedMenuItem; }
00093 virtual TVirtualPad *GetSelectedPad() { return fSelectedPad; }
00094 virtual void Popup(Int_t x, Int_t y, TObject *obj, TVirtualPad *c=0, TVirtualPad *p=0);
00095 virtual void Popup(Int_t x, Int_t y, TObject *obj, TBrowser *b);
00096 virtual void SetCanvas(TVirtualPad *c) { fSelectedCanvas = c; }
00097 virtual void SetBrowser(TBrowser *b) { fBrowser = b; }
00098 virtual void SetMethod(TFunction *m) { fSelectedMethod = m; }
00099 virtual void SetCalledObject(TObject *o) { fCalledObject = o; }
00100 virtual void SetSelectedMenuItem(TClassMenuItem *mi) { fSelectedMenuItem = mi; }
00101 virtual void SetNameTitle(const char *name, const char *title) { TNamed::SetNameTitle(name, title); }
00102 virtual void SetObject(TObject *o) { fSelectedObject = o; }
00103 virtual void SetPad(TVirtualPad *p) { fSelectedPad = p; }
00104
00105 ClassDef(TContextMenu,0)
00106 };
00107
00108 #endif