00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __PI_OldParms_h__
00023 #define __PI_OldParms_h__
00024
00025 #include "PI_API.h"
00026
00027 #include <UT/UT_RefArray.h>
00028 #include <UT/UT_PtrArray.h>
00029 #include <UT/UT_IntArray.h>
00030 #include <UT/UT_String.h>
00031 #include <UT/UT_StringArray.h>
00032
00033 class PRM_Parm;
00034 class OP_Node;
00035 class OP_Operator;
00036 class PI_EditScriptedParm;
00037 class PI_EditScriptedParms;
00038
00039
00040 typedef enum {
00041 PI_PARMDEL_UPDATEALL,
00042 PI_PARMDEL_UPDATESIMPLE,
00043 PI_PARMDEL_UPDATENONE
00044 } PI_ParmDelBehavior;
00045
00046 class PI_API pi_OldParm
00047 {
00048 public:
00049 pi_OldParm() :
00050 myOrigName(UT_String::ALWAYS_DEEP),
00051 myNewName(UT_String::ALWAYS_DEEP),
00052 myOrigChanSuffix(UT_String::ALWAYS_DEEP),
00053 myNewChanSuffix(UT_String::ALWAYS_DEEP),
00054 myOrigSubIdx(0),
00055 myDeleted(false),
00056 myIsRamp(false),
00057 myIsColorRamp(false)
00058 {
00059 }
00060
00061
00062 UT_String myOrigName;
00063 UT_String myNewName;
00064 UT_String myOrigChanSuffix;
00065 UT_String myNewChanSuffix;
00066 int myOrigSubIdx;
00067 UT_StringArray myMultiOwners;
00068 bool myDeleted:1,
00069 myIsRamp:1,
00070 myIsColorRamp;
00071 };
00072
00073 class PI_API PI_OldParms
00074 {
00075 public:
00076 PI_OldParms();
00077 PI_OldParms(const PI_OldParms &other);
00078 ~PI_OldParms();
00079
00080
00081 void preserveOldParms(PI_EditScriptedParms *eso);
00082
00083
00084 void renameOldParm(const char *oldname, const char *newname);
00085 void deleteOldParm(const char *newname);
00086 void renameOldParmChannel(const char *newname, const char *oldchan,
00087 const char *newchan);
00088 void deleteOldParmChannel(const char *newname, const char *newchan);
00089 void undeleteOldParm(const char *oldname);
00090
00091
00092 void resolveOldParmLinks(int node_id, PI_EditScriptedParms *eos,
00093 UT_StringArray &errs,
00094 UT_StringArray &parmdelwarnings);
00095
00096
00097 bool hasDeletedOldParm(const char *oldname) const;
00098
00099
00100 static int getParameterDeletionBehavior();
00101 static void setParameterDeletionBehavior(int behavior);
00102
00103 private:
00104 int addOldParm(const char *name, const char *chan, int subidx);
00105 void initOldParmMultiOwners(
00106 int idx,
00107 const UT_PtrArray<PI_EditScriptedParm *> &folders,
00108 bool omit_last);
00109
00110
00111 bool getModifiedString(const char *srcstr, UT_String &deststr,
00112 const OP_Node *root, OP_Node *node,
00113 const char *origname, const char *newname);
00114
00115
00116 void addChannelNames(OP_Node &node,
00117 const pi_OldParm &old_parm,
00118 const char *origname,
00119 const char *newname,
00120 bool whole_multiparm,
00121 UT_StringArray &old_names,
00122 UT_StringArray &new_names);
00123
00124
00125
00126
00127
00128 void resolveOldParmChannels(OP_Node &node,
00129 PI_EditScriptedParm *ep, int epidx,
00130 const char *origname, const char *newname,
00131 const pi_OldParm &old_parm,
00132 UT_StringArray &errs,
00133 UT_StringArray &parmdelwarnings);
00134
00135 void resolveSingleParm(OP_Node *root,
00136 const char *origname, const char *newname,
00137 UT_PtrArray<PRM_Parm *> &parms,
00138 UT_IntArray &parmsubidxs,
00139 bool deleted,
00140 bool autolink,
00141 UT_StringArray &errs,
00142 UT_StringArray &parmdelwarnings);
00143
00144 void resolveOldMultiParmInfo(OP_Node *root,
00145 const char *origname, const char *newname,
00146 UT_StringArray &instchans,
00147 bool deleted,
00148 UT_StringArray &errs,
00149 UT_StringArray &parmdelwarnings);
00150
00151
00152 private:
00153 UT_RefArray<pi_OldParm> myOldParms;
00154 static PI_ParmDelBehavior theParmDelBehavior;
00155 };
00156
00157 #endif