38 #ifndef IECOREHOUDINI_PARAMETERISEDHOLDER_H
39 #define IECOREHOUDINI_PARAMETERISEDHOLDER_H
41 #include "IECore/Parameter.h"
42 #include "IECore/CompoundParameter.h"
43 #include "IECore/MessageHandler.h"
45 #include "IECoreHoudini/MessageHandler.h"
46 #include "IECoreHoudini/ParameterisedHolderInterface.h"
52 template<
typename BaseType>
60 static PRM_Template parameters[];
61 static CH_LocalVariable variables[];
63 static PRM_Name pParameterisedClassCategory;
64 static PRM_Name pParameterisedClassName;
65 static PRM_Name pParameterisedVersion;
66 static PRM_Name pParameterisedSearchPathEnvVar;
67 static PRM_Name pMatchString;
68 static PRM_Name pReloadButton;
69 static PRM_Name pEvaluateParameters;
70 static PRM_Name pSwitcher;
72 static PRM_Default matchStringDefault;
73 static PRM_Default switcherDefaults[];
75 static PRM_ChoiceList classCategoryMenu;
76 static PRM_ChoiceList classNameMenu;
77 static PRM_ChoiceList classVersionMenu;
83 static void buildClassCategoryMenu(
void *data, PRM_Name *menu,
int maxSize,
const PRM_SpareData *,
const PRM_Parm * );
86 static void buildClassNameMenu(
void *data, PRM_Name *menu,
int maxSize,
const PRM_SpareData *,
const PRM_Parm * );
87 static void buildVersionMenu(
void *data, PRM_Name *menu,
int maxSize,
const PRM_SpareData *,
const PRM_Parm * );
88 static int reloadClassCallback(
void *data,
int index,
float time,
const PRM_Template *tplate );
89 static int reloadButtonCallback(
void *data,
int index,
float time,
const PRM_Template *tplate );
90 static void classNames(
const std::string searchPathEnvVar,
const std::string &matchString, std::vector<std::string> &names );
91 static void classVersions(
const std::string className,
const std::string searchPathEnvVar, std::vector<int> &versions );
92 static int defaultClassVersion(
const std::string className,
const std::string searchPathEnvVar );
95 virtual const char *inputLabel(
unsigned pos )
const;
96 virtual unsigned minInputs()
const;
97 virtual unsigned maxInputs()
const;
106 virtual void setParameterised(
const std::string &className,
int classVersion,
const std::string &searchPathEnvVar );
118 virtual bool load( UT_IStream &is,
const char *ext,
const char *path );
126 void updateParameter( IECore::ParameterPtr parm,
float now, std::string prefix=
"",
bool top_level=
false );
145 void load(
const std::string &className,
int classVersion,
const std::string &searchPathEnvVar,
bool updateGUI=
true );
148 IECore::RunTimeTypedPtr loadParameterised(
const std::string &className,
int classVersion,
const std::string &searchPathEnvVar );
151 template <
class T,
class U>
152 void checkForUpdate(
bool do_update, T val, IECore::ParameterPtr parm )
156 typename U::Ptr data = IECore::runTimeCast<U>( parm->getValue() );
157 if ( val != data->readable() )
164 IECore::RunTimeTypedPtr m_parameterised;
167 std::string m_loadedClassName;
169 IECore::MessageHandlerPtr m_messageHandler;
175 #endif // IECOREHOUDINI_PARAMETERISEDHOLDER_H
virtual bool setNodeValues()
void updateParameter(IECore::ParameterPtr parm, float now, std::string prefix="", bool top_level=false)
virtual void setInputParameterValues(float now)=0
virtual bool hasParameterised()
Returns whether or not this node is holding a valid parameterised object.
virtual bool load(UT_IStream &is, const char *ext, const char *path)
std::vector< ParameterPtr > ParameterVector
A type to hold a vector of Parameters.
Definition: CompoundParameter.h:56
The IECoreHoudini namespace holds all the functionality of libIECoreHoudini.
Definition: CoreHoudini.h:51
Definition: ParameterisedHolderInterface.h:46
static void buildClassCategoryMenu(void *data, PRM_Name *menu, int maxSize, const PRM_SpareData *, const PRM_Parm *)
virtual void setParameterised(IECore::RunTimeTypedPtr p)
Definition: MessageHandler.h:58
bool m_dirty
Determines if the node is dirty.
Definition: ParameterisedHolder.h:140
virtual void refreshInputConnections()=0
updates the input connections to match the current loaded parameters
virtual void setParameterisedValues(double time)
Sets the values of the parameters of the held Parameterised object to reflect the values...
Class representing an OP node acting as a holder for the abstract Parameterised class.
Definition: ParameterisedHolder.h:53
virtual IECore::RunTimeTypedPtr getParameterised()
Returns the parameterised object held by this node.
IECore::CompoundParameter::ParameterVector m_inputParameters
Definition: ParameterisedHolder.h:137