3 #define DllBuild_Merge7z 10 // Minimum DllBuild of Merge7z plugin required
5 // We include dllpstub.h for Merge7z.h
6 // Merge7z::Proxy embeds a DLLPSTUB
11 #include "../ArchiveSupport/Merge7z/Merge7z.h"
18 extern __declspec(thread) Merge7z::Proxy Merge7z;
20 bool IsArchiveFile(const String&);
21 Merge7z::Format *ArchiveGuessFormat(const String&);
24 * @brief temp path context
26 class CTempPathContext
29 CTempPathContext *m_pParent;
30 String m_strDisplayRoot[3];
32 CTempPathContext *DeleteHead();
33 void Swap(int idx1, int idx2);
37 * @brief Merge7z::DirItemEnumerator to compress a single item.
39 class SingleItemEnumerator : public Merge7z::DirItemEnumerator
45 virtual Merge7z::Envelope *Enum(Item &);
46 SingleItemEnumerator(LPCTSTR path, LPCTSTR FullPath, LPCTSTR Name = _T(""));
50 * @brief Merge7z::DirItemEnumerator to compress items from DirView.
52 class DirItemEnumerator : public Merge7z::DirItemEnumerator
58 typedef CListCtrl *pView;
59 struct Envelope : public Merge7z::Envelope
68 std::list<String> m_rgFolderPrefix;
69 std::list<String>::iterator m_curFolderPrefix;
70 String m_strFolderPrefix;
72 std::map<String, void *> m_rgImpliedFolders[3];
74 const DIFFITEM &Next();
75 bool MultiStepCompressArchive(LPCTSTR);
85 BalanceFolders = 0x200
87 DirItemEnumerator(CDirView *, int);
89 virtual Merge7z::Envelope *Enum(Item &);
90 void CompressArchive(LPCTSTR = 0);
93 int NTAPI HasZipSupport();
95 struct DecompressResult
97 DecompressResult(const PathContext& files, CTempPathContext *pTempPathContext, paths::PATH_EXISTENCE pathsType) :
98 files(files), pTempPathContext(pTempPathContext), pathsType(pathsType)
102 CTempPathContext *pTempPathContext;
103 paths::PATH_EXISTENCE pathsType;
105 DecompressResult DecompressArchive(HWND hWnd, const PathContext& infiles);