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);
211 bool getCallbackFromUI()
const;
212 void setCallbackFromUI(
bool enable);
214 const char *getOpFilter()
const;
215 void setOpFilter(
const char *
value);
217 const char *getRManType()
const;
218 void setRManType(
const char *
value);
219 int getMultiStartOffset()
const;
220 void setMultiStartOffset(
int value);
223 const char *getRampBasisVar()
const;
224 void setRampBasisVar(
const char *
value);
225 const char *getRampKeysVar()
const;
226 void setRampKeysVar(
const char *
value);
227 const char *getRampValuesVar()
const;
228 void setRampValuesVar(
const char *
value);
229 const char *getImportSource()
const;
230 void setImportSource(
const char *
value);
231 const char *getImportToken()
const;
232 void setImportToken(
const char *
value);
233 const char *getImportMask()
const;
234 void setImportMask(
const char *
value);
235 bool getImportEnable()
const;
236 void setImportEnable(
bool value);
237 bool getExportDisable()
const;
238 void setExportDisable(
bool value);
239 bool getUnquotedFlag()
const;
240 void setUnquotedFlag(
bool value);
241 bool getIsGroupStart()
const;
242 bool getIsGroupEnd()
const;
243 bool getIsGroupParm()
const;
244 bool getIsMultiParm()
const;
245 bool getIsRampParm()
const;
246 bool getIsRampParmColor()
const;
247 bool getIsRampParmFloat()
const;
248 bool getIsFileParm()
const;
249 bool getIsBasicStringParm()
const;
250 bool getIsButtonParm()
const;
251 bool getIsLabelParm()
const;
253 bool getIsColorParm()
const;
256 bool getColorWheel()
const;
257 void setColorWheel(
bool value);
258 bool getColorDynamic()
const;
259 void setColorDynamic(
bool value);
261 bool getIsKeyValueDictParm()
const;
262 const char *getKeyValueDictKeyLabel()
const;
263 void setKeyValueDictKeyLabel(
const char *
label);
264 const char *getKeyValueDictValueLabel()
const;
265 void setKeyValueDictValueLabel(
const char *
label);
266 bool getKeyValueDictUseChooser()
const;
267 void setKeyValueDictUseChooser(
bool use_chooser);
268 const char *getKeyValueDictChooserLabel()
const;
269 void setKeyValueDictChooserLabel(
const char *
label);
270 const char *getKeyValueDictChooserCallback()
const;
271 void setKeyValueDictChooserCallback(
const char *callback);
273 const char *getRampBasisDefault()
const;
274 void setRampBasisDefault(
const char *
value);
275 bool getRampShowControlsDefault()
const;
276 void setRampShowControlsDefault(
bool value);
277 bool getRampGrayscaleDefault()
const;
278 void setRampGrayscaleDefault(
bool value);
280 void clearRampDefaults();
281 bool hasRampDefaultValue()
const;
282 void setRampDefaultFromParm(
const PRM_Parm &ramp_parm);
284 const char *getFileChooserMode()
const;
285 void setFileChooserMode(
const char *
value);
288 const char *getFileChooserPattern()
const;
289 void setFileChooserPattern(
const char *
value);
292 const char *getButtonIcon()
const;
293 void setButtonIcon(
const char *
value);
295 const char *getScriptAction()
const;
296 void setScriptAction(
const char *
value);
297 const char *getScriptActionHelp()
const;
298 void setScriptActionHelp(
const char *
value);
299 const char *getScriptActionIcon()
const;
300 void setScriptActionIcon(
const char *
value);
303 static const char *getScriptType(
const PRM_Type &ptype,
307 static bool parmTypeUsesOpFilter(
const char *
type);
308 static bool parmTypeUsesFileChooser(
const char *
type);
310 static const char *getExportDisableToken();
311 static bool isSwitcherLevelSpareToken(
const char *token);
375 void rebuildChannelNameCache(
377 int parmtypeidx)
const;
385 mutable int myCachedTypeIndex;
392 mutable int myChannelCacheTypeIndex;
415 bool add_reserved_parms,
416 bool init_auto_links,
417 bool skip_parm_vops =
false,
418 bool allow_switch_rename =
true);
425 bool add_reserved_parms,
426 bool spareparms=
false,
427 bool skip_parm_vops=
false);
432 bool add_reserved_parms,
433 bool skip_parm_vops=
false);
441 bool init_auto_links,
442 bool fix_invalid_joins);
450 bool init_auto_links);
467 int save(std::ostream &os,
UT_String &warnings,
468 bool validate_joins);
471 void dump(std::ostream &os);
479 PI_EditScriptedParmArray &
getParms() {
return myParms; }
480 int getNParms()
const;
486 int getFolderIndexWithLabel(
488 int getFolderIndexWithName(
497 void removeEmptyFolders();
501 int getNestedFolderIndex(
506 void getContainingFolders(
512 const char *nodepath,
513 int *linkedsubidx = 0);
517 int getMatchingGroupParm(
int parm)
const;
521 bool getIsFirstPage(
int parm)
const;
525 int getParentGroupParm(
int parm);
528 int getNMenu(
int parm);
530 const char *getMenuScript(
int parm);
541 bool remove_invalid_groups=
true);
542 void moveParms(
const UT_IntArray &movingparms,
int destpos,
543 bool remove_invalid_groups=
true);
548 void insertMultiParmTemplates(
const PRM_Template *tplate,
549 const char *parentparmname,
551 const char *nameprefix,
552 const char *labelprefix,
554 bool include_invisible_parms);
566 void permuteParms(
int first,
573 bool remove_invalid_joins=
true);
577 void removeInvalidJoins();
580 void copyDefaultsFromNode(
OP_Node *node);
582 int checkReservedName(
const char *
name)
const;
583 bool containsReservedParm()
const;
585 void initializeReserveFlags();
586 void clearReserveNamesAndFlags();
590 bool checkexistingparms);
594 bool checkexistingparms);
598 void setAutolinksToCurrentLinks();
607 const char *nodepath,
609 PI_EditScriptedParmArray &changedparms,
615 void fixParmNamesForInstanceLevel();
619 void findMisplacedReservedParms(
632 void updateNodesFromApplyAutoLinks(
639 bool updateAutoLinksForNameChange(
651 static void buildMultiparmInfo(
OP_Node *refnode);
652 static void clearMultiparmInfo();
653 static void lockMultiparmInfo();
654 static void releaseMultiparmInfo();
664 const PRM_Template *getBaseParmTemplate(
const char *parmname)
const;
674 int getMultiParmInstanceLevel(
686 void createImportGroups(
int offset,
690 void createImportGroupsBeforeGroupEnd(
692 int switcher_index,
int folder,
698 bool init_auto_links =
true,
699 bool skip_parm_vops =
false,
700 bool allow_switch_rename =
true);
704 bool init_auto_links =
true,
705 bool skip_parm_vops =
false,
706 bool allow_switch_rename =
true);
707 void removeInvalidGroups(
int startpos);
709 void saveGroupHeader(std::ostream &os,
int index,
713 bool &in_import_block);
714 void saveGroupFooter(std::ostream &os,
int index,
717 bool &in_import_block);
718 void saveImportHeader(std::ostream &os,
int index,
721 bool &in_import_block);
722 void saveImportFooter(std::ostream &os,
int index,
725 bool &in_import_block);
726 void saveMultiParmHeader(std::ostream &os,
int index,
729 bool &in_import_block);
730 void saveMultiParmFooter(std::ostream &os,
int index,
733 bool &in_import_block);
735 PI_EditScriptedParmArray myParms;
739 bool myIsEditingSpareParms;
740 bool myIsEditingOverrideParms;
757 int getNParms()
const;
759 OP_Node * getNode(
int parm_idx);
760 int getMatchingGroupParm(
int parm_idx)
const;
761 int removeParms(
int first_parm_idx,
int last_parm_idx);
772 void appendToAggregate(
778 int getParmIndex(
int node_idx,
int parm_sub_idx )
const;
779 void getNodeAndParmIndices(
int &node_idx,
int &parm_sub_idx,
780 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)