chore: initial commit (extracted from Launchers monorepo)
Plugin: ns7zip v2.0.0 Architectures: x86-ansi, x86-unicode, amd64-unicode License: LGPL-2.1-or-later
This commit is contained in:
@@ -0,0 +1,483 @@
|
||||
// CompressDialog.h
|
||||
|
||||
#ifndef ZIP7_INC_COMPRESS_DIALOG_H
|
||||
#define ZIP7_INC_COMPRESS_DIALOG_H
|
||||
|
||||
#include "../../../Common/Wildcard.h"
|
||||
|
||||
#include "../../../Windows/Control/ComboBox.h"
|
||||
#include "../../../Windows/Control/Edit.h"
|
||||
|
||||
#include "../Common/LoadCodecs.h"
|
||||
#include "../Common/ZipRegistry.h"
|
||||
|
||||
#include "../FileManager/DialogSize.h"
|
||||
|
||||
#include "CompressDialogRes.h"
|
||||
|
||||
namespace NCompressDialog
|
||||
{
|
||||
namespace NUpdateMode
|
||||
{
|
||||
enum EEnum
|
||||
{
|
||||
kAdd,
|
||||
kUpdate,
|
||||
kFresh,
|
||||
kSync
|
||||
};
|
||||
}
|
||||
|
||||
struct CInfo
|
||||
{
|
||||
NUpdateMode::EEnum UpdateMode;
|
||||
NWildcard::ECensorPathMode PathMode;
|
||||
|
||||
bool SolidIsSpecified;
|
||||
// bool MultiThreadIsAllowed;
|
||||
UInt64 SolidBlockSize;
|
||||
UInt32 NumThreads;
|
||||
|
||||
NCompression::CMemUse MemUsage;
|
||||
|
||||
CRecordVector<UInt64> VolumeSizes;
|
||||
|
||||
UInt32 Level;
|
||||
UString Method;
|
||||
UInt64 Dict64;
|
||||
// UInt64 Dict64_Chain;
|
||||
bool OrderMode;
|
||||
UInt32 Order;
|
||||
UString Options;
|
||||
|
||||
UString EncryptionMethod;
|
||||
|
||||
bool SFXMode;
|
||||
bool OpenShareForWrite;
|
||||
bool DeleteAfterCompressing;
|
||||
|
||||
CBoolPair SymLinks;
|
||||
CBoolPair HardLinks;
|
||||
CBoolPair AltStreams;
|
||||
CBoolPair NtSecurity;
|
||||
|
||||
CBoolPair PreserveATime;
|
||||
|
||||
UInt32 TimePrec;
|
||||
CBoolPair MTime;
|
||||
CBoolPair CTime;
|
||||
CBoolPair ATime;
|
||||
CBoolPair SetArcMTime;
|
||||
|
||||
UString ArcPath; // in: Relative or abs ; out: Relative or abs
|
||||
|
||||
// FString CurrentDirPrefix;
|
||||
bool KeepName;
|
||||
|
||||
bool GetFullPathName(UString &result) const;
|
||||
|
||||
int FormatIndex;
|
||||
|
||||
UString Password;
|
||||
bool EncryptHeadersIsAllowed;
|
||||
bool EncryptHeaders;
|
||||
|
||||
CInfo():
|
||||
UpdateMode(NCompressDialog::NUpdateMode::kAdd),
|
||||
PathMode(NWildcard::k_RelatPath),
|
||||
SFXMode(false),
|
||||
OpenShareForWrite(false),
|
||||
DeleteAfterCompressing(false),
|
||||
FormatIndex(-1)
|
||||
{
|
||||
Level = Order = (UInt32)(Int32)-1;
|
||||
NumThreads = (UInt32)(Int32)-1;
|
||||
SolidIsSpecified = false;
|
||||
Dict64 = (UInt64)(Int64)(-1);
|
||||
// Dict64_Chain = (UInt64)(Int64)(-1);
|
||||
OrderMode = false;
|
||||
Method.Empty();
|
||||
Options.Empty();
|
||||
EncryptionMethod.Empty();
|
||||
TimePrec = (UInt32)(Int32)(-1);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
struct CBool1
|
||||
{
|
||||
bool Val;
|
||||
bool Supported;
|
||||
|
||||
CBool1(): Val(false), Supported(false) {}
|
||||
|
||||
void Init()
|
||||
{
|
||||
Val = false;
|
||||
Supported = false;
|
||||
}
|
||||
|
||||
void SetTrueTrue()
|
||||
{
|
||||
Val = true;
|
||||
Supported = true;
|
||||
}
|
||||
|
||||
void SetVal_as_Supported(bool val)
|
||||
{
|
||||
Val = val;
|
||||
Supported = true;
|
||||
}
|
||||
|
||||
/*
|
||||
bool IsVal_True_and_Defined() const
|
||||
{
|
||||
return Def && Val;
|
||||
}
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
class CCompressDialog: public NWindows::NControl::CModalDialog
|
||||
{
|
||||
public:
|
||||
CBool1 SymLinks;
|
||||
CBool1 HardLinks;
|
||||
CBool1 AltStreams;
|
||||
CBool1 NtSecurity;
|
||||
CBool1 PreserveATime;
|
||||
private:
|
||||
bool _ramSize_Defined;
|
||||
|
||||
NWindows::NControl::CComboBox m_ArchivePath;
|
||||
NWindows::NControl::CComboBox m_Format;
|
||||
NWindows::NControl::CComboBox m_Level;
|
||||
NWindows::NControl::CComboBox m_Method;
|
||||
NWindows::NControl::CComboBox m_Dictionary;
|
||||
// NWindows::NControl::CComboBox m_Dictionary_Chain;
|
||||
NWindows::NControl::CComboBox m_Order;
|
||||
NWindows::NControl::CComboBox m_Solid;
|
||||
NWindows::NControl::CComboBox m_NumThreads;
|
||||
NWindows::NControl::CComboBox m_MemUse;
|
||||
NWindows::NControl::CComboBox m_Volume;
|
||||
|
||||
int _dictionaryCombo_left;
|
||||
|
||||
UStringVector _memUse_Strings;
|
||||
|
||||
NWindows::NControl::CDialogChildControl m_Params;
|
||||
|
||||
NWindows::NControl::CComboBox m_UpdateMode;
|
||||
NWindows::NControl::CComboBox m_PathMode;
|
||||
|
||||
NWindows::NControl::CEdit _password1Control;
|
||||
NWindows::NControl::CEdit _password2Control;
|
||||
NWindows::NControl::CComboBox _encryptionMethod;
|
||||
|
||||
int _auto_MethodId;
|
||||
UInt32 _auto_Dict; // (UInt32)(Int32)-1 means unknown
|
||||
UInt32 _auto_Dict_Chain; // (UInt32)(Int32)-1 means unknown
|
||||
UInt32 _auto_Order;
|
||||
UInt64 _auto_Solid;
|
||||
UInt32 _auto_NumThreads;
|
||||
|
||||
int _default_encryptionMethod_Index;
|
||||
|
||||
int m_PrevFormat;
|
||||
UString DirPrefix;
|
||||
UString StartDirPrefix;
|
||||
|
||||
size_t _ramSize; // full RAM size avail
|
||||
size_t _ramSize_Reduced; // full for 64-bit and reduced for 32-bit
|
||||
UInt64 _ramUsage_Auto;
|
||||
|
||||
public:
|
||||
NCompression::CInfo m_RegistryInfo;
|
||||
|
||||
void SetArchiveName(const UString &name);
|
||||
int FindRegistryFormat(const UString &name);
|
||||
unsigned FindRegistryFormat_Always(const UString &name);
|
||||
|
||||
const CArcInfoEx &Get_ArcInfoEx()
|
||||
{
|
||||
return (*ArcFormats)[GetFormatIndex()];
|
||||
}
|
||||
|
||||
NCompression::CFormatOptions &Get_FormatOptions();
|
||||
|
||||
void CheckSFXNameChange();
|
||||
void SetArchiveName2(bool prevWasSFX);
|
||||
|
||||
unsigned GetStaticFormatIndex();
|
||||
|
||||
void SetNearestSelectComboBox(NWindows::NControl::CComboBox &comboBox, UInt32 value);
|
||||
|
||||
void SetLevel2();
|
||||
void SetLevel()
|
||||
{
|
||||
SetLevel2();
|
||||
EnableMultiCombo(IDC_COMPRESS_LEVEL);
|
||||
SetMethod();
|
||||
}
|
||||
|
||||
void SetMethod2(int keepMethodId);
|
||||
void SetMethod(int keepMethodId = -1)
|
||||
{
|
||||
SetMethod2(keepMethodId);
|
||||
EnableMultiCombo(IDC_COMPRESS_METHOD);
|
||||
}
|
||||
|
||||
void MethodChanged()
|
||||
{
|
||||
SetDictionary2();
|
||||
EnableMultiCombo(IDC_COMPRESS_DICTIONARY);
|
||||
// EnableMultiCombo(IDC_COMPRESS_DICTIONARY2);
|
||||
SetOrder2();
|
||||
EnableMultiCombo(IDC_COMPRESS_ORDER);
|
||||
}
|
||||
|
||||
int GetMethodID_RAW();
|
||||
int GetMethodID();
|
||||
|
||||
UString GetMethodSpec(UString &estimatedName);
|
||||
UString GetMethodSpec();
|
||||
bool IsMethodEqualTo(const UString &s);
|
||||
UString GetEncryptionMethodSpec();
|
||||
|
||||
bool IsZipFormat();
|
||||
bool IsXzFormat();
|
||||
|
||||
void SetEncryptionMethod();
|
||||
|
||||
int AddDict2(size_t sizeReal, size_t sizeShow);
|
||||
int AddDict(size_t size);
|
||||
// int AddDict_Chain(size_t size);
|
||||
|
||||
void SetDictionary2();
|
||||
|
||||
UInt32 GetComboValue(NWindows::NControl::CComboBox &c, int defMax = 0);
|
||||
UInt64 GetComboValue_64(NWindows::NControl::CComboBox &c, int defMax = 0);
|
||||
|
||||
UInt32 GetLevel() { return GetComboValue(m_Level); }
|
||||
UInt32 GetLevelSpec() { return GetComboValue(m_Level, 1); }
|
||||
UInt32 GetLevel2();
|
||||
|
||||
UInt64 GetDictSpec() { return GetComboValue_64(m_Dictionary, 1); }
|
||||
// UInt64 GetDictChainSpec() { return GetComboValue_64(m_Dictionary_Chain, 1); }
|
||||
|
||||
UInt64 GetDict2()
|
||||
{
|
||||
UInt64 num = GetDictSpec();
|
||||
if (num == (UInt64)(Int64)-1)
|
||||
{
|
||||
if (_auto_Dict == (UInt32)(Int32)-1)
|
||||
return (UInt64)(Int64)-1; // unknown
|
||||
num = _auto_Dict;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
// UInt32 GetOrder() { return GetComboValue(m_Order); }
|
||||
UInt32 GetOrderSpec() { return GetComboValue(m_Order, 1); }
|
||||
UInt32 GetNumThreadsSpec() { return GetComboValue(m_NumThreads, 1); }
|
||||
|
||||
UInt32 GetNumThreads2()
|
||||
{
|
||||
UInt32 num = GetNumThreadsSpec();
|
||||
if (num == (UInt32)(Int32)-1)
|
||||
num = _auto_NumThreads;
|
||||
return num;
|
||||
}
|
||||
|
||||
UInt32 GetBlockSizeSpec() { return GetComboValue(m_Solid, 1); }
|
||||
|
||||
/*
|
||||
UInt32 GetPrecSpec() { return GetComboValue(m_Prec, 1); }
|
||||
UInt32 GetPrec() { return GetComboValue(m_Prec, 0); }
|
||||
*/
|
||||
|
||||
|
||||
int AddOrder(UInt32 size);
|
||||
int AddOrder_Auto();
|
||||
|
||||
void SetOrder2();
|
||||
|
||||
bool GetOrderMode();
|
||||
|
||||
void SetSolidBlockSize2();
|
||||
void SetSolidBlockSize(/* bool useDictionary = false */)
|
||||
{
|
||||
SetSolidBlockSize2();
|
||||
EnableMultiCombo(IDC_COMPRESS_SOLID);
|
||||
}
|
||||
|
||||
void SetNumThreads2();
|
||||
void SetNumThreads()
|
||||
{
|
||||
SetNumThreads2();
|
||||
EnableMultiCombo(IDC_COMPRESS_THREADS);
|
||||
}
|
||||
|
||||
int AddMemComboItem(UInt64 val, bool isPercent = false, bool isDefault = false);
|
||||
void SetMemUseCombo();
|
||||
UString Get_MemUse_Spec();
|
||||
UInt64 Get_MemUse_Bytes();
|
||||
|
||||
UInt64 GetMemoryUsage_Dict_DecompMem(UInt64 dict, UInt64 &decompressMemory);
|
||||
UInt64 GetMemoryUsage_Threads_Dict_DecompMem(UInt32 numThreads, UInt64 dict, UInt64 &decompressMemory);
|
||||
UInt64 GetMemoryUsage_DecompMem(UInt64 &decompressMemory);
|
||||
UInt64 GetMemoryUsageComp_Threads_Dict(UInt32 numThreads, UInt64 dict64);
|
||||
|
||||
void PrintMemUsage(UINT res, UInt64 value);
|
||||
void SetMemoryUsage();
|
||||
void Print_Params();
|
||||
|
||||
void SetParams();
|
||||
|
||||
void SaveOptionsInMem();
|
||||
|
||||
void UpdatePasswordControl();
|
||||
bool IsShowPasswordChecked() const { return IsButtonCheckedBool(IDX_PASSWORD_SHOW); }
|
||||
|
||||
unsigned GetFormatIndex();
|
||||
bool SetArcPathFields(const UString &path, UString &name, bool always);
|
||||
bool SetArcPathFields(const UString &path);
|
||||
bool GetFinalPath_Smart(UString &resPath) const;
|
||||
void ArcPath_WasChanged(const UString &newPath);
|
||||
|
||||
void CheckSFXControlsEnable();
|
||||
// void CheckVolumeEnable();
|
||||
void EnableMultiCombo(unsigned id);
|
||||
void FormatChanged(bool isChanged);
|
||||
|
||||
void OnButtonSetArchive();
|
||||
bool IsSFX();
|
||||
void OnButtonSFX();
|
||||
|
||||
virtual bool OnInit() Z7_override;
|
||||
virtual bool OnMessage(UINT message, WPARAM wParam, LPARAM lParam) Z7_override;
|
||||
virtual bool OnCommand(unsigned code, unsigned itemID, LPARAM lParam) Z7_override;
|
||||
virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override;
|
||||
virtual void OnOK() Z7_override;
|
||||
virtual void OnHelp() Z7_override;
|
||||
|
||||
void MessageBoxError(LPCWSTR message)
|
||||
{
|
||||
MessageBoxW(*this, message, L"7-Zip", MB_ICONERROR);
|
||||
}
|
||||
|
||||
void ShowOptionsString();
|
||||
|
||||
public:
|
||||
const CObjectVector<CArcInfoEx> *ArcFormats;
|
||||
CUIntVector ArcIndices; // can not be empty, must contain Info.FormatIndex, if Info.FormatIndex >= 0
|
||||
AStringVector ExternalMethods;
|
||||
|
||||
void SetMethods(const CObjectVector<CCodecInfoUser> &userCodecs);
|
||||
|
||||
NCompressDialog::CInfo Info;
|
||||
UString OriginalFileName; // for bzip2, gzip2
|
||||
|
||||
INT_PTR Create(HWND wndParent = NULL)
|
||||
{
|
||||
BIG_DIALOG_SIZE(400, 320);
|
||||
return CModalDialog::Create(SIZED_DIALOG(IDD_COMPRESS), wndParent);
|
||||
}
|
||||
|
||||
CCompressDialog() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class COptionsDialog: public NWindows::NControl::CModalDialog
|
||||
{
|
||||
struct CBoolBox
|
||||
{
|
||||
bool IsSupported;
|
||||
bool DefaultVal;
|
||||
CBoolPair BoolPair;
|
||||
|
||||
unsigned Id;
|
||||
unsigned Set_Id;
|
||||
|
||||
void SetIDs(unsigned id, unsigned set_Id)
|
||||
{
|
||||
Id = id;
|
||||
Set_Id = set_Id;
|
||||
}
|
||||
|
||||
CBoolBox():
|
||||
IsSupported(false),
|
||||
DefaultVal(false)
|
||||
{}
|
||||
};
|
||||
|
||||
CCompressDialog *cd;
|
||||
|
||||
NWindows::NControl::CComboBox m_Prec;
|
||||
|
||||
UInt32 _auto_Prec;
|
||||
UInt32 TimePrec;
|
||||
|
||||
void Reset_TimePrec() { TimePrec = (UInt32)(Int32)-1; }
|
||||
bool IsSet_TimePrec() const { return TimePrec != (UInt32)(Int32)-1; }
|
||||
|
||||
CBoolBox MTime;
|
||||
CBoolBox CTime;
|
||||
CBoolBox ATime;
|
||||
CBoolBox ZTime;
|
||||
|
||||
UString SecString;
|
||||
UString NsString;
|
||||
|
||||
|
||||
void CheckButton_Bool1(UINT id, const CBool1 &b1);
|
||||
void GetButton_Bool1(UINT id, CBool1 &b1);
|
||||
void CheckButton_BoolBox(bool supported, const CBoolPair &b2, CBoolBox &bb);
|
||||
void GetButton_BoolBox(CBoolBox &bb);
|
||||
|
||||
void Store_TimeBoxes();
|
||||
|
||||
UInt32 GetComboValue(NWindows::NControl::CComboBox &c, int defMax = 0);
|
||||
UInt32 GetPrecSpec()
|
||||
{
|
||||
UInt32 prec = GetComboValue(m_Prec, 1);
|
||||
if (prec == _auto_Prec)
|
||||
prec = (UInt32)(Int32)-1;
|
||||
return prec;
|
||||
}
|
||||
UInt32 GetPrec() { return GetComboValue(m_Prec, 0); }
|
||||
|
||||
// void OnButton_TimeDefault();
|
||||
int AddPrec(unsigned prec, bool isDefault);
|
||||
void SetPrec();
|
||||
void SetTimeMAC();
|
||||
|
||||
void On_CheckBoxSet_Prec_Clicked();
|
||||
void On_CheckBoxSet_Clicked(const CBoolBox &bb);
|
||||
|
||||
virtual bool OnInit() Z7_override;
|
||||
virtual bool OnCommand(unsigned code, unsigned itemID, LPARAM lParam) Z7_override;
|
||||
virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override;
|
||||
virtual void OnOK() Z7_override;
|
||||
virtual void OnHelp() Z7_override;
|
||||
|
||||
public:
|
||||
|
||||
INT_PTR Create(HWND wndParent = NULL)
|
||||
{
|
||||
BIG_DIALOG_SIZE(240, 232);
|
||||
return CModalDialog::Create(SIZED_DIALOG(IDD_COMPRESS_OPTIONS), wndParent);
|
||||
}
|
||||
|
||||
COptionsDialog(CCompressDialog *cdLoc):
|
||||
cd(cdLoc)
|
||||
// , TimePrec(0)
|
||||
{
|
||||
Reset_TimePrec();
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user