TContextMenu.h

Go to the documentation of this file.
00001 // @(#)root/base:$Id: TContextMenu.h 29571 2009-07-24 10:55:28Z rdm $
00002 // Author: Nenad Buncic   08/02/96
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TContextMenu
00013 #define ROOT_TContextMenu
00014 
00015 
00016 ////////////////////////////////////////////////////////////////////////////////
00017 //                                                                            //
00018 // TContextMenu                                                               //
00019 //                                                                            //
00020 // This class provides an interface to  context sensitive popup menus.        //
00021 // These menus pop up when the user hits  the right mouse button,  and        //
00022 // are destroyed when the menu pops downs.                                    //
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&);            // TContextMenu can not be copied since we do not know the actual type of the TContextMenuImp (and it can not be 'Cloned')
00050    TContextMenu& operator=(const TContextMenu&); // TContextMenu can not be copied since we do not know the actual type of the TContextMenuImp (and it can not be 'Cloned')
00051    
00052 protected:
00053    TContextMenuImp *fContextMenuImp;      //!Context menu system specific implementation
00054    TFunction       *fSelectedMethod;      //selected method
00055    TObject         *fSelectedObject;      //selected object
00056    TObject         *fCalledObject;        //object to call
00057    TClassMenuItem  *fSelectedMenuItem;    //selected class menu item
00058    TVirtualPad     *fSelectedCanvas;      //selected canvas (if exist)
00059    TVirtualPad     *fSelectedPad;         //selected pad (if exist)
00060    TBrowser        *fBrowser;             //selected browser (if exist)
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); // Create menu from canvas
00095    virtual void Popup(Int_t x, Int_t y, TObject *obj, TBrowser *b);  // Create menu from Browser
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)  //Context sensitive popup menu
00106 };
00107 
00108 #endif

Generated on Tue Jul 5 14:10:24 2011 for ROOT_528-00b_version by  doxygen 1.5.1