12 #ifndef __OP_OTLManager__
13 #define __OP_OTLManager__
39 #define OP_TYPEBARMODE_FULLMENU "fullmenu"
40 #define OP_TYPEBARMODE_AUTOMENU "automenu"
41 #define OP_TYPEBARMODE_DISPLAYONLY "displayonly"
42 #define OP_TYPEBARMODE_NONE "none"
47 #define OP_IS_OTL_COMPILED "nodeconntype"
53 #define OP_IS_OTL_BLACKBOXED "nodeparmtype"
65 virtual bool onOTLLoadBegin(
const char* otl_name,
78 bool getSaveToHipFile()
const;
79 void setSaveToHipFile(
bool savetohip);
80 bool getSaveUnlockedToHipFile()
const;
81 void setSaveUnlockedToHipFile(
bool saveunlockedtohip);
82 bool getWarnOutOfDateOps()
const;
83 void setWarnOutOfDateOps(
bool warn);
84 bool getWarnDummyOpsOnLoad()
const;
85 void setWarnDummyOpsOnLoad(
bool warn);
86 bool getPreferLatestDate()
const;
87 void setPreferLatestDate(
bool preferlatest);
88 bool getPreferInternal()
const;
89 void setPreferInternal(
bool preferinternal);
90 bool getPreferIndexFile()
const;
91 void setPreferIndexFile(
bool preferindexfile);
92 bool getCreateBackups()
const;
93 void setCreateBackups(
bool createbackups);
94 bool getSafeguardOpDefs()
const;
95 void setSafeguardOpDefs(
bool safeguardopdefs);
96 bool getLeaveDefaultsUnchanged()
const;
97 void setLeaveDefaultsUnchanged(
bool leavedefaultsunchanged);
98 bool getUseOplibrariesFiles()
const;
99 void setUseOplibrariesFiles(
bool useoplibrariesfiles);
109 bool runOTLCallbacks(
const char* otl_name,
118 void clearFailedOTLList();
124 const char *metasrc,
int &libpos);
128 bool saveInternalMetaFile(std::ostream &os,
129 const char *prefix = 0)
const;
137 void setLibraryPreference(
const char *tablename,
139 const char *libfile);
144 void setLibraryPreferencesIfRequired(
int index);
147 const char *getLibraryPreference(
const char *tablename,
148 const char *opname)
const;
150 void clearLibraryPreferences(
bool refreshlibs);
153 void saveLibraryPreferences(std::ostream &os,
154 bool includeinternal =
true,
155 bool protectstrings =
false)
const;
159 bool withpath =
true)
const;
160 void getMetaSourceName(
const char *metasrc,
162 bool withpath =
true)
const;
163 bool setMetaSourceName(
const char *metasrc,
164 const char *metasrcname);
169 bool getIsPerformingAtomicAddRemove()
const;
174 bool getIsPerformingRefreshAll()
const;
178 bool getIsChangingLibraries()
const;
181 bool getIsCreatingNewHDA()
const;
185 void installLibrary(
char const* lib_filepath,
char const* oplib_filepath=
nullptr);
190 const char *metasrcbase,
191 bool changeoplibraries,
192 bool installinternaliffail,
198 int findLibrary(
const char *libfile,
199 const char *metasrc = 0)
const;
200 int findNextLibrary(
const char *libfile,
202 bool refreshLibrary(
int index,
bool force =
true);
203 bool removeLibrary(
const char *libfile,
205 bool changeoplibraries);
213 bool changeoplibraries);
215 bool removeMetaSource(
const char *metasrc);
218 void refreshAll(
bool reload_op_libraries);
226 bool changeoplibraries,
227 bool installinternaliffail,
231 int getNumLibraries()
const;
232 int getPreferredLibrary(
const char *tablename,
238 int getLatestLibrary(
const char *tablename,
245 int getNextLibrary(
const char *tablename,
254 bool dummydefinition =
false);
255 bool addToLibrary(
const char *libfile,
258 bool dummydefinition =
false,
259 bool create_op_type=
false,
260 bool create_backup=
true);
264 bool mergeLibraries(
const char *primary,
265 const char *secondary,
273 bool addToInternalLibrary(
UT_IStream &is, time_t modtime);
278 bool removeFromLibrary(
const char *libfile,
283 bool touchDefinition(
const char *libfile,
284 const char *tablename,
291 static void modifyDefinitionToInternalPaths(
301 void updateContentsFromNode(
307 bool compilechannels,
308 bool compilenodenames,
310 bool blackbox =
false);
314 void updateDefinitionFromNode(
323 bool blackbox =
false);
327 void setContentsCompression(
333 void setComment(
FS_IndexFile *deffile,
const char *comment);
338 void listLibraries(std::ostream &os)
const;
339 void listLibrariesWithDefinition(
const char *tablename,
341 std::ostream &os)
const;
342 void listOperators(
const char *libfile,
343 std::ostream &os)
const;
344 void listOperator(
const char *libfile,
345 const char *tablename,
348 std::ostream &os)
const;
352 void getLibrariesWithDefinition(
353 const char *tablename,
369 bool getAllMatchingOperators(
const char *opmask,
380 bool checkValidNodeName(
const char *
name,
385 const char *installpath,
386 const char *extradsinfo,
387 const char *installmetasrc,
390 bool create_backup=
true);
394 bool createOptype(
const char *tablename,
397 const char *installpath,
398 int min_input,
int max_input,
400 const char *extradsinfo,
401 const char *installmetasrc,
402 const char *extrainfo,
405 bool create_backup=
true);
407 static bool getHelpTemplateFile(
UT_String &helptemplatefile);
408 static void createDefaultOptypeName(
OP_Node *fromnode,
411 static void createOptypeLabelFromName(
UT_String name,
413 static void createOptypeNameFromLabel(
UT_String label,
415 static void fullyQualifyLibFileName(
const char *libfilebase,
417 const char *basedir = 0);
418 void fullyQualifyMetaSrcName(
const char *libfilebase,
420 void getSimplifiedPath(
UT_String &destpath,
422 const char *srcmeta)
const;
424 bool canSavePreferences()
const;
434 void pushFallbackLibraryContext();
435 void popFallbackLibraryContext();
436 void saveFallbackLibraryPaths(std::ostream &os,
438 bool loadFallbackLibraryPaths(
UT_IStream &is);
439 bool loadFallbackLibrary(
const char *tablename,
452 bool loadDummyDefinitions(
UT_IStream &is, time_t modtime);
453 void saveDummyDefinitions(std::ostream &os,
457 static void saveDefaultDialogScript(std::ostream &os,
460 const char *extradsinfo);
462 static void saveDefaultCreationScript(std::ostream &os,
469 static void writeOutDefinitionContents(
480 void refreshLicenses();
486 const UT_String &getInternalTempFile()
const;
499 {mySaveOpTypeCallback = cb;}
502 bool convertLibraryToFile(
const char *libfilebase,
503 const char *metasrcbase);
504 bool convertLibraryToDir(
const char *libfilebase,
505 const char *metasrcbase);
508 struct OTLFallbackData
518 friend class RefreshScope;
522 friend class ChangeScope;
525 void notifySinksOfAssetCreated(
528 void notifySinksOfAssetDeleted(
531 void notifySinksOfAssetSaved(
534 void notifySinksOfBeforeAssetCreated(
537 void notifySinksOfBeforeAssetDeleted(
540 void notifySinksOfBeforeAssetSaved(
544 void notifySinksOfLibraryUninstalled(
546 void notifySinksOfDefinitionsAdded(
int libindex,
548 void notifySinksOfDefinitionsRemoved(
int libindex,
551 void notifySinksOfSourceNamesChanged();
554 void notifySinksOfConfigurationChanged();
555 void notifySinksOfLicensesChanged();
556 void writeSimplifiedPath(std::ostream &os,
559 const char *prefix = 0)
const;
562 void setMetaSourceNameData(
int pos,
const char *metasrc,
563 const char *metasrcname);
568 bool saveMetaFile(
const char *metafile,
570 const char *addlib)
const;
574 int addToMetaSource(
const char *libfile,
576 bool changeoplibraries);
584 bool removeLibrary(
int index,
bool external=
false);
586 void loadPreferences();
587 void savePreferences();
589 void moveInternalToNewTempFile();
594 bool removeFromExternalLibrary(
const char *libfile,
602 bool backupAndWriteNewLibrary(
const char *libfilebase,
609 bool touchExternalDefinition(
const char *libfile,
610 const char *tablename,
613 bool touchInternalDefinition(
const char *tablename,
617 void addFromOpLibrariesFile(
const char *file,
622 void setLibraryPreference(
const char *tablename,
628 void addFallbackLibraryPath(
const char *tablename,
630 const char *libfile);
632 const char *opsymbol,
633 const char *tablename,
644 static void deleteLibraries(
void *
data);
662 int myPerformingRefreshAll;
663 bool myIsPerformingAtomicAddRemove;
664 bool mySaveToHipFile;
665 bool mySaveUnlockedToHipFile;
666 bool myWarnOutOfDateOps;
667 bool myWarnDummyOpsOnLoad;
668 bool myPreferLatestDateDefinition;
669 bool myPreferInternalDefinition;
670 bool myPreferIndexFileDefinition;
671 bool myCreateBackups;
672 bool mySafeguardOpDefs;
673 bool myLeaveDefaultsUnchanged;
674 bool myUseOplibrariesFiles;
675 bool myIsCreatingNewHDA;
686 { removeAllManagerSinks(); }
747 { removeManagerSink(manager); }
752 if( !manager )
return;
756 if (myManagers.find(manager) != -1)
760 myManagers.append(manager, 1);
764 if( !manager )
return;
766 myManagers.findAndRemove(manager);
770 for(
int i = myManagers.entries(); i --> 0; )
771 removeManagerSink(myManagers(i));
void removeManagerSink(OP_OTLManagerSink *sink)
int getVersion(int version)
GLsizei GLenum const void * indices
GLuint GLsizei const GLchar * label
void addManagerSink(OP_OTLManager *manager)
virtual void libraryInstalled(const OP_OTLLibrary *library)
virtual void libraryRemoved(OP_OTLLibrary *)
virtual ~OP_OTLLoadCallback()
virtual void definitionsRemoved(int, UT_IntArray &, OP_OTLLibrary *&)
**But if you need a result
virtual void licensesChanged()
void removeManagerSink(OP_OTLManager *manager)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
void removeAllManagerSinks()
virtual void libraryAdded(OP_OTLLibrary *)
void managerDeleted(OP_OTLManager *manager)
virtual ~OP_OTLManagerSink()
void setSaveOpTypeCallback(OP_SaveOpTypeCallback cb)
Only called by FUSE_AssetsMenu to clean dirty flags of assets.
GLint GLint GLsizei GLint GLenum format
OPENVDB_API void setVersion(std::ios_base &, const VersionId &libraryVersion, uint32_t fileVersion)
Associate specific file format and library version numbers with the given stream. ...
virtual void assetSaved(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
Called when an asset definition is saved.
GLuint const GLchar * name
GLenum GLenum GLsizei void * table
void addManagerSink(OP_OTLManagerSink *sink)
Functions for handling our interests.
virtual void configurationChanged()
GT_API const UT_StringHolder version
virtual void beforeAssetDeleted(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
Called right before an asset definition is removed from a library.
SIM_API const UT_StringHolder force
virtual void assetDeleted(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
void(* OP_SaveOpTypeCallback)(OP_Node *)
virtual void libraryUninstalled(const OP_OTLLibrary *library)
virtual void sourceNamesChanged()
virtual void assetCreated(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
virtual void definitionsAdded(int, UT_IntArray &)
virtual void beforeAssetCreated(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
Called right before an asset definition is created.
virtual void beforeAssetSaved(const OP_OTLLibrary &library, const OP_OTLDefinition &def)
Called right before an asset definition is saved.