Skip to content

Commit

Permalink
added parameter for long int values
Browse files Browse the repository at this point in the history
  • Loading branch information
Dr15Jones committed Mar 11, 2008
1 parent f007678 commit 0d0f664
Show file tree
Hide file tree
Showing 6 changed files with 373 additions and 0 deletions.
86 changes: 86 additions & 0 deletions Fireworks/Core/interface/FWLongParameter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#ifndef Fireworks_Core_FWLongParameter_h
#define Fireworks_Core_FWLongParameter_h
// -*- C++ -*-
//
// Package: Core
// Class : FWLongParameter
//
/**\class FWLongParameter FWLongParameter.h Fireworks/Core/interface/FWLongParameter.h
Description: Provides access to a simple double parameter
Usage:
If min and max values are both identical than no restriction is placed on the allowed value
*/
//
// Original Author: Chris Jones
// Created: Fri Mar 7 14:36:34 EST 2008
// $Id: FWLongParameter.h,v 1.1 2008/03/11 02:43:57 chrjones Exp $
//

// system include files
#include <sigc++/signal.h>

// user include files
#include "Fireworks/Core/interface/FWParameterBase.h"

// forward declarations

class FWLongParameter : public FWParameterBase
{

public:
FWLongParameter(FWParameterizable* iParent,
const std::string& iName,
long iDefault=0,
long iMin=-1,
long iMax=-1);
//virtual ~FWLongParameter();
template <class T>
FWLongParameter(FWParameterizable* iParent,
const std::string& iName,
T iCallback,
long iDefault=0,
long iMin=-1,
long iMax=-1):
FWParameterBase(iParent,iName),
m_value(iDefault),
m_min(iMin),
m_max(iMax)
{
changed_.connect(iCallback);
}
// ---------- const member functions ---------------------
long value() const {
return m_value;
}
long min() const {
return m_min;
}
long max() const {
return m_max;
}

virtual void addTo(FWConfiguration& ) const ;
// ---------- static member functions --------------------

// ---------- member functions ---------------------------
virtual void setFrom(const FWConfiguration&);
void set(long);

sigc::signal<void,long> changed_;

private:
FWLongParameter(const FWLongParameter&); // stop default

const FWLongParameter& operator=(const FWLongParameter&); // stop default

// ---------- member data --------------------------------
long m_value;
long m_min;
long m_max;
};


#endif
99 changes: 99 additions & 0 deletions Fireworks/Core/src/FWLongParameter.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// -*- C++ -*-
//
// Package: Core
// Class : FWLongParameter
//
// Implementation:
// <Notes on implementation>
//
// Original Author: Chris Jones
// Created: Fri Mar 7 14:36:41 EST 2008
// $Id: FWLongParameter.cc,v 1.1 2008/03/11 02:43:55 chrjones Exp $
//

// system include files
#include <assert.h>
#include <sstream>

// user include files
#include "Fireworks/Core/interface/FWLongParameter.h"
#include "Fireworks/Core/interface/FWConfiguration.h"


//
// constants, enums and typedefs
//

//
// static data member definitions
//

//
// constructors and destructor
//
FWLongParameter::FWLongParameter(FWParameterizable* iParent,
const std::string& iName,
long iDefault,
long iMin,
long iMax):
FWParameterBase(iParent,iName),
m_value(iDefault),
m_min(iMin),
m_max(iMax)
{
}

// FWLongParameter::FWLongParameter(const FWLongParameter& rhs)
// {
// // do actual copying here;
// }
/*
FWLongParameter::~FWLongParameter()
{
}
*/
//
// assignment operators
//
// const FWLongParameter& FWLongParameter::operator=(const FWLongParameter& rhs)
// {
// //An exception safe implementation is
// FWLongParameter temp(rhs);
// swap(rhs);
//
// return *this;
// }

//
// member functions
//
void
FWLongParameter::setFrom(const FWConfiguration& iFrom)
{
assert(0!=iFrom.valueForKey(name()));
std::istringstream s(iFrom.valueForKey(name())->value());
s>>m_value;
changed_(m_value);
}

void
FWLongParameter::set(long iValue)
{
m_value = iValue;
changed_(iValue);
}

//
// const member functions
//
void
FWLongParameter::addTo(FWConfiguration& iTo) const
{
std::ostringstream s;
s<<m_value;
iTo.addKeyValue(name(),FWConfiguration(s.str()));
}

//
// static member functions
//
124 changes: 124 additions & 0 deletions Fireworks/Core/src/FWLongParameterSetter.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
// -*- C++ -*-
//
// Package: Core
// Class : FWLongParameterSetter
//
// Implementation:
// <Notes on implementation>
//
// Original Author: Chris Jones
// Created: Mon Mar 10 11:22:32 CDT 2008
// $Id: FWLongParameterSetter.cc,v 1.1 2008/03/11 02:43:55 chrjones Exp $
//

// system include files
#include "TGLabel.h"
#include "TGNumberEntry.h"

#include <iostream>

// user include files
#include "Fireworks/Core/src/FWLongParameterSetter.h"
#include "Fireworks/Core/interface/FWLongParameter.h"


//
// constants, enums and typedefs
//

//
// static data member definitions
//

//
// constructors and destructor
//
FWLongParameterSetter::FWLongParameterSetter():
m_param(0),
m_widget(0)
{
}

// FWLongParameterSetter::FWLongParameterSetter(const FWLongParameterSetter& rhs)
// {
// // do actual copying here;
// }

FWLongParameterSetter::~FWLongParameterSetter()
{
}

//
// assignment operators
//
// const FWLongParameterSetter& FWLongParameterSetter::operator=(const FWLongParameterSetter& rhs)
// {
// //An exception safe implementation is
// FWLongParameterSetter temp(rhs);
// swap(rhs);
//
// return *this;
// }

//
// member functions
//

void
FWLongParameterSetter::attach(FWParameterBase* iParam)
{
m_param = dynamic_cast<FWLongParameter*>(iParam);
assert(0!=m_param);
}

TGFrame*
FWLongParameterSetter::build(TGFrame* iParent)
{
TGCompositeFrame* frame = new TGHorizontalFrame(iParent);

// number entry widget
TGNumberFormat::ELimit limits = m_param->min()==m_param->max() ?
TGNumberFormat::kNELNoLimits :
( m_param->min() > m_param->max()? TGNumberFormat::kNELLimitMin : TGNumberFormat::kNELLimitMinMax);
double min = 0;
double max = 1;
if(m_param->min()!=m_param->max()) {
min=m_param->min();
max=m_param->max();
}
m_widget = new TGNumberEntry
(frame, m_param->value(),
5, // number of digits
0, // widget ID
TGNumberFormat::kNESInteger, // style
TGNumberFormat::kNEAAnyNumber, // input value filter
limits, // specify limits
min, // min value
max); // max value

frame->AddFrame(m_widget, new TGLayoutHints(kLHintsLeft|kLHintsCenterY, 2,8,2,2));
m_widget->Connect("ValueSet(Long_t)", "FWLongParameterSetter", this, "doUpdate(Long_t)");

// label
frame->AddFrame(new TGLabel(frame,m_param->name().c_str()),
new TGLayoutHints(kLHintsLeft|kLHintsCenterY) );
return frame;
}

void
FWLongParameterSetter::doUpdate(Long_t)
{
//std::cout <<"doUpdate called"<<std::endl;
assert(0!=m_param);
assert(0!=m_widget);
//std::cout <<m_widget->GetNumberEntry()->GetNumber()<<std::endl;
m_param->set(m_widget->GetNumberEntry()->GetIntNumber());
update();
}
//
// const member functions
//

//
// static member functions
//
59 changes: 59 additions & 0 deletions Fireworks/Core/src/FWLongParameterSetter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#ifndef Fireworks_Core_FWLongParameterSetter_h
#define Fireworks_Core_FWLongParameterSetter_h
// -*- C++ -*-
//
// Package: Core
// Class : FWLongParameterSetter
//
/**\class FWLongParameterSetter FWLongParameterSetter.h Fireworks/Core/interface/FWLongParameterSetter.h
Description: <one line class summary>
Usage:
<usage>
*/
//
// Original Author: Chris Jones
// Created: Mon Mar 10 11:22:26 CDT 2008
// $Id: FWLongParameterSetter.h,v 1.1 2008/03/11 02:43:55 chrjones Exp $
//

// system include files
#include <Rtypes.h>

// user include files
#include "Fireworks/Core/interface/FWParameterSetterBase.h"

// forward declarations
class FWLongParameter;
class TGNumberEntry;

class FWLongParameterSetter : public FWParameterSetterBase
{

public:
FWLongParameterSetter();
virtual ~FWLongParameterSetter();

// ---------- const member functions ---------------------

// ---------- static member functions --------------------

// ---------- member functions ---------------------------
virtual void attach(FWParameterBase*) ;
virtual TGFrame* build(TGFrame* iParent) ;
void doUpdate(Long_t);

private:
FWLongParameterSetter(const FWLongParameterSetter&); // stop default

const FWLongParameterSetter& operator=(const FWLongParameterSetter&); // stop default

// ---------- member data --------------------------------
FWLongParameter* m_param;
TGNumberEntry* m_widget;
};


#endif
3 changes: 3 additions & 0 deletions Fireworks/Core/src/classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
#include "Fireworks/Core/interface/FWParameterSetterBase.h"
#include "Fireworks/Core/src/FWDoubleParameterSetter.h"
#include "Fireworks/Core/interface/FWDoubleParameter.h"
#include "Fireworks/Core/src/FWLongParameterSetter.h"
#include "Fireworks/Core/interface/FWLongParameter.h"


namespace {
struct Fireworks_Core {
Expand Down
2 changes: 2 additions & 0 deletions Fireworks/Core/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@
<class name="FWParameterSetterBase"/>
<class name="FWDoubleParameterSetter"/>
<class name="FWDoubleParameter"/>
<class name="FWLongParameterSetter"/>
<class name="FWLongParameter"/>
</lcgdict>

0 comments on commit 0d0f664

Please sign in to comment.