diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index 8338b911..06d2afc7 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -53,6 +53,10 @@ PMusrCanvas::PMusrCanvas() fPlotType = -1; fPlotNumber = -1; + fImp = 0; + fBar = 0; + fPopup = 0; + fStyle = 0; fMainCanvas = 0; fTitlePad = 0; @@ -171,6 +175,10 @@ void PMusrCanvas::InitMusrCanvas(const char* title, Int_t wtopx, Int_t wtopy, In fDifferencePlot = false; fPlotType = -1; + fImp = 0; + fBar = 0; + fPopup = 0; + fMainCanvas = 0; fTitlePad = 0; fDataTheoryPad = 0; @@ -187,6 +195,19 @@ void PMusrCanvas::InitMusrCanvas(const char* title, Int_t wtopx, Int_t wtopy, In return; } + // add canvas menu + TRootCanvas *fImp = (TRootCanvas*)fMainCanvas->GetCanvasImp(); + TGMenuBar *fBar = fImp->GetMenuBar(); + TGPopupMenu *fPopup = fBar->AddPopup("&Musrfit"); + fPopup->AddEntry("&Fourier", P_MENU_ID_FOURIER); + fPopup->AddEntry("&Difference", P_MENU_ID_DIFFERENCE); + fPopup->AddSeparator(); + fPopup->AddEntry("&Save Data", P_MENU_ID_SAVE_DATA); + fBar->MapSubwindows(); + fBar->Layout(); + + fPopup->Connect("TGPopupMenu", "Activated(Int_t)", "PMusrCanvas", this, "HandleMenuPopup(Int_t)"); + // divide the canvas into 4 pads // title pad fTitlePad = new TPaveText(0.0, YTITLE, 1.0, 1.0, "NDC"); @@ -291,6 +312,30 @@ void PMusrCanvas::HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected) } } +//-------------------------------------------------------------------------- +// HandleMenuPopup (SLOT) +//-------------------------------------------------------------------------- +/** + *
+ *
+ */
+void PMusrCanvas::HandleMenuPopup(Int_t id)
+{
+ switch (id) {
+ case P_MENU_ID_FOURIER:
+ cout << endl << ">> will handle Fourier ..." << endl;
+ break;
+ case P_MENU_ID_DIFFERENCE:
+ cout << endl << ">> will handle Difference ..." << endl;
+ break;
+ case P_MENU_ID_SAVE_DATA:
+ cout << endl << ">> will handle Save Data ..." << endl;
+ break;
+ default:
+ break;
+ }
+}
+
//--------------------------------------------------------------------------
// LastCanvasClosed (SLOT)
//--------------------------------------------------------------------------
diff --git a/src/include/PMusrCanvas.h b/src/include/PMusrCanvas.h
index 85401eb4..3fe47a50 100644
--- a/src/include/PMusrCanvas.h
+++ b/src/include/PMusrCanvas.h
@@ -35,6 +35,8 @@
#include
@@ -137,6 +144,7 @@ class PMusrCanvas : public TObject, public TQObject
virtual void Done(Int_t status=0); // *SIGNAL*
virtual void HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected); // SLOT
+ virtual void HandleMenuPopup(Int_t id); // SLOT
virtual void LastCanvasClosed(); // SLOT
private:
@@ -147,6 +155,12 @@ class PMusrCanvas : public TObject, public TQObject
TStyle *fStyle;
+ // canvas menu related variables
+ TRootCanvas *fImp;
+ TGMenuBar *fBar;
+ TGPopupMenu *fPopup;
+
+ // canvas related variables
TCanvas *fMainCanvas;
TPaveText *fTitlePad;
TPad *fDataTheoryPad;
diff --git a/src/tests/canvasMenu/PMyCanvas.cpp b/src/tests/canvasMenu/PMyCanvas.cpp
index b6b4dc8d..f2fc1b76 100644
--- a/src/tests/canvasMenu/PMyCanvas.cpp
+++ b/src/tests/canvasMenu/PMyCanvas.cpp
@@ -34,9 +34,9 @@ using namespace std;
#include "PMyCanvas.h"
-#define P_ID_FOURIER 1
-#define P_ID_DIFFERENCE 2
-#define P_ID_SAVE_DATA 3
+#define P_ID_FOURIER 10001
+#define P_ID_DIFFERENCE 10002
+#define P_ID_SAVE_DATA 10003
ClassImpQ(PMyCanvas)
@@ -58,10 +58,10 @@ cout << endl << ">> fImp=" << fImp << endl;
cout << endl << ">> fBar=" << fBar << endl;
TGPopupMenu *fPopup = fBar->AddPopup("m&y menu");
cout << endl << ">> fPopup=" << fPopup << endl;
- fPopup->AddEntry("F&ourier", 1);
- fPopup->AddEntry("&Difference", 2);
+ fPopup->AddEntry("F&ourier", P_ID_FOURIER);
+ fPopup->AddEntry("&Difference", P_ID_DIFFERENCE);
fPopup->AddSeparator();
- fPopup->AddEntry("Save Data", 3);
+ fPopup->AddEntry("Save Data", P_ID_SAVE_DATA);
fBar->MapSubwindows();
fBar->Layout();