FSUDAQ/DAQ/startStopDialog.cpp

70 lines
2.7 KiB
C++

#include "startStopDialog.h"
TString StartStopDialog::Comment = "";
bool StartStopDialog::isOK = false;
StartStopDialog::StartStopDialog(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h, bool isStart){
this->isStart = isStart;
this->isOK = false;
Comment = "";
fMain = new TGTransientFrame(p, main, w, h, kVerticalFrame);
fMain->DontCallClose(); /// to avoid double deletions.
//fMain->SetCleanup(kDeepCleanup); /// use hierarchical cleaning
fMain->Connect("CloseWindow()", "StartStopDialog", this, "CloseWindow()");
TGHorizontalFrame * fFrame1 = new TGHorizontalFrame(fMain); fMain->AddFrame(fFrame1, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX, 5, 5, 5, 5));
txtComment = new TGTextEntry(fFrame1, ""); fFrame1->AddFrame(txtComment);
txtComment->Resize(300, 20);
txtComment->Connect("ReturnPressed()", "StartStopDialog", this, "DoOK()");
TGHorizontalFrame * fFrame2 = new TGHorizontalFrame(fMain); fMain->AddFrame(fFrame2,new TGLayoutHints(kLHintsCenterX | kLHintsExpandX, 5, 5, 5, 5));
TGTextButton * bOK = new TGTextButton(fFrame2, "OK"); fFrame2->AddFrame(bOK, new TGLayoutHints(kLHintsCenterX));
bOK->Connect("Clicked()", "StartStopDialog", this, "DoOK()");
TGTextButton * bCancel = new TGTextButton(fFrame2, "Cancel"); fFrame2->AddFrame(bCancel, new TGLayoutHints(kLHintsCenterX));
bCancel->Connect("Clicked()", "StartStopDialog", this, "DoClose()");
TGHorizontalFrame * fFrame3 = new TGHorizontalFrame(fMain); fMain->AddFrame(fFrame3,new TGLayoutHints(kLHintsCenterX | kLHintsExpandX, 5, 5, 5, 5));
if( isStart ){
TGLabel * lbInfo = new TGLabel(fFrame3, "* Cancel or Close this dialog box will cancel START run.\n Only OK or press Enter will process."); fFrame3->AddFrame(lbInfo);
}else{
TGLabel * lbInfo = new TGLabel(fFrame3, "* Cancel or Close this dialog box will cancel STOP run.\n* Only OK or press Enter will process."); fFrame3->AddFrame(lbInfo);
}
fMain->MapSubwindows();
fMain->Resize();
fMain->CenterOnParent(); /// position relative to the parent's window
if( isStart) {
fMain->SetWindowName("Start Comment");
}else{
fMain->SetWindowName("Stop Comment");
}
fMain->MapWindow();
gClient->WaitFor(fMain); /// make everything wait for it
}
StartStopDialog::~StartStopDialog(){
printf("-------- %s |%s| %d\n", __func__, Comment.Data(), isOK);
delete txtComment;
fMain->DeleteWindow(); /// deletes fMain
}
void StartStopDialog::DoClose(){
isOK = false;
///Wait for 500 msec
TTimer::SingleShot(500, "StartStopDialog", this, "CloseWindow()");
}
void StartStopDialog::DoOK(){
Comment = txtComment->GetText();
isOK = true;
TTimer::SingleShot(500, "StartStopDialog", this, "CloseWindow()");
}