00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __PI_PropertyMap__
00021 #define __PI_PropertyMap__
00022
00023 #include "PI_API.h"
00024 #include <UT/UT_SymbolTable.h>
00025
00026 class PRM_ParmNameMap;
00027 class PI_EditScriptedParms;
00028
00029 class PI_API PI_PropertyMapDef {
00030 public:
00031 PI_PropertyMapDef(const char *parmname,
00032 const char *propertyfile,
00033 const char *propertyname,
00034 const char *ch0=0, const char *ch1=0,
00035 const char *ch2=0, const char *ch3=0)
00036 {
00037 myParm = parmname;
00038 myPropFile = propertyfile;
00039 myProperty = propertyname;
00040 if (!ch0)
00041 ch0 = myParm;
00042 myChannels[0] = ch0;
00043 myChannels[1] = ch1;
00044 myChannels[2] = ch2;
00045 myChannels[3] = ch3;
00046 setRename(parmname, ch0, ch1, ch2, ch3);
00047 }
00048
00049
00050
00051 void setRename(const char *r, const char *ch0=0, const char *ch1=0,
00052 const char *ch2=0, const char *ch3=0)
00053 {
00054 myRename = r;
00055 myChRename[0] = ch0;
00056 myChRename[1] = ch1;
00057 myChRename[2] = ch2;
00058 myChRename[3] = ch3;
00059 }
00060
00061 const char *getParm() const { return myParm; }
00062 const char *getRename() const { return myRename; }
00063 const char *getPropFile() const { return myPropFile; }
00064 const char *getProperty() const { return myProperty; }
00065 const char *getCh(int i) const { return myChannels[i]; }
00066 const char *getChRename(int i) const { return myChRename[i]; }
00067 private:
00068 const char *myParm;
00069 const char *myPropFile;
00070 const char *myProperty;
00071 const char *myRename;
00072 const char *myChannels[4];
00073 const char *myChRename[4];
00074 };
00075
00076 class PI_API PI_PropertyMap {
00077 public:
00078 PI_PropertyMap();
00079 virtual ~PI_PropertyMap();
00080
00081 void setMap(int n, const PI_PropertyMapDef map[])
00082 {
00083 myMap = map;
00084 myEntries = n;
00085 createTokenMap();
00086 }
00087
00088 bool renameParameter(const char *oldname, const char *newname,
00089 const char *newch0=0, const char *newch1=0,
00090 const char *newch2=0, const char *newch3=0);
00091 bool createFromChannel(PI_EditScriptedParms &editparms,
00092 PRM_ParmNameMap *nmap,
00093 const char *chname);
00094
00095 private:
00096 void createTokenMap();
00097
00098 UT_SymbolTable myTokenMap;
00099 const PI_PropertyMapDef *myMap;
00100 int myEntries;
00101 };
00102
00103 #endif