16 #ifndef __OP_Director_h__
17 #define __OP_Director_h__
38 #define OP_POSTLOAD_SCRIPT "456.cmd"
42 #define OP_HOM_SESSION_MODULE_CPIO_NAME ".hou.session"
47 class OP_SaveCallback;
50 class op_ShopClerkInfo;
59 class OP_EventScriptPathCache;
62 void *
data,
void *cbdata);
87 typedef OP_ERROR (*SaveCallback)(std::ostream &,
void *);
104 std::ostream &,
OP_Context &,
int = 0)
override
107 const char * =
nullptr)
override
123 bool loadChannelManagerOptions();
124 bool saveChannelManagerOptions();
128 bool include_temporary=
false);
134 bool remove_existing =
true);
136 virtual void enable(
int state);
138 OP_ERROR saveNetwork(std::ostream &os,
141 const char *merge_pattern=
nullptr,
143 void initializeManagerWireStyles();
144 virtual void clearNetwork(
int clear_aliases );
149 virtual void opUpdateAllExports();
152 { myOldCHOPOverrideFlag =
true; }
154 {
return myOldCHOPOverrideFlag; }
156 { myOldCHOPOverrideFlag =
false; }
169 int eval_collection=-1);
179 return myCwdContext.getValueForThread(thread)
186 bool include_hidden=
false,
187 bool append_to_list=
false)
const;
189 bool include_hidden=
false)
const;
190 bool getPickedInputs(
195 void clearPickedItems();
207 void addPickedNode(
const OP_Node &node,
bool edit);
208 void removePickedNode(
const OP_Node &node,
bool edit);
209 void makePickedNodeLast(
const OP_Node &node,
bool edit);
226 void addPickedInput(
const OP_Input &input);
227 void removePickedInput(
const OP_Input &input);
234 void setNFrames(
fpreal nframes,
bool notify =
true);
236 void setChopMotionSamples(
int n,
bool notify =
true);
249 void setSamplesPerSec(
251 bool modify_frame_count =
true,
252 bool preserve_keyframes =
false,
253 bool preserve_frame_start =
false,
259 void setGlobalTime(
fpreal t_start,
fpreal t_end,
bool notify =
true);
264 void setTimeRange(
fpreal t_start,
fpreal t_end,
bool notify =
true);
269 void setSampleRange(
fpreal frame_start,
fpreal fend,
bool notify =
true);
277 void setSaveCallback(SaveCallback cb,
void *cb_data);
278 void removeSaveCallback(SaveCallback cb,
void *cb_data);
282 void addEventCallback(EventType
type, EventCallback cb,
284 void removeEventCallback(EventType
type, EventCallback cb,
288 void setUserDisplayOptionSaveCallback(
289 OP_ERROR (*cb)(std::ostream &,
void *),
290 void *callback_data);
291 void setSceneFileVisualizersSaveCallback(
292 OP_ERROR (*cb)(std::ostream &,
void *),
293 void *callback_data);
294 void addBadLoadData(
char *str,
int len);
297 virtual void beginLoading();
298 virtual void endLoading();
300 {
return myIsLoadingHip; }
302 {
return myIsQuitting; }
304 { myIsDoingExplicitSave =
value; }
306 {
return myIsDoingExplicitSave; }
307 const OP_Node *getAnyCookingNode()
const;
310 {
return myIsMantra; }
314 {
return myIsClearing; }
316 void destroyFileResolver();
318 void beginTakeSwitch();
319 void endTakeSwitch();
321 {
return mySwitchingTake; }
327 void saveChannelGroups(std::ostream &os,
int binary);
329 void saveTimeGroups(std::ostream &os,
int binary);
331 void saveBookmarks(std::ostream &os,
int binary);
333 void saveScriptedOpLibrary(std::ostream &os);
334 bool loadScriptedOpLibrary(
UT_IStream &is, time_t modtime);
336 void saveInternalOpLibraries(std::ostream &os);
338 void saveLibraryPreferences(std::ostream &os);
340 void saveUnselectedFilePatterns(std::ostream &os);
341 bool loadUnselectedFilePatterns(
UT_IStream &is);
350 void saveExprFunctions(std::ostream &os);
357 {
return myCookEnabled; }
359 { myCookEnabled =
state; }
363 {
return mySimulationEnabled; }
365 { mySimulationEnabled =
state; }
370 {
return mySkipPlaybarBasedSimulationReset > 0; }
372 { mySkipPlaybarBasedSimulationReset += inc; }
375 bool addShopClerk(
const char *
type);
377 {
return myShopInfo.entries(); }
378 const char *getShopClerkName(
int clerk)
const;
379 int getShopClerkVisibility(
int clerk)
const;
380 void setShopClerkVisibility(
int clerk,
int onoff);
407 std::ostream &)
const
428 const char *parmname,
461 bool is_source_code =
false)
464 bool is_source_code =
false)
491 static void globAllArgumentsAsArray(
OP_Node &relative_to_node,
511 void getTableAndOperator(
515 const OP_Node *relativetonode =
nullptr);
517 {
return myOTLManager; }
519 {
return myOTLManager; }
524 void runDeleteScriptsOnQuit();
528 void addGlobalOpChangedCallback(
530 void removeGlobalOpChangedCallback(
535 void globalOpChanged(
OP_Node *node,
543 static bool createBackupFile(
const char *
filename,
549 static void autoIncrementRename(
const char *
filename,
560 const char *startup_script,
561 const char *postload_script);
565 {
return myGlobalEventScriptPathCache; }
568 void clearGlobalEventScriptPathCache();
571 void getCachedGlobalEventScriptPaths(
574 bool only_nonempty)
const;
580 bool getSaveSceneAsText()
const;
581 void setSaveSceneAsText(
bool on_off);
582 bool getNewFileSaveSceneAsText()
const;
583 void setNewFileSaveSceneAsText(
bool on_off);
587 void notifyBeforeSceneSave(
593 void notifyAfterSceneSave(
601 {
return myOrientationMode; }
603 { myOrientationMode = axis; }
605 static UT_Obfuscator *getObfuscator();
613 {
return binary ?
".bhip" :
".hip"; }
614 void clearUnsupportedCommands()
const;
625 errors +=
"Spare parameters are not alowed on ";
626 errors +=
"the root node.";
632 void runPostLoadScript();
640 void installCommands();
641 void installMoreCommands();
642 void installCHCommands();
643 void installOTLCommands();
644 void installOpRampResolver();
646 void savePreCommands(std::ostream &os);
647 void savePostCommands(std::ostream &os);
649 void notifyEventCallbacks(EventType
type);
653 void updateNewDefinition(
658 void varChanged(
const UT_String &varname);
664 static void getFirstFoundStartupScriptFile(
666 const char *script_file_name);
673 static void getFirstFoundScriptFile(
675 const char *inputpath);
681 int myBadLoadDataLen;
688 CwdContext() : myCwdId(-1)
700 OP_SaveCallback *myCallbacks;
701 OP_SaveCallback *myUserDisplayOptionCallback;
702 OP_SaveCallback *mySceneFileVisualizersCallback;
710 int mySimulationEnabled;
711 int mySkipPlaybarBasedSimulationReset;
721 struct EventCallbackInfo
725 friend bool operator==(
const EventCallbackInfo &lhs,
const EventCallbackInfo &rhs)
727 return (lhs.cb == rhs.cb) && (lhs.data == rhs.data);
740 EventCallbackInfoList myEventCallbacks[NUM_NETWORK_EVENT_TYPES];
743 OP_EventScriptPathCache *myGlobalEventScriptPathCache;
745 OrientationMode myOrientationMode;
750 bool myOldCHOPOverrideFlag;
755 bool mySwitchingTake;
759 bool myIsDoingExplicitSave;
770 bool mySaveSceneAsText;
771 bool myNewFileSaveSceneAsText;
776 bool myRunningPostLoadScript =
false;
778 static UT_Obfuscator *theObfuscator;
virtual bool addNodeSpareParm(OP_Parameters *, PRM_Template *) const
UT_ErrorSeverity OP_ERROR
UT_ValArray< OP_GlobalOpChangedCallback > OP_GlobalOpChangedCallbacks
GT_API const UT_StringHolder filename
virtual void clearHOMSessionModuleSource()
OP_StyleManager * getStyleManager()
void setIsDoingExplicitSave(bool value)
OP_API OP_Director * OPsetDirector(OP_Director *boss)
GT_API const UT_StringHolder time
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
UT_ColorTable & getGroupColorTable()
bool isSwitchingTake() const
GLsizei const GLfloat * value
void setOldCHOPOverrideFlag()
const GLuint GLenum const void * binary
bool getOldCHOPOverrideFlag()
GLsizei const GLchar *const * path
virtual void findInternalScriptOperators(const char *, OP_OTLDefinitionArray &)
virtual bool loadNodeSpareParms(OP_Parameters *, UT_IStream &, UT_String &) const
int saveCookedData(const char *, OP_Context &) override
virtual void definitionsRemoved(int, UT_IntArray &, OP_OTLLibrary *&)
std::tuple< Types...> UT_Tuple
OP_EventScriptPathCache * getGlobalEventScriptPathCache()
OP_BundleList * getBundles()
**But if you need a result
bool changeSpareParms(UT_IStream &, UT_String &errors) override
virtual int renameNode(OP_Node *node, const char *name, OP_RenameAction action=OP_RENAME_NORMAL)
virtual void clearHandleSettings(OP_Operator *)
virtual void deleteAllNodeSpareParms(OP_Parameters *) const
OrientationMode getOrientationMode() const
void setOrientationMode(OrientationMode axis)
int saveCookedData(std::ostream &, OP_Context &, int=0) override
static void saveOTLBackupInformation(std::ostream &os, const OP_OperatorList &fallbackops, const OP_OperatorList &dummyops)
CH_Manager * getChannelManager()
OP_OTLManager & getOTLManager()
const char * getOpType() const override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
virtual void updateExportedParms(OP_Node *)
OP_OpTypeId getOpTypeID() const override
GLint GLint GLsizei GLint GLenum GLenum type
virtual bool loadNodeCompiledDs(OP_Node *, UT_IStream &)
OP_DataType getCookedDataType() const override
virtual bool loadNodeCompiledCode(OP_Node *, UT_IStream &, bool is_source_code=false)
int getCwdStackSize(int thread) const
OP_ERROR cookMe(OP_Context &) override
bool getIsDoingExplicitSave() const
void bumpSkipPlaybarBasedSimulationReset(int inc)
void clearOldCHOPOverrideFlag()
bool getIsQuitting() const
bool loadNetwork(UT_IStream &is, int merge=0, const char *pattern=nullptr, int overwrite=0, const OP_FixNameParms *fix_name_parms=nullptr, UT_StringArray *src_names=nullptr, UT_StringArray *dest_names=nullptr)
int getNShopClerks() const
bool getIsLoadingHip() const
void getPickedItems(OP_ItemTypeMask item_type_mask, OP_NetworkBoxItemList &picked, bool include_hidden=false, bool recurse_picked_netboxes=false) const
void deleteCookedData() override
const char * getChildType() const override
virtual OP_ERROR saveNodeSpareParms(OP_Parameters *, bool, std::ostream &) const
GLuint const GLchar * name
virtual bool removeNodeSpareParm(OP_Parameters *node, const char *parmname, UT_StringArray *errs=nullptr, UT_StringArray *warn=nullptr) const
GLenum GLenum GLsizei void * table
virtual OP_Node * linkInternalScriptOperator(const char *, OP_Operator *)
GT_API const UT_StringHolder version
const OP_OTLManager & getOTLManager() const
virtual void getInternalScriptDefinition(OP_Node *, UT_String &)
virtual void deleteNodeSpareParmLayout(OP_Parameters *) const
virtual bool loadHOMSessionModuleSource(UT_IStream &is)
unsigned int OP_ItemTypeMask
fpreal32 getVersion() const
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
Create an evaluation context scope with a new node.
virtual void addExtraInput(OP_Node *op, OP_InterestType type)
OP_Take * getTakeManager()
const char * getFileExtension(int binary) const override
virtual void saveNodeSpareParmCommands(OP_Parameters *, std::ostream &, const char *, bool) const
OP_API OP_Director * OPgetDirector()
bool loadCookedData(UT_IStream &, const char *=nullptr) override
virtual void saveNodeCompiledDs(OP_Node *, std::ostream &)
OP_CommandManager * getCommandManager()
**If you just want to fire and args
void getCwd(UT_String &str)
virtual PRM_ScriptPage * allocateSpareScriptPage(OP_Operator *)
void setCookEnabled(int state)
virtual void definitionsAdded(int, UT_IntArray &)
virtual void saveNodeCompiledCode(OP_Node *, std::ostream &, bool is_source_code=false)
virtual void changeNodeSpareParms(OP_Parameters *, PI_EditScriptedParms &, UT_String &) const
int simulationEnabled() const
OP_ERROR bypassMe(OP_Context &, int &) override
virtual void saveHOMSessionModuleSource(std::ostream &os)
void * getCookedData(const OP_Context &) override
Cooks node data and makes it available through the reader.
OP_OpTypeId getChildTypeID() const override
void setSimulationEnabled(int state)
void(* OP_GlobalOpChangedCallback)(OP_Node *node, OP_EventType reason, void *data, void *cbdata)
UT_NonCopyable & operator=(const UT_NonCopyable &)=delete
bool getIsClearing() const
bool skipPlaybarBasedSimulationReset() const