00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef TIL_FILE_ITERATOR_H
00021 #define TIL_FILE_ITERATOR_H
00022
00023 #include "TIL_API.h"
00024 #include <UT/UT_String.h>
00025
00026 enum {
00027 TIL_SAVE_OK,
00028 TIL_OVERWRITE,
00029 TIL_SAVE_ABORT,
00030 TIL_FILE_SKIP
00031 };
00032
00033 class TIL_API TIL_FileIteratorUI
00034 {
00035 public:
00036 virtual ~TIL_FileIteratorUI();
00037 virtual bool errorAbort(const char *file,bool &continue_always,
00038 bool multiple) = 0;
00039
00040 virtual int overwriteConfirm(const char *file,bool &continue_always,
00041 bool multiple) = 0;
00042 virtual void showMessage(const char *message) = 0;
00043 };
00044
00045 class TIL_API TIL_FileIterator
00046 {
00047 public:
00048 TIL_FileIterator(const char *filepat);
00049 ~TIL_FileIterator();
00050
00051 void init(int fstart, int fend, int step = 1);
00052
00053 const char *iterate();
00054 int getFrame() const { return myCurrentFrame -myStep; }
00055 bool isLastFrame() const { return myCurrentFrame > myEnd; }
00056 float getFractionDone() const;
00057
00058 static bool errorAbort(const char *file,
00059 bool &continue_always,
00060 bool multiple);
00061
00062 static int overwriteConfirm(const char *file,
00063 bool &continue_always,
00064 bool multiple);
00065 static int overwrite(const char *file,
00066 bool &continue_always,
00067 bool multiple);
00068
00069 static void showMessage(const char *message);
00070
00071 static void setUI(TIL_FileIteratorUI *ui);
00072
00073 private:
00074 UT_String myFilePat;
00075 UT_String myPrefix;
00076 UT_String mySuffix;
00077 UT_String myCurrentFile;
00078 int myPad;
00079 int myStart, myEnd, myStep;
00080 int myCurrentFrame;
00081 int myCurrentIter;
00082 bool myMultipleFiles;
00083 bool myMultipleFilesUseIter;
00084 };
00085
00086 #endif