CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
FWParameterSetterBase Class Referenceabstract

#include <Fireworks/Core/interface/FWParameterSetterBase.h>

Inheritance diagram for FWParameterSetterBase:
FWBoolParameterSetter FWDoubleParameterSetter FWEnumParameterSetter FWLongParameterSetter FWStringParameterSetter

Public Member Functions

void attach (FWParameterBase *, FWParameterSetterEditorBase *)
 
virtual TGFrame * build (TGFrame *iParent, bool labelBack=true)=0
 
 FWParameterSetterBase ()
 
virtual void setEnabled (bool)
 
virtual ~FWParameterSetterBase ()
 

Static Public Member Functions

static boost::shared_ptr
< FWParameterSetterBase
makeSetterFor (FWParameterBase *)
 

Protected Member Functions

FWParameterSetterEditorBaseframe () const
 
void update () const
 

Private Member Functions

virtual void attach (FWParameterBase *)=0
 
 FWParameterSetterBase (const FWParameterSetterBase &)
 
const FWParameterSetterBaseoperator= (const FWParameterSetterBase &)
 

Private Attributes

FWParameterSetterEditorBasem_frame
 

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Definition at line 33 of file FWParameterSetterBase.h.

Constructor & Destructor Documentation

FWParameterSetterBase::FWParameterSetterBase ( )

Definition at line 41 of file FWParameterSetterBase.cc.

41  :
42  m_frame(0)
43 {
44 }
FWParameterSetterEditorBase * m_frame
FWParameterSetterBase::~FWParameterSetterBase ( )
virtual

Definition at line 51 of file FWParameterSetterBase.cc.

52 {
53 }
FWParameterSetterBase::FWParameterSetterBase ( const FWParameterSetterBase )
private

Member Function Documentation

void FWParameterSetterBase::attach ( FWParameterBase iBase,
FWParameterSetterEditorBase iFrame 
)

Definition at line 72 of file FWParameterSetterBase.cc.

References m_frame.

73 {
74  m_frame=iFrame;
75  attach(iBase);
76 }
void attach(FWParameterBase *, FWParameterSetterEditorBase *)
FWParameterSetterEditorBase * m_frame
virtual void FWParameterSetterBase::attach ( FWParameterBase )
privatepure virtual
virtual TGFrame* FWParameterSetterBase::build ( TGFrame *  iParent,
bool  labelBack = true 
)
pure virtual
FWParameterSetterEditorBase* FWParameterSetterBase::frame ( ) const
inlineprotected
boost::shared_ptr< FWParameterSetterBase > FWParameterSetterBase::makeSetterFor ( FWParameterBase iParam)
static

Definition at line 93 of file FWParameterSetterBase.cc.

References fwLog, fwlog::kError, and mergeVDriftHistosByStation::name.

Referenced by ViewerParameterGUI::addParam(), FWViewEnergyScaleEditor::addParam(), CmsShowCommonPopup::makeSetter(), and FWGeometryTableView::makeSetter().

94 {
95  static std::map<edm::TypeID,ROOT::Reflex::Type> s_paramToSetterMap;
96  edm::TypeID paramType( typeid(*iParam) );
97  std::map<edm::TypeID,ROOT::Reflex::Type>::iterator itFind = s_paramToSetterMap.find(paramType);
98  if( itFind == s_paramToSetterMap.end() ) {
99  ROOT::Reflex::Type paramClass( ROOT::Reflex::Type::ByTypeInfo(typeid(*iParam)) );
100  if(paramClass == ROOT::Reflex::Type() ) {
101  fwLog(fwlog::kError) << " the type "<<typeid(*iParam).name()<< " is not known to REFLEX" <<std::endl;
102  }
103  assert(paramClass != ROOT::Reflex::Type() );
104 
105  //the corresponding setter has the same name but with 'Setter' at the end
106  std::string name = paramClass.Name();
107  // FIXME: there was a convention between parameter class names and associated
108  // setters. The following works around the problem introduced by
109  // the generic parameter class but it is clear that a better
110  // way of doing the binding is required. Notice that there are only 5
111  // different type of FW*Parameter.
112  if (name == "FWGenericParameter<bool>")
113  name = "FWBoolParameterSetter";
114  else if (name == "FWGenericParameter<std::string>")
115  name = "FWStringParameterSetter";
116  else if (name == "FWGenericParameter<std::basic_string<char> >")
117  name = "FWStringParameterSetter";
118  else if (name == "FWGenericParameterWithRange<double>")
119  name = "FWDoubleParameterSetter";
120  else if (name == "FWGenericParameterWithRange<long int>")
121  name = "FWLongParameterSetter";
122  else if (name == "FWGenericParameterWithRange<long>")
123  name = "FWLongParameterSetter";
124  else
125  name += "Setter";
126 
127  ROOT::Reflex::Type setterClass( ROOT::Reflex::Type::ByName( name ) );
128  if(setterClass == ROOT::Reflex::Type() ) {
129  fwLog(fwlog::kError) << " the type "<<name<< " is not known to REFLEX" <<std::endl;
130  }
131  assert(setterClass != ROOT::Reflex::Type());
132 
133  s_paramToSetterMap[paramType]=setterClass;
134  itFind = s_paramToSetterMap.find(paramType);
135  }
136  //create the instance we want
137  //NOTE: for some odd reason Reflex 'Construct' uses 'malloc' to allocate the memory. This means the object
138  // can not be deleted using 'delete'! So we must call Type::Destruct on the object
139  ROOT::Reflex::Object setterObj = itFind->second.Construct();
140 
141  //make it into the base class
142  ROOT::Reflex::Type s_setterBaseType( ROOT::Reflex::Type::ByTypeInfo( typeid(FWParameterSetterBase) ) );
143  assert(s_setterBaseType != ROOT::Reflex::Type());
144  ROOT::Reflex::Object castSetterObj = setterObj.CastObject(s_setterBaseType);
145  boost::shared_ptr<FWParameterSetterBase> ptr(reinterpret_cast<FWParameterSetterBase*>( castSetterObj.Address() ),
146  boost::bind(&ROOT::Reflex::Type::Destruct,itFind->second,setterObj.Address(),true));
147  return ptr;
148 }
#define fwLog(_level_)
Definition: fwLog.h:51
const FWParameterSetterBase& FWParameterSetterBase::operator= ( const FWParameterSetterBase )
private
void FWParameterSetterBase::setEnabled ( bool  )
virtual
void FWParameterSetterBase::update ( void  ) const
protected

Definition at line 83 of file FWParameterSetterBase.cc.

References m_frame, and FWParameterSetterEditorBase::updateEditor().

Referenced by python.Vispa.Gui.VispaWidget.VispaWidget::autosize(), python.Vispa.Views.LineDecayView.LineDecayContainer::createObject(), python.Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), FWStringParameterSetter::doUpdate(), FWLongParameterSetter::doUpdate(), FWBoolParameterSetter::doUpdate(), FWEnumParameterSetter::doUpdate(), FWDoubleParameterSetter::doUpdate(), python.Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), python.Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), python.Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), python.Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), python.Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), python.Vispa.Gui.FindDialog.FindDialog::reset(), python.Vispa.Gui.PortConnection.PointToPointConnection::select(), python.Vispa.Gui.VispaWidget.VispaWidget::select(), python.Vispa.Views.LineDecayView.LineDecayContainer::select(), python.Vispa.Gui.VispaWidget.VispaWidget::setText(), python.Vispa.Gui.VispaWidget.VispaWidget::setTitle(), python.Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), python.Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and python.Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

84 {
85  if (m_frame != 0)
87 }
FWParameterSetterEditorBase * m_frame

Member Data Documentation

FWParameterSetterEditorBase* FWParameterSetterBase::m_frame
private

Definition at line 64 of file FWParameterSetterBase.h.

Referenced by attach(), frame(), and update().