first canvas menu dummy implementation

This commit is contained in:
nemu 2008-10-29 07:18:42 +00:00
parent 983e7607c4
commit 6cc5c2478c
3 changed files with 65 additions and 6 deletions

View File

@ -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)
//--------------------------------------------------------------------------
/**
* <p>
*
*/
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)
//--------------------------------------------------------------------------

View File

@ -35,6 +35,8 @@
#include <TObject.h>
#include <TQObject.h>
#include <TStyle.h>
#include <TRootCanvas.h>
#include <TGMenu.h>
#include <TCanvas.h>
#include <TPaveText.h>
#include <TLegend.h>
@ -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
//------------------------------------------------------------------------
/**
* <p>
@ -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;

View File

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