00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __PRM_ScriptPage__
00021 #define __PRM_ScriptPage__
00022
00023 #include "PRM_API.h"
00024 #include <UT/UT_String.h>
00025 #include <UT/UT_PtrArray.h>
00026
00027 #define ISERROR(msg) { is.error(msg); return 0; }
00028 #define ISWARNING(msg) { is.warning(msg); }
00029
00030 class DS_Stream;
00031 class PRM_ScriptParm;
00032 class PRM_Template;
00033 class PRM_ScriptImports;
00034 class PRM_SpareData;
00035
00036 class PRM_API PRM_ScriptPage {
00037 public:
00038 PRM_ScriptPage();
00039 virtual ~PRM_ScriptPage();
00040
00041 enum {
00042 PRM_SCRIPT_RMAN = 0x01,
00043 PRM_SCRIPT_SHELL = 0x02,
00044 PRM_SCRIPT_VEX = 0x04,
00045 PRM_SCRIPT_INVISIBLE = 0x08,
00046 PRM_SCRIPT_INVISIBLETAB = 0x10
00047 };
00048
00049
00050
00051
00052 int parse(DS_Stream &is,
00053 bool expect_open_brace,
00054 PRM_ScriptParm *group_owner_parm,
00055 bool parsing_import);
00056
00057 void appendScriptParms(
00058 UT_PtrArray<PRM_ScriptParm *> &parms);
00059
00060 const char *getToken() const { return myToken; }
00061 void setToken(const char *token) { myToken = token; }
00062 const char *getLabel() const { return myLabel; }
00063 const char *getDefault() const { return myDefault; }
00064 PRM_ScriptParm *getParm(int i) { return myParms(i); }
00065 int getParmEntries() const { return myParms.entries(); }
00066 bool getBaseParm() const { return myBaseParm; }
00067 bool getTabBreak() const { return myTabBreak; }
00068 PRM_SpareData *getSpareData(bool create=false);
00069 void enforceOptions();
00070
00071
00072 void setEmptyDefault(const char *str)
00073 {
00074 if (!myDefault.isstring())
00075 myDefault.harden(str);
00076 }
00077
00078 void setFlag(unsigned flag) { myFlag |= flag; }
00079 void clearFlag(unsigned flag) { myFlag &= ~flag; }
00080 unsigned getFlag(unsigned bit) const { return myFlag & bit;}
00081
00082
00083 virtual int countParameters();
00084
00085
00086
00087 int computeTemplateSize();
00088
00089
00090
00091
00092 void fillTemplate(PRM_Template *array, int &idx,
00093 PRM_ScriptImports *&imports);
00094 void fillTemplate(PRM_Template *array, int &idx,
00095 PRM_ScriptImports *&imports,
00096 int nest_level, int switcher_idx,
00097 int folder);
00098
00099
00100
00101
00102 static const char *theTokens[];
00103
00104
00105
00106
00107
00108 static int theNumParms[];
00109
00110 protected:
00111 virtual PRM_ScriptParm *newParm();
00112 virtual PRM_ScriptPage *newImportPage();
00113 virtual int parseHelp(DS_Stream &is, UT_String &help);
00114 virtual int handleUnknown(DS_Stream &is, UT_String &token);
00115 int parseImport(DS_Stream &is);
00116 void processImportPage(PRM_ScriptPage *page);
00117 int parseAttribute(DS_Stream &is);
00118
00119 UT_String myToken;
00120 UT_String myLabel;
00121 UT_String myDefault;
00122 UT_String myImportSource;
00123 UT_String myImportToken;
00124 UT_String myImportMask;
00125 bool myImportEnable;
00126 UT_PtrArray<PRM_ScriptParm *> myParms;
00127 PRM_ScriptImports *myImports;
00128 bool myBaseParm;
00129 bool myTabBreak;
00130 PRM_SpareData *mySpareData;
00131 unsigned myFlag;
00132
00133 };
00134
00135 #endif