15 #ifndef __PI_ResourceManager_H__
16 #define __PI_ResourceManager_H__
40 class pi_OpHandleBinding;
41 class pi_OpSelectorBinding;
43 namespace PI_PythonState
48 namespace PI_PythonHandle
56 #define PI_NO_TEMPLATE_FOR_HANDLE -2
57 #define PI_INVALID_OP_PARM -3
58 #define PI_INVALID_PI_PARM -4
59 #define PI_BINDING_EXISTS -5
60 #define PI_INVALID_OP_FOR_PI -6
77 {
return (
this == &i); }
82 friend class pi_OpHandleBinding;
98 {
return myPIDescription; }
100 {
return myDefaultSettings; }
104 {
return myBindings; }
106 {
return (
this == &i); }
114 friend class pi_OpHandleBinding;
128 {
return myDescription; }
136 {
return myPrimMask; }
138 {
return myOpInput; }
140 {
return myOpInputReq; }
142 {
return myAllowDrag; }
144 {
return myAstSelAll; }
146 {
return myExtraInfo; }
148 {
return (
this == &i); }
162 friend class pi_OpSelectorBinding;
180 bool containsState(
const char *
name,
182 unsigned netmask)
const;
183 bool containsHandle(
const char *name)
const;
184 bool containsOpHandleLink(
const char *name)
const;
185 bool containsSelector(
const char *name)
const;
198 const char *network_type)
const;
204 const char *type)
const;
207 const char *type)
const;
212 getViewerStateRegisterStatus(
213 const char* state_name,
PI_ViewerType viewer_type,
const char* type)
const;
216 virtual void fireResourceEvent(
222 bool validStateTemplateName(
const char* name)
const;
228 virtual bool isRegisteredViewerState(
const char* name)
const;
231 virtual PI_PythonState::Template
const * viewerStateTemplate(
const char * state_name)
const;
232 virtual PI_PythonState::Template * viewerStateTemplate(
const char * state_name) ;
236 virtual bool isRegisteredViewerHandle(
const char* name)
const;
238 virtual PI_PythonHandle::Template
const*
239 viewerHandleTemplate(
const char* handle_name)
const;
246 int unbind(
OP_Operator *op,
const char *pidescription,
249 const char *pidescription,
252 const char *default_settings);
256 const char *pidescription,
257 const char *default_settings);
258 int bindScriptOp(
OP_Operator *op,
const char *piname,
259 const char *pidescription,
262 const char *default_settings);
266 virtual bool bindOperatorToViewerState(
const char* state_name,
OP_Operator* op);
274 bool operatorStateMandatory(
const char* op_name,
const char* op_type)
const;
279 const char *seldescription);
319 int bindSelector(
OP_Operator *op,
const char *sname,
320 const char *seldescription,
321 const char *prompt,
const char *opparm,
322 int opinput,
int opinputreq,
323 const char *primmask,
int allowdrag,
324 const char *menu,
int astselall,
325 const char *extrainfo,
bool fromScriptOp);
336 void getChannelNameFromParmAndVec(
UT_String &chan,
340 int checkForPIName(
const char *pi_name,
341 const char *pi_parm )
const;
345 bool display_warning =
true)
const;
349 virtual void findVolatileKeys(
const char *volatile_hotkey_name,
353 virtual void updateViewports(
int id,
const char *opname,
354 bool open_only =
false)
const;
358 PI_PITemplate *getOpHandleLinkTemplate(
const char *pi_name)
const;
370 bool isPIEthereal(
const char *piname,
371 bool *isfloat = 0)
const;
378 void ensureStatesExistForAllOperators(
const char *net_type_name);
379 virtual void ensureStatesExistForAllOperators(
PI_NetworkType net_type);
382 static bool getViewerType(
const char *viewer_type_token,
389 static bool getNetworkType(
const char *network_type_name,
395 static PI_NetworkType getFirstNetworkType(
unsigned int network_mask);
398 const char *op_Parm_name,
399 int vec_idx,
int *parm_idx);
402 int writeBindingsFile(
const char *fname)
const;
407 bool okay_to_use_last_settings)
const;
409 virtual void removePISettingsFromTables(
OP_Operator &op_type);
414 void recordPISettings(
const char *pi_description,
417 const char *settings);
426 void registerOpHandleBindings();
430 char const* stateToCreate()
const;
434 void setPythonResourceSupport(
void* res_support);
435 void* getPythonResourceSupport();
438 static void startParmsCache();
439 static void stopParmsCache();
443 static void getParmsCacheBehaviour(
bool &set_keys,
445 bool &append_scope );
448 void saveStateToCreate(
char const* state);
450 static int cacheParms();
453 static void setParmsCacheBehaviour(
bool set_keys,
bool do_scope,
457 {
return theHideLockedHandleParts; }
459 { theHideLockedHandleParts = hide; }
461 {
return theScopeChannelsOnKey; }
463 { theScopeChannelsOnKey = scope; }
465 {
return theAddScopedChannels; }
467 { theAddScopedChannels =
add; }
469 {
return theOpenChannelEditorOnScope; }
471 { theOpenChannelEditorOnScope = do_open; }
472 static void getChannelScopeCommandPrefix(
UT_String &str );
481 PI_OpPIKey(
const char *pi_name_in_setting_table,
const char *pi_type,
483 myPINameInSettingTable(pi_name_in_setting_table),
490 return myPINameInSettingTable == o.myPINameInSettingTable &&
498 SYShashCombine(hash, myOpId);
504 int opId()
const {
return myOpId; }
525 void installCommands();
526 void registerOpHandleLinks();
527 void registerCopHandleLinks();
528 void registerOpHandleConstructors();
529 void registerSelectors();
530 void registerSelectorConstructors();
533 bool isValidPiParmName(
const UT_String &pi_name,
535 void loadHandle(CPP_Manager &cppman,
OP_Operator *op,
536 pi_OpHandleBinding *binding);
537 void loadSelector(CPP_Manager &cppman,
540 pi_OpSelectorBinding *binding);
541 void loadOperator(CPP_Manager &cppman,
543 void loadOperator(CPP_Manager &cppman,
546 pi_OpHandleBinding *hbinding,
547 pi_OpSelectorBinding *sbinding);
560 static OP_ERROR savePIResourceManagerCallback(std::ostream &os,
562 OP_ERROR saveSettings(std::ostream &os)
const;
567 const char *type_name,
568 const char *description)
const;
570 const char *type_name,
571 const char *description);
587 char const* pi_name)
const;
609 void* myCurrentPythonSupport =
nullptr;
int operator==(const PI_BindingSelectorInfo &i) const
int operator==(const PI_BindingHandleInfo &i) const
const UT_String & getPrompt() const
UT_StringHolder piNameInSettingTable() const
const PI_OpHandleLinkMap & getOpHandleLinks() const
UT_Array< PI_SaveCallbackInfo > mySaveCallbacks
PI_HandleTemplateMap myHandles
static bool theOpenChannelEditorOnScope
const PI_SelectorTemplateMap & getSelectors() const
static UT_ValArray< OP_Node * > ourParmNodes
UT_StringArray myBuiltinOpHandleNames
UT_SymbolMap< pi_OpHandleBinding * > myOpHandleBindings
PI_API void PIcreateResourceManager(bool verbose=true)
static void setScopeChannelsOnKey(bool scope)
PI_OpHandleLinkMap myOpHandleLinks
bool getAstSelAll() const
static bool getAddScopedChannels()
SYS_HashType hash() const
PI_OpPIKey(const char *pi_name_in_setting_table, const char *pi_type, int op_id)
std::size_t SYS_HashType
Define the type for hash values.
PI_SettingList * mySettings
const PI_SettingList & getDefaultSettings() const
GLuint const GLchar * name
static void setOpenChannelEditorOnScope(bool do_open)
PI_API bool PIresourceManagerExists()
UT_StringHolder piType() const
void(* PI_SaveCallback)(void *data)
PI_SelectorTemplateMap mySelectors
const UT_String & getPIDescription() const
static bool theHideLockedHandleParts
bool operator==(const PI_OpPIKey &o) const
static bool theScopeChannelsOnKey
GLint GLint GLsizei GLint GLenum GLenum type
UT_SymbolMap< PI_NetworkType > myNetworkTypeTable
static UT_IntArray ourParmVecIndices
static bool ourScopeParmChannels
const UT_String & getOpParm() const
bool getOpInputReq() const
size_t operator()(const PI_OpPIKey &pk) const
static bool getHideLockedHandleParts()
const UT_String & getPrimMask() const
std::pair< PI_SaveCallback, void * > PI_SaveCallbackInfo
static bool getOpenChannelEditorOnScope()
static void setAddScopedChannels(bool add)
const UT_String & getExtraInfo() const
static bool getScopeChannelsOnKey()
PI_API PI_ResourceManager * PIgetResourceManager()
static void setHideLockedHandleParts(bool hide)
static bool theAddScopedChannels
const UT_String & getPIName() const
const PI_HandleTemplateMap & getHandles() const
const PI_BindingParmArray & getBindings() const
const UT_String & getMenu() const
static bool ourSetKeyOnParms
UT_StringHolder myStateBeingCreated
UT_Map< PI_OpPIKey, OpPISettingInfo, PI_OpPIKey::Hasher > myPISettingsForOps
const UT_String & getDescription() const
constexpr T pi()
Pi constant taken from Boost to match old behaviour.
UT_SymbolMap< pi_OpSelectorBinding * > myOpSelectorBindings
static UT_ValArray< PRM_Parm * > ourParms
ImageBuf OIIO_API add(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
int operator==(const PI_BindingParmInfo &i) const
bool getAllowDrag() const
static bool ourAppendToScope
const UT_String & getName() const
UT_StringMap< PI_SettingList * > myLastPISettings
GLenum GLsizei GLenum GLenum const void * table
const UT_String & getPIParm() const
const UT_String & getOpParm() const