//Author: Dariusz Mi$kowiec
//Date: 1999
///////////////////////////////////////////////////////////////////////////////
// DGModule is GUI for DModule
// DGModule is parent of DGLogic, DGScaler etc. while DModule is parent of DLogic, DScaler etc.
///////////////////////////////////////////////////////////////////////////////
#include "DGModule.h"
#ifdef COMPIL
ClassImp(DGModule)
#endif
//-----------------------------------------------------------------------------
DGModule::DGModule(DModule *module) :
TGMainFrame(gClient->GetRoot(), 0, 0) {
// I use initial width and height of 0, and resize later
char str[80];
cout << "constructing DGModule" << endl;
fModule = module;
fMemList = new TObjArray();
fMenuBar = new TGMenuBar(this, 1, 1, kHorizontalFrame);
fComm = new TGGroupFrame(this, "Communication", kHorizontalFrame);
fMDes = new TGGroupFrame(this, "Module description", kVerticalFrame);
fMDat = new TGGroupFrame(this, "Module data", kVerticalFrame);
fMenuBarLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,
0, 0, 1, 1);
fL1 = new TGLayoutHints(kLHintsCenterX | kLHintsExpandX, 5,5,5,5);
fL2 = new TGLayoutHints(kLHintsLeft, 2,2,5,0);
fMDes->SetLayoutManager(new TGMatrixLayout(fMDes, 0, 2, 5));
this->AddFrame(fMenuBar, fMenuBarLayout);
this->AddFrame(fComm, fL1);
this->AddFrame(fMDes, fL1);
this->AddFrame(fMDat, fL1);
fMemList->Add(fMenuBar);
fMemList->Add(fComm);
fMemList->Add(fMDes);
fMemList->Add(fMDat);
fMemList->Add(fMenuBarLayout);
fMemList->Add(fL1);
fMemList->Add(fL2);
fMenuFile = new TGPopupMenu(fClient->GetRoot());
fMenuFile->AddEntry("&Exit", 11);
fMenuFile->Associate(this);
fMenuBar->AddPopup("&File", fMenuFile, fL2);
fMemList->Add(fMenuFile);
fComm->AddFrame(
fRefresh = new TGCheckButton(fComm,"Auto refresh (ms) ",20), fL2);
fRefresh->Associate(this);
fRefresh->SetToolTipText("Activate automatic refreshing");
fRefreshTimeBuf = new TGTextBuffer(16);
fRefreshTimeEnt = new TGTextEntry(fComm, fRefreshTimeBuf, 21);
fRefreshTimeEnt->Resize(40,fRefreshTimeEnt->GetDefaultHeight());
fComm->AddFrame(fRefreshTimeEnt,fL2);
fRefreshTimeEnt->Associate(this);
fMemList->Add(fRefresh);
fMemList->Add(fRefreshTimeEnt);
fMDes->AddFrame(new TGLabel(fMDes, new TGString("Generic type:")));
fMDes->AddFrame(new TGLabel(fMDes, new TGString(fModule->GetGenTypeDescription())));
fMDes->AddFrame(new TGLabel(fMDes, new TGString("Actual type:")));
fMDes->AddFrame(new TGLabel(fMDes, new TGString(fModule->GetActTypeDescription())));
fMDes->AddFrame(new TGLabel(fMDes, new TGString("Base address:")));
sprintf(str,"0x%x",fModule->GetAdBase());
fMDes->AddFrame(new TGLabel(fMDes, new TGString(str)));
this->SetWindowName("VME module");
this->SetIconName("VME module");
this->MapSubwindows();
this->Layout();
this->MapWindow();
fRefreshTimeBuf->Clear();
fRefreshTimeBuf->AddText(0,"1000");
fRefreshTime = 1000;
fClient->NeedRedraw(fRefreshTimeEnt);
fTimer = new TTimer(this,fRefreshTime);
}
//-----------------------------------------------------------------------------
DGModule::~DGModule() {
cout <<"destroying DGModule" << endl;
fTimer->TurnOff();
// fMemList->Delete();
}
//-----------------------------------------------------------------------------
Bool_t DGModule::HandleTimer(TTimer *tim) {
// Actions after timer time-out
fTimer->Reset();
return kTRUE;
}
//-----------------------------------------------------------------------------
Bool_t DGModule::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2) {
// Process events generated by the buttons in the frame.
// printf("gdmodule process message called %ld %ld %ldn",msg,parm1,parm2);
switch (GET_MSG(msg)) {
case kC_COMMAND:
switch (GET_SUBMSG(msg)) {
case kCM_CHECKBUTTON:
// printf("check button id %ld %ld pressedn", parm1, parm2);
switch (parm1) {
case 20:
if (fRefresh->GetState()) {
fTimer->SetTime(fRefreshTime);
fTimer->TurnOn();
} else {
fTimer->TurnOff();
}
break;
default:
break;
}
break;
case kCM_MENU:
if (parm1 == 11) delete this;
default:
break;
}
case kC_TEXTENTRY:
switch (GET_SUBMSG(msg)) {
case kTE_ENTER:
if (parm1==21) {
fRefreshTime = atoi(fRefreshTimeBuf->GetString());
fTimer->SetTime(fRefreshTime);
}
break;
default:
break;
}
break;
default:
break;
}
return kTRUE;
}
//-----------------------------------------------------------------------------
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.