00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __PRM_PresetInfo__
00019 #define __PRM_PresetInfo__
00020
00021 #include "PRM_API.h"
00022 #include <iostream.h>
00023 #include <UT/UT_Pair.h>
00024 #include <UT/UT_String.h>
00025 #include <UT/UT_PtrArray.h>
00026
00027 class PRM_ParmList;
00028 class UT_StringArray;
00029
00030 typedef UT_Pair<UT_String, UT_String> UT_StringPair;
00031 typedef UT_PtrArray<UT_StringPair *> UT_StringPairList;
00032
00033 #define PRM_DEFAULT_PRESET "Permanent Defaults"
00034
00035 class PRM_API PRM_PresetInfo {
00036 public:
00037 PRM_PresetInfo(const char *subdir, const char *file);
00038 virtual ~PRM_PresetInfo();
00039
00040 void setIndexFile(const char *subdir);
00041 void setNeedsRefresh();
00042
00043 int getNumPresets();
00044 const UT_String &getPresetName(int i);
00045 const UT_String &getPresetPath(int i);
00046 const UT_String &getPresetFile();
00047 const UT_String &getPresetSection();
00048 int getDefaultPreset();
00049 int getPresetIndex(const char *presetname);
00050
00051 bool deletePresetFromDir(const char *name,
00052 const char *dir = 0);
00053 bool savePresetToDir(PRM_ParmList *parmlist,
00054 const char *name,
00055 const char *dir);
00056 bool loadPresetFile(PRM_ParmList *parmlist,
00057 const char *filename);
00058 bool savePresetFile(PRM_ParmList *parmlist,
00059 const char *filename);
00060
00061 static void makeValidPresetFileName(UT_String &filename);
00062
00063 static const UT_StringArray &getValidSaveDirs();
00064
00065
00066 static bool loadPresetContents(PRM_ParmList *parmlist,
00067 const char *token, UT_IStream &is);
00068
00069 private:
00070 void clear();
00071 void findAllPresets();
00072 void refreshIfRequired();
00073 bool savePreset(PRM_ParmList *parmlist, ostream &os);
00074 bool loadPreset(PRM_ParmList *parmlist, UT_IStream &is);
00075
00076 static int comparePresets(UT_StringPair * const *p1,
00077 UT_StringPair * const *p2);
00078
00079 UT_String mySubdir;
00080 UT_String myIndexFile;
00081 UT_String myPresetFile;
00082 UT_String myPresetSection;
00083 UT_StringPairList myPresets;
00084 bool myNeedsRefresh;
00085 };
00086
00087 #endif