12 #ifndef __PI_EditScriptedParms__
13 #define __PI_EditScriptedParms__
40 #define PI_MAX_SCRIPT_PARM_SIZE 16
41 #define PI_FOLDER_DEFAULTNAME "folder0"
42 #define PI_PARM_DEFAULTNAME "newparameter"
78 return myToken.isstring() || myLabel.isstring();
90 bool init_auto_links=
true);
101 myCachedTypeIndex = -2;
105 void changeTypeToRampColor();
106 void changeTypeToRampFloat();
111 void copyDefaultValuesFromParm(
PRM_Parm *parm,
int subidx);
116 void setAutolinksToCurrentLinks(
OP_Node *node,
int subidx);
124 const char *nodepath,
134 bool in_import_block);
135 int saveSelectors(std::ostream &os,
const char *tokeni,
137 void saveSpareData(std::ostream &os,
139 bool skip_import_data,
140 bool first_group_page);
141 void saveSpareValue(std::ostream &os,
const char *tokeni,
142 const char *spare_token);
143 void saveConditional(std::ostream &os,
int indent,
147 void dump(std::ostream &os);
153 void moveMenu(
int idx);
154 void destroyMenu(
int idx);
156 void clearMenuItems();
157 void clearCachedChannels();
166 int getParmTypeIdxForChannels()
const;
168 void setSize(
int size);
195 bool keep_existing =
false);
202 const char *getSpareValue(
const char *token)
const;
203 void setSpareValue(
const char *token,
const char *
value);
204 void copySpareValue(
const char *token,
207 const char *getCallbackData()
const;
208 void setCallbackData(
const char *
value);
212 const char *getOpFilter()
const;
213 void setOpFilter(
const char *
value);
215 const char *getRManType()
const;
216 void setRManType(
const char *
value);
217 int getMultiStartOffset()
const;
218 void setMultiStartOffset(
int value);
221 const char *getRampBasisVar()
const;
222 void setRampBasisVar(
const char *
value);
223 const char *getRampKeysVar()
const;
224 void setRampKeysVar(
const char *
value);
225 const char *getRampValuesVar()
const;
226 void setRampValuesVar(
const char *
value);
227 const char *getImportSource()
const;
228 void setImportSource(
const char *
value);
229 const char *getImportToken()
const;
230 void setImportToken(
const char *
value);
231 const char *getImportMask()
const;
232 void setImportMask(
const char *
value);
233 bool getImportEnable()
const;
234 void setImportEnable(
bool value);
235 bool getExportDisable()
const;
236 void setExportDisable(
bool value);
237 bool getUnquotedFlag()
const;
238 void setUnquotedFlag(
bool value);
239 bool getIsGroupStart()
const;
240 bool getIsGroupEnd()
const;
241 bool getIsGroupParm()
const;
242 bool getIsMultiParm()
const;
243 bool getIsRampParm()
const;
244 bool getIsRampParmColor()
const;
245 bool getIsRampParmFloat()
const;
246 bool getIsFileParm()
const;
247 bool getIsBasicStringParm()
const;
248 bool getIsButtonParm()
const;
249 bool getIsLabelParm()
const;
251 bool getIsColorParm()
const;
254 bool getColorWheel()
const;
255 void setColorWheel(
bool value);
256 bool getColorDynamic()
const;
257 void setColorDynamic(
bool value);
259 bool getIsKeyValueDictParm()
const;
260 const char *getKeyValueDictKeyLabel()
const;
261 void setKeyValueDictKeyLabel(
const char *
label);
262 const char *getKeyValueDictValueLabel()
const;
263 void setKeyValueDictValueLabel(
const char *
label);
264 bool getKeyValueDictUseChooser()
const;
265 void setKeyValueDictUseChooser(
bool use_chooser);
266 const char *getKeyValueDictChooserLabel()
const;
267 void setKeyValueDictChooserLabel(
const char *
label);
268 const char *getKeyValueDictChooserCallback()
const;
269 void setKeyValueDictChooserCallback(
const char *callback);
271 const char *getRampBasisDefault()
const;
272 void setRampBasisDefault(
const char *
value);
273 bool getRampShowControlsDefault()
const;
274 void setRampShowControlsDefault(
bool value);
275 bool getRampGrayscaleDefault()
const;
276 void setRampGrayscaleDefault(
bool value);
278 void clearRampDefaults();
279 bool hasRampDefaultValue()
const;
280 void setRampDefaultFromParm(
const PRM_Parm &ramp_parm);
282 const char *getFileChooserMode()
const;
283 void setFileChooserMode(
const char *
value);
286 const char *getFileChooserPattern()
const;
287 void setFileChooserPattern(
const char *
value);
290 const char *getButtonIcon()
const;
291 void setButtonIcon(
const char *
value);
293 const char *getScriptAction()
const;
294 void setScriptAction(
const char *
value);
295 const char *getScriptActionHelp()
const;
296 void setScriptActionHelp(
const char *
value);
297 const char *getScriptActionIcon()
const;
298 void setScriptActionIcon(
const char *
value);
301 static const char *getScriptType(
const PRM_Type &ptype,
305 static bool parmTypeUsesOpFilter(
const char *
type);
306 static bool parmTypeUsesFileChooser(
const char *
type);
308 static const char *getExportDisableToken();
309 static bool isSwitcherLevelSpareToken(
const char *token);
373 void rebuildChannelNameCache(
375 int parmtypeidx)
const;
383 mutable int myCachedTypeIndex;
390 mutable int myChannelCacheTypeIndex;
413 bool add_reserved_parms,
414 bool init_auto_links,
415 bool skip_parm_vops =
false,
416 bool allow_switch_rename =
true);
423 bool add_reserved_parms,
424 bool spareparms=
false,
425 bool skip_parm_vops=
false);
430 bool add_reserved_parms,
431 bool skip_parm_vops=
false);
439 bool init_auto_links,
440 bool fix_invalid_joins);
448 bool init_auto_links);
465 int save(std::ostream &os,
UT_String &warnings,
466 bool validate_joins);
469 void dump(std::ostream &os);
477 PI_EditScriptedParmArray &
getParms() {
return myParms; }
478 int getNParms()
const;
484 int getFolderIndexWithLabel(
486 int getFolderIndexWithName(
495 void removeEmptyFolders();
499 int getNestedFolderIndex(
504 void getContainingFolders(
510 const char *nodepath,
511 int *linkedsubidx = 0);
515 int getMatchingGroupParm(
int parm)
const;
519 bool getIsFirstPage(
int parm)
const;
523 int getParentGroupParm(
int parm);
526 int getNMenu(
int parm);
528 const char *getMenuScript(
int parm);
539 bool remove_invalid_groups=
true);
540 void moveParms(
const UT_IntArray &movingparms,
int destpos,
541 bool remove_invalid_groups=
true);
546 void insertMultiParmTemplates(
const PRM_Template *tplate,
547 const char *parentparmname,
549 const char *nameprefix,
550 const char *labelprefix,
552 bool include_invisible_parms);
564 void permuteParms(
int first,
571 bool remove_invalid_joins=
true);
575 void removeInvalidJoins();
578 void copyDefaultsFromNode(
OP_Node *node);
580 int checkReservedName(
const char *
name)
const;
581 bool containsReservedParm()
const;
583 void initializeReserveFlags();
584 void clearReserveNamesAndFlags();
588 bool checkexistingparms);
592 bool checkexistingparms);
596 void setAutolinksToCurrentLinks();
605 const char *nodepath,
607 PI_EditScriptedParmArray &changedparms,
613 void fixParmNamesForInstanceLevel();
617 void findMisplacedReservedParms(
630 void updateNodesFromApplyAutoLinks(
637 bool updateAutoLinksForNameChange(
649 static void buildMultiparmInfo(
OP_Node *refnode);
650 static void clearMultiparmInfo();
651 static void lockMultiparmInfo();
652 static void releaseMultiparmInfo();
658 static void addRampAutoLinks(
661 const char *dstchannel,
662 const char *srcrelpath,
663 const char *srcchannel,
667 static void deleteRampAutoLinks(
670 const char *dstchannel,
673 bool also_revert =
false);
682 const PRM_Template *getBaseParmTemplate(
const char *parmname)
const;
692 int getMultiParmInstanceLevel(
704 void createImportGroups(
int offset,
708 void createImportGroupsBeforeGroupEnd(
710 int switcher_index,
int folder,
716 bool init_auto_links =
true,
717 bool skip_parm_vops =
false,
718 bool allow_switch_rename =
true);
722 bool init_auto_links =
true,
723 bool skip_parm_vops =
false,
724 bool allow_switch_rename =
true);
725 void removeInvalidGroups(
int startpos);
727 void saveGroupHeader(std::ostream &os,
int index,
731 bool &in_import_block);
732 void saveGroupFooter(std::ostream &os,
int index,
735 bool &in_import_block);
736 void saveImportHeader(std::ostream &os,
int index,
739 bool &in_import_block);
740 void saveImportFooter(std::ostream &os,
int index,
743 bool &in_import_block);
744 void saveMultiParmHeader(std::ostream &os,
int index,
747 bool &in_import_block);
748 void saveMultiParmFooter(std::ostream &os,
int index,
751 bool &in_import_block);
753 PI_EditScriptedParmArray myParms;
757 bool myIsEditingSpareParms;
758 bool myIsEditingOverrideParms;
775 int getNParms()
const;
777 OP_Node * getNode(
int parm_idx);
778 int getMatchingGroupParm(
int parm_idx)
const;
779 int removeParms(
int first_parm_idx,
int last_parm_idx);
790 void appendToAggregate(
796 int getParmIndex(
int node_idx,
int parm_sub_idx )
const;
797 void getNodeAndParmIndices(
int &node_idx,
int &parm_sub_idx,
798 int parm_idx )
const;
UT_StringHolder myHelpText
PI_EditScriptedParmMenuEnable
#define PI_MAX_SCRIPT_PARM_SIZE
GLuint GLsizei const GLchar * label
GLsizei const GLfloat * value
PI_EditScriptedParmFolderType
UT_ValArray< PI_EditScriptedParm * > PI_EditScriptedParmArray
**But if you need a result
PI_EditScriptedParmMenuType
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
PI_EditScriptedParmMenuType myMenuType
GLint GLint GLsizei GLint GLenum GLenum type
PI_EditScriptedParmArray & getParms()
UT_StringHolder myMenuScript
GLuint const GLchar * name
PRM_SpareData * mySpareData
PI_EditScriptedParmFolderType myFolderType
UT_SymbolMap< UT_StringArray * > PI_BuiltMultiParmInfo
GLint GLint GLsizei GLsizei GLsizei depth
__hostdev__ uint64_t last(uint32_t i) const
GA_API const UT_StringHolder parms
void setType(const UT_StringHolder &type)
LeafData & operator=(const LeafData &)=delete
const UT_StringHolder & getType() const
CH_ScriptLanguage myMenuScriptLanguage
UT_StringHolder myCategory
UT_ValArray< PI_EditScriptedParmMenu > myMenu
PI_EditScriptedParmMenuEnable myMenuEnable
PRM_MultiType
This type enum defines the different types of multi (dynamic) parameters.
ImageBuf OIIO_API channels(const ImageBuf &src, int nchannels, cspan< int > channelorder, cspan< float > channelvalues={}, cspan< std::string > newchannelnames={}, bool shuffle_channel_names=false, int nthreads=0)