summaryrefslogtreecommitdiff
path: root/win32/droplet/replace.h
diff options
context:
space:
mode:
Diffstat (limited to 'win32/droplet/replace.h')
-rw-r--r--win32/droplet/replace.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/win32/droplet/replace.h b/win32/droplet/replace.h
new file mode 100644
index 0000000..b3c72c3
--- /dev/null
+++ b/win32/droplet/replace.h
@@ -0,0 +1,73 @@
+/*
+ * AUTHOR
+ * N. Nielsen
+ *
+ * LICENSE
+ * This software is in the public domain.
+ *
+ * The software is provided "as is", without warranty of any kind,
+ * express or implied, including but not limited to the warranties
+ * of merchantability, fitness for a particular purpose, and
+ * noninfringement. In no event shall the author(s) be liable for any
+ * claim, damages, or other liability, whether in an action of
+ * contract, tort, or otherwise, arising from, out of, or in connection
+ * with the software or the use or other dealings in the software.
+ *
+ * SUPPORT
+ * Send bug reports to: <nielsen@memberwebs.com>
+ */
+
+#ifndef __REPLACE_H__
+#define __REPLACE_H__
+
+#include "ProgressDlg.h"
+#include "common/Droplet.h"
+#include "lib/rlib.h"
+
+// Replace: --------------------------------------------------------
+// Main processing class. Calls rlib for replacements
+
+class Replace
+{
+public:
+ Replace();
+ virtual ~Replace();
+
+ // Initialize processing (dialog, droplet etc...)
+ HRESULT initialize();
+
+ // Undo initialization
+ HRESULT terminate();
+
+ // Recursively process files in a folder
+ HRESULT replaceFolder(LPCTSTR folder);
+
+ // Process a single file into itself (maybe using backups)
+ HRESULT replaceSingleFile(LPCTSTR fileName);
+
+ // Process one file into another
+ HRESULT replaceFilename(LPCTSTR fileIn, LPCTSTR fileOut);
+
+ // Process one open file into another
+ HRESULT replaceFile(HANDLE in, HANDLE out);
+
+ // Process a memory buffer into an open file
+ HRESULT replaceBuffer(byte* data, size_t size, HANDLE out);
+
+
+private:
+ // Callback for rlib when data output is needed
+ static int writeFile(r_stream* stream, byte* data, size_t len);
+
+ // Callback for rlib status updates
+ static int matchStatus(r_stream* stream, r_replace* repl);
+
+protected:
+ Droplet m_droplet; // The droplet
+ ProgressDlg m_dlg; // The progress dialog
+
+private:
+ HANDLE m_outFile; // Open output file handle used by writeFile
+};
+
+#endif // __REPLACE_H__