From 6cc5c2478ca8b8a22b7712ccddafb5eb0844416b Mon Sep 17 00:00:00 2001 From: nemu Date: Wed, 29 Oct 2008 07:18:42 +0000 Subject: [PATCH] first canvas menu dummy implementation --- src/classes/PMusrCanvas.cpp | 45 ++++++++++++++++++++++++++++++ src/include/PMusrCanvas.h | 14 ++++++++++ src/tests/canvasMenu/PMyCanvas.cpp | 12 ++++---- 3 files changed, 65 insertions(+), 6 deletions(-) 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 #include #include +#include +#include #include #include #include @@ -52,6 +54,11 @@ #define YTITLE 0.95 #define XTHEO 0.75 +// Canvas menu id's +#define P_MENU_ID_FOURIER 10001 +#define P_MENU_ID_DIFFERENCE 10002 +#define P_MENU_ID_SAVE_DATA 10003 + //------------------------------------------------------------------------ /** *

@@ -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();