source: JEM-EUSO/esaf_cc_at_lal/packages/common/gui/src/DetectorConfigDlg.cc @ 114

Last change on this file since 114 was 114, checked in by moretto, 11 years ago

actual version of ESAF at CCin2p3

File size: 6.2 KB
Line 
1// dialog to allow user to change detector
2// parameters
3// 29-12-2001 M. Pallavicini created
4//
5
6#include "DetectorConfigDlg.hh"
7#include "SimuApplication.hh"
8#include "TGButton.h"
9#include "Config.hh"
10#include "TGLabel.h"
11
12ClassImp(DetectorConfigDlg)
13
14//______________________________________________________________________________
15DetectorConfigDlg::DetectorConfigDlg(SimuApplication *app, const TGWindow* p, 
16    const TGWindow *main) : TGTransientFrame( p, main, 580,350) {
17       
18    theApp = app;
19
20    fFrame = new TGHorizontalFrame(this,60,20,kFixedWidth);
21    fOK = new TGTextButton(fFrame,"&OK",1);
22    fOK->Associate( this );
23    fCancel = new TGTextButton(fFrame,"&Cancel",2);
24    fCancel->Associate( this );
25
26    fL1 = new TGLayoutHints(kLHintsTop|kLHintsLeft|kLHintsExpandX,2,2,2,2);
27    fL2 = new TGLayoutHints(kLHintsBottom|kLHintsRight,2,2,5,1);
28
29    fFrame->AddFrame( fOK, fL1 );
30    fFrame->AddFrame( fCancel, fL1 );
31    fFrame->Resize(150,fOK->GetDefaultHeight());
32
33    AddFrame( fFrame, fL2 );
34
35    fTab = new TGTab( this, 480, 350 );
36
37    fL3 = new TGLayoutHints(kLHintsTop|kLHintsLeft,5,5,5,5);
38
39    // TAB Standard
40    TGCompositeFrame *f = fTab->AddTab("Standard");
41    fL3 = new TGLayoutHints(kLHintsTop|kLHintsLeft,2,2,2,2);
42    fStandard = new TGCompositeFrame(f,60,20,kVerticalFrame);
43    fStandardListBox = new TGComboBox(fStandard,88);
44    fStandard->AddFrame( new TGLabel(f,"Standard Configurations"));
45    fStandard->AddFrame(fStandardListBox,fL2);
46
47    int i=1;
48    map< string, ConfigFileParser* >::const_iterator it;
49    const map< string, ConfigFileParser* > &m = Config::Get()->GetStandardConfigMap();
50    for ( it = m.begin(); it != m.end(); it++ ) {
51        const string &n = it->first;
52        fStandardListBox->AddEntry( n.c_str(), i++);
53    } 
54    fStandardListBox->SetWidth( 70 );
55    f->AddFrame(fStandard,fL3);
56
57    // TAB Environment
58    f = fTab->AddTab("Environment");
59    fEnvironment = new TGCompositeFrame(f,450,200,kVerticalFrame);
60    fL6 = new TGLayoutHints(kLHintsTop|kLHintsLeft,4,4,4,4);
61    fNightGlow = new TGGroupFrame(f,"Night Glow",kVerticalFrame);
62    fChkNG = new TGCheckButton(fNightGlow,"Add Night Glow",3);
63    fChkNG->Associate( this );
64    fNightGlow->AddFrame(fChkNG,fL6);
65    fNightGlow->AddFrame( new TGLabel(fNightGlow,new TGHotString("Rate (GHz/pixel)")),fL6);
66    double ngr = Config::Get()->GetCF("Electronics","Photomultiplier")->GetNum("NightGlowRate");
67    fRateNG = new TGNumberEntry(fNightGlow,ngr,6);
68    fNightGlow->AddFrame(fRateNG,fL6);
69    fNightGlow->Resize( fNightGlow->GetDefaultSize() );
70    fEnvironment->AddFrame(fNightGlow,fL6);
71    fEnvironment->AddFrame(fChkSIG = new TGCheckButton(fEnvironment,"EAS Photons",4),fL6);
72   
73    if ( Config::Get()->GetCF("Electronics","Photomultiplier")->GetNum("DoNightGlow")) {
74        fChkNG->SetState(kButtonDown);
75        fRateNG->SetState(kTRUE);
76    } else {
77        fChkNG->SetState(kButtonUp);
78        fRateNG->SetState(kFALSE);
79    }
80    f->AddFrame(fEnvironment,fL3);
81
82    // TAB Optics
83    f = fTab->AddTab("Optics");
84    fOptics = new TGCompositeFrame(f,60,20,kVerticalFrame);
85    f->AddFrame(fOptics,fL3);
86
87    // TAB optical adaptors
88    f = fTab->AddTab("Adaptors");
89    fAdaptors = new TGCompositeFrame(f,60,20,kVerticalFrame);
90    f->AddFrame(fAdaptors,fL3);
91
92    // TAB photo-detectors
93    f = fTab->AddTab("Pmts");
94    fPmts = new TGCompositeFrame(f,60,20,kVerticalFrame);
95    f->AddFrame(fPmts,fL3);
96
97    // TAB electronics
98    f =  fTab->AddTab("Electronics");
99    fEle = new TGCompositeFrame(f,60,20,kVerticalFrame);
100    f->AddFrame(fEle,fL3);
101
102    // TAB trigger
103    f = fTab->AddTab("Trigger");
104    fTrigg = new TGCompositeFrame(f,60,20,kVerticalFrame);
105    f->AddFrame(fTrigg,fL3);
106
107    fL5 = new TGLayoutHints(kLHintsBottom|kLHintsExpandX|kLHintsExpandY,2,2,5,1);
108    AddFrame( fTab, fL5 );
109
110    MapSubwindows();
111    Resize( 400,300 );
112    Window_t wd;
113    int ax,ay;
114    gVirtualX->TranslateCoordinates( main->GetId(), GetParent()->GetId(),
115            (((TGFrame*)main)->GetWidth()-500)>>1,
116            (((TGFrame*)main)->GetWidth()-350)>>1, ax, ay, wd );
117    Move(ax,ay);
118    SetWindowName("Euso Detector Parameters");
119    MapWindow();   
120}
121
122DetectorConfigDlg::~DetectorConfigDlg() {
123    theApp->SetLock( false );
124    delete fL1;
125    delete fL2;
126    delete fL3;
127    //delete fL4;
128    delete fL5;
129    delete fL6;
130    delete fOK;
131    delete fCancel;
132    delete fChkNG;
133    delete fRateNG;
134    delete fNightGlow;
135    delete fTab;
136    delete fFrame;
137    delete fStandard;
138    delete fEnvironment;
139    delete fOptics;
140    delete fAdaptors;
141    delete fPmts;
142    delete fEle;
143    delete fTrigg;
144}
145
146void
147DetectorConfigDlg::CloseWindow() {
148    delete this;
149}
150
151Bool_t
152DetectorConfigDlg::ProcessMessage( Long_t msg, Long_t p1, Long_t p2 ) {
153    switch (GET_MSG(msg ) ) {
154        case kC_COMMAND:
155            switch (GET_SUBMSG(msg)) {
156                case kCM_BUTTON:
157                    switch(p1) {
158                        case 1:            // OK button pressed
159                            RetrieveData();
160                            delete this;
161                            break;
162                        case 2:            // cancel button pressed
163                            delete this;
164                            break;
165                        default:
166                            break;
167                    } 
168                    break;
169                case kCM_CHECKBUTTON:    // check buttons in all tabs
170                    switch(p1) {
171                        case 3:              // check night glow pressed
172                            if ( fChkNG->GetState() == kButtonDown )
173                                fRateNG->SetState(kTRUE);
174                            else
175                                fRateNG->SetState(kFALSE);
176                            break;
177                    }
178                default:
179                    break;
180            }
181            break;
182        default:
183            break;
184    }
185
186    return kTRUE;
187}
188
189void 
190DetectorConfigDlg::RetrieveData() {
191    // TAB General:
192    ConfigFileParser *cf = Config::Get()->GetCF("Electronics","MacroCell");
193    if ( fChkNG->GetState() == kButtonDown ) {
194        cf->ReplaceNum("DoNightGlow",1);
195        cf->ReplaceNum("NightGlowRate",fRateNG->GetNumber());
196    } else {
197        cf->ReplaceNum("DoNightGlow",0);
198    }
199}
200
201
202
Note: See TracBrowser for help on using the repository browser.