]> git.uio.no Git - u/mrichter/AliRoot.git/blame - AliGeant3/AliGUISliders.cxx
New shield geometry.
[u/mrichter/AliRoot.git] / AliGeant3 / AliGUISliders.cxx
CommitLineData
a524cc6b 1/* *************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
18Revision 1.2 2001/07/09 11:48:47 morsch
19Use AliG3Volume, AliG3Medium, AliG3Material
20
21Revision 1.1 2000/07/13 16:19:10 fca
22Mainly coding conventions + some small bug fixes
23
24Revision 1.8 2000/07/12 08:56:32 fca
25Coding convention correction and warning removal
26
27Revision 1.7 2000/06/28 21:27:45 morsch
28Most coding rule violations corrected.
29Still to do: Split the file (on file per class) ? Avoid the global variables.
30Copy constructors and assignment operators (dummy ?)
31
32Revision 1.6 2000/04/14 11:07:46 morsch
33Correct volume to medium assignment in case several media are asigned to the
34same material.
35
36Revision 1.5 2000/03/20 15:11:03 fca
37Mods to make the code compile on HP
38
39Revision 1.4 2000/01/18 16:12:08 morsch
40Bug in calculation of number of volume divisions and number of positionings corrected
41Browser for Material and Media properties added
42
43Revision 1.3 1999/11/14 14:31:14 fca
44Correct small error and remove compilation warnings on HP
45
46Revision 1.2 1999/11/10 16:53:35 fca
47The new geometry viewer from A.Morsch
48
49*/
50
51#include <stdlib.h>
52
53#include "AliGUISliders.h"
54#include "AliG3Volume.h"
55
56static Text_t* kLabelText[7] =
57{"Theta ", "Phi ", "Psi ", "U ", "V ", "UScale", "VScale"};
58static Int_t IRangeMin[7] = { 0, 0, 0, 0, 0, 0, 0};
59static Int_t IRangeMax[7] = {36000, 36000, 36000, 2000, 2000, 10, 10};
60static Int_t DefaultPos[7] = { 3000, 4000, 0, 1000, 1000, 1, 1};
61
62AliGUISliders::AliGUISliders(const TGWindow *p, const TGWindow *,
63 UInt_t w, UInt_t h) :
64 TGCompositeFrame(p, w, h,kVerticalFrame)
65{
66// Constructor
67 ChangeOptions((GetOptions() & ~kHorizontalFrame) | kVerticalFrame);
68 //--- layout for buttons: top align, equally expand horizontally
69 fBly = new TGLayoutHints(kLHintsTop | kLHintsExpandY, 5, 5, 5, 5);
70
71 //--- layout for the frame: place at bottom, right aligned
72 fBfly1 = new TGLayoutHints(kLHintsLeft | kLHintsExpandX );
73//
74// Frames
75
76 for (Int_t i=0; i<7; i++) {
77 Int_t idT=i+1;
78 Int_t idS=i+8;
79 fHframe[i] = new TGHorizontalFrame(this, 400, 100, kFixedWidth);
80 fTbh[i] = new TGTextBuffer(10);
81 fTeh[i] = new TGTextEntry(fHframe[i], fTbh[i],idT);
82 char buf[10];
83 sprintf(buf, "%6.2f", Float_t(DefaultPos[i])/100);
84 fTbh[i]->AddText(0, buf);
85 fTeh[i]->Associate(this);
86
87 fHslider[i] = new TGHSlider(fHframe[i], 400, kSlider1 | kScaleBoth, idS);
88 fHslider[i]->Associate(this);
89 fHslider[i]->SetRange(IRangeMin[i], IRangeMax[i]);
90 fHslider[i]->SetPosition(DefaultPos[i]);
91
92 fLabel[i] = new TGLabel(fHframe[i], kLabelText[i]);
93
94
95 fHframe[i]->AddFrame(fLabel[i], fBfly1);
96 fHframe[i]->AddFrame(fTeh[i], fBfly1);
97 fHframe[i]->AddFrame(fHslider[i], fBfly1);
98 AddFrame(fHframe[i], fBly);
99 }
100}
101
102AliGUISliders::~AliGUISliders()
103{
104// Destructor
105 delete fBfly1; delete fBly;
106 // Delete dialog.
107 for (Int_t i=1; i<7; i++) {
108 delete fHframe[i];
109 delete fHslider[i];
110 delete fTeh[i];
111 delete fTbh[i];
112 }
113}
114
115void AliGUISliders::Update()
116{
117// Update sliders
118 char buf[10];
119
120 for (Int_t i=0; i<7; i++) {
121 Float_t param = gCurrentVolume->GetParam(i);
122//
123 fHslider[i]->SetPosition(Int_t(param*100.));
124 gClient->NeedRedraw(fHslider[i]);
125//
126 sprintf(buf, "%6.2f", param);
127 fTbh[i]->Clear();
128 fTbh[i]->AddText(0, buf);
129 gClient->NeedRedraw(fTeh[i]);
130//
131 }
132
133
134}
135
136void AliGUISliders::CloseWindow()
137{
138 // Called when window is closed via the window manager.
139
140 delete this;
141}
142
143Bool_t AliGUISliders::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
144{
145 // Process slider messages.
146
147 char buf[10];
148
149 switch (GET_MSG(msg)) {
150 case kC_TEXTENTRY:
151 switch (GET_SUBMSG(msg)) {
152 case kTE_TEXTCHANGED:
153 Int_t idT=Int_t(parm1)-1;
154 fHslider[idT]->SetPosition((Int_t)atof(fTbh[idT]->GetString())*100);
155 gClient->NeedRedraw(fHslider[idT]);
156 gCurrentVolume->SetParam(idT,atof(fTbh[idT]->GetString()));
157 gCurrentVolume->Draw();
158 }
159 break;
160 case kC_HSLIDER:
161 switch (GET_SUBMSG(msg)) {
162 case kSL_POS:
163 sprintf(buf, "%6.2f", Float_t(parm2)/100);
164 Int_t idS=Int_t(parm1)-8;
165 fTbh[idS]->Clear();
166 fTbh[idS]->AddText(0, buf);
167 gClient->NeedRedraw(fTeh[idS]);
168 gCurrentVolume->SetParam(idS, Float_t(parm2)/100.);
169 gCurrentVolume->Draw();
170 }
171 break;
172 }
173 return kTRUE;
174}
175