File indexing completed on 2023-03-17 11:01:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "TGLabel.h"
0015 #include "TGNumberEntry.h"
0016
0017 #include <cassert>
0018 #include <iostream>
0019
0020
0021 #include "Fireworks/Core/src/FWLongParameterSetter.h"
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 FWLongParameterSetter::FWLongParameterSetter() : m_param(nullptr), m_widget(nullptr) {}
0035
0036
0037
0038
0039
0040
0041 FWLongParameterSetter::~FWLongParameterSetter() {}
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 void FWLongParameterSetter::attach(FWParameterBase* iParam) {
0060 m_param = dynamic_cast<FWLongParameter*>(iParam);
0061 assert(nullptr != m_param);
0062 }
0063
0064 TGFrame* FWLongParameterSetter::build(TGFrame* iParent, bool labelBack) {
0065 TGCompositeFrame* frame = new TGHorizontalFrame(iParent);
0066
0067
0068 TGNumberFormat::ELimit limits =
0069 m_param->min() == m_param->max()
0070 ? TGNumberFormat::kNELNoLimits
0071 : (m_param->min() > m_param->max() ? TGNumberFormat::kNELLimitMin : TGNumberFormat::kNELLimitMinMax);
0072 double min = 0;
0073 double max = 1;
0074 if (m_param->min() != m_param->max()) {
0075 min = m_param->min();
0076 max = m_param->max();
0077 }
0078 m_widget = new TGNumberEntry(frame,
0079 m_param->value(),
0080 5,
0081 0,
0082 TGNumberFormat::kNESInteger,
0083 TGNumberFormat::kNEAAnyNumber,
0084 limits,
0085 min,
0086 max);
0087
0088 m_widget->Connect("ValueSet(Long_t)", "FWLongParameterSetter", this, "doUpdate(Long_t)");
0089
0090
0091 TGLabel* label = new TGLabel(frame, m_param->name().c_str());
0092 if (labelBack) {
0093 frame->AddFrame(m_widget, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 6, 2, 2));
0094 frame->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 0, 0));
0095 } else {
0096 frame->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
0097 frame->AddFrame(m_widget, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 8, 2, 2));
0098 }
0099
0100 return frame;
0101 }
0102
0103 void FWLongParameterSetter::doUpdate(Long_t) {
0104
0105
0106
0107
0108
0109
0110 static bool in_update = false;
0111 if (in_update)
0112 return;
0113 in_update = true;
0114 gClient->ProcessEventsFor((TGWindow*)gTQSender);
0115 in_update = false;
0116
0117 assert(nullptr != m_param);
0118 assert(nullptr != m_widget);
0119
0120 m_param->set(m_widget->GetNumberEntry()->GetIntNumber());
0121 update();
0122 }
0123
0124
0125
0126
0127
0128
0129
0130