mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-14 18:11:41 -06:00
Origial James Hoo mod to 16.04
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
#define g4xs (xc - gSize - gSpace)
|
||||
#define g4xs2 (g4xs - m - m)
|
||||
|
||||
#define yOpt 80
|
||||
#define yOpt (80+1)
|
||||
|
||||
#define xArcFolderOffs 40
|
||||
|
||||
@@ -52,15 +52,15 @@
|
||||
#define GROUP_Y_SIZE_ENCRYPT 128
|
||||
#endif
|
||||
|
||||
#define yPsw (yOpt + GROUP_Y_SIZE + 8)
|
||||
#define yPsw (yOpt + GROUP_Y_SIZE + 8 + 2)
|
||||
|
||||
IDD_COMPRESS DIALOG 0, 0, xs, ys MY_MODAL_DIALOG_STYLE MY_FONT
|
||||
CAPTION "Add to Archive"
|
||||
BEGIN
|
||||
LTEXT "", IDT_COMPRESS_ARCHIVE_FOLDER, m + xArcFolderOffs, m, xc - xArcFolderOffs, 8
|
||||
LTEXT "&Archive:", IDT_COMPRESS_ARCHIVE, m, 12, xArcFolderOffs, 8
|
||||
COMBOBOX IDC_COMPRESS_ARCHIVE, m + xArcFolderOffs, 18, xc - bxsDots - 12 - xArcFolderOffs, 126, MY_COMBO_WITH_EDIT
|
||||
PUSHBUTTON "...", IDB_COMPRESS_SET_ARCHIVE, xs - m - bxsDots, 16, bxsDots, bys, WS_GROUP
|
||||
COMBOBOX IDC_COMPRESS_ARCHIVE, m + xArcFolderOffs, 18, xc - bxsDots - 4 - xArcFolderOffs, 160, MY_COMBO_WITH_EDIT
|
||||
PUSHBUTTON "...", IDB_COMPRESS_SET_ARCHIVE, xs - m - bxsDots, 16+1, bxsDots, bys-1, WS_GROUP
|
||||
|
||||
LTEXT "Archive &format:", IDT_COMPRESS_FORMAT, m, 41, g0xs, 8
|
||||
COMBOBOX IDC_COMPRESS_FORMAT, g1x, 39, g1xs, 80, MY_COMBO | CBS_SORT
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "../FileManager/LangUtils.h"
|
||||
#include "../FileManager/resourceGui.h"
|
||||
|
||||
#include "../FileManager/ViewSettings.h"
|
||||
|
||||
#include "ExtractDialog.h"
|
||||
#include "ExtractDialogRes.h"
|
||||
#include "ExtractRes.h"
|
||||
@@ -88,7 +90,7 @@ static const UInt32 kLangIDs[] =
|
||||
// static const int kWildcardsButtonIndex = 2;
|
||||
|
||||
#ifndef NO_REGISTRY
|
||||
static const unsigned kHistorySize = 16;
|
||||
static const unsigned kHistorySize = 30;
|
||||
#endif
|
||||
|
||||
#ifndef _SFX
|
||||
@@ -133,6 +135,21 @@ void CExtractDialog::GetButton_Bools(UINT id, CBoolPair &b1, CBoolPair &b2)
|
||||
|
||||
#endif
|
||||
|
||||
void StartApplication(const UString &dir, const UString &path)
|
||||
{
|
||||
SHELLEXECUTEINFOW execInfo;
|
||||
ZeroMemory(&execInfo, sizeof(execInfo));
|
||||
execInfo.cbSize = sizeof(execInfo);
|
||||
execInfo.fMask = SEE_MASK_FLAG_DDEWAIT;
|
||||
execInfo.hwnd = NULL;
|
||||
execInfo.lpVerb = NULL;
|
||||
execInfo.lpFile = path;
|
||||
execInfo.lpParameters = NULL;
|
||||
execInfo.lpDirectory = dir.IsEmpty() ? NULL : (LPCWSTR)dir;
|
||||
execInfo.nShow = SW_SHOWNORMAL;
|
||||
ShellExecuteExW(&execInfo);
|
||||
}
|
||||
|
||||
bool CExtractDialog::OnInit()
|
||||
{
|
||||
#ifdef LANG
|
||||
@@ -159,6 +176,9 @@ bool CExtractDialog::OnInit()
|
||||
_pathName.Attach(GetItem(IDE_EXTRACT_NAME));
|
||||
#endif
|
||||
|
||||
_freeSpace.Attach(GetItem(IDC_STATIC_EXTRACT_FREE_SPACE));
|
||||
_freeSpace.SetText(L"");
|
||||
|
||||
#ifdef NO_REGISTRY
|
||||
|
||||
PathMode = NExtract::NPathMode::kFullPaths;
|
||||
@@ -207,6 +227,7 @@ bool CExtractDialog::OnInit()
|
||||
#endif
|
||||
|
||||
_path.SetText(pathPrefix);
|
||||
ShowPathFreeSpace(pathPrefix);
|
||||
|
||||
#ifndef NO_REGISTRY
|
||||
for (unsigned i = 0; i < _info.Paths.Size() && i < kHistorySize; i++)
|
||||
@@ -220,6 +241,11 @@ bool CExtractDialog::OnInit()
|
||||
_path.SetCurSel(-1);
|
||||
*/
|
||||
|
||||
#ifndef _SFX
|
||||
m_bOpenOutputFolder = ReadOptOpenOutputFolder();
|
||||
CheckButton(IDC_EXTRACT_CHECK_OPEN_OUTPUT_FOLDER, m_bOpenOutputFolder);
|
||||
#endif
|
||||
|
||||
#ifndef _SFX
|
||||
|
||||
_pathMode.Attach(GetItem(IDC_EXTRACT_PATH_MODE));
|
||||
@@ -253,11 +279,26 @@ void CExtractDialog::UpdatePasswordControl()
|
||||
|
||||
bool CExtractDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
|
||||
{
|
||||
switch (buttonID)
|
||||
switch(buttonID)
|
||||
{
|
||||
case IDB_EXTRACT_SET_PATH:
|
||||
OnButtonSetPath();
|
||||
return true;
|
||||
|
||||
case IDC_EXTRACT_BUTTON_OPEN_PATH:
|
||||
OnButtonOpenPath();
|
||||
return true;
|
||||
|
||||
case IDC_EXTRACT_CHECK_OPEN_OUTPUT_FOLDER:
|
||||
m_bOpenOutputFolder = IsButtonCheckedBool(IDC_EXTRACT_CHECK_OPEN_OUTPUT_FOLDER);
|
||||
return true;
|
||||
|
||||
#ifndef _SFX
|
||||
case IDC_CHECK_DELETE_SOURCE_FILE:
|
||||
m_bDeleteSourceFile = IsButtonCheckedBool(IDC_CHECK_DELETE_SOURCE_FILE);
|
||||
return true;
|
||||
#endif
|
||||
|
||||
#ifndef _SFX
|
||||
case IDX_EXTRACT_NAME_ENABLE:
|
||||
ShowItem_Bool(IDE_EXTRACT_NAME, IsButtonCheckedBool(IDX_EXTRACT_NAME_ENABLE));
|
||||
@@ -284,6 +325,7 @@ void CExtractDialog::OnButtonSetPath()
|
||||
_path.SetCurSel(-1);
|
||||
#endif
|
||||
_path.SetText(resultPath);
|
||||
ShowPathFreeSpace(resultPath);
|
||||
}
|
||||
|
||||
void AddUniqueString(UStringVector &list, const UString &s)
|
||||
@@ -296,6 +338,10 @@ void AddUniqueString(UStringVector &list, const UString &s)
|
||||
|
||||
void CExtractDialog::OnOK()
|
||||
{
|
||||
#ifndef _SFX
|
||||
SaveOptOpenOutputFolder(m_bOpenOutputFolder);
|
||||
#endif
|
||||
|
||||
#ifndef _SFX
|
||||
int pathMode2 = kPathModeButtonsVals[_pathMode.GetCurSel()];
|
||||
if (PathMode != NExtract::NPathMode::kCurPaths ||
|
||||
@@ -416,3 +462,147 @@ void CExtractDialog::OnHelp()
|
||||
CModalDialog::OnHelp();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
BOOL IsDirectory(const wchar_t * lpszPathFile)
|
||||
{
|
||||
DWORD dwAttr;
|
||||
|
||||
dwAttr = GetFileAttributesW(lpszPathFile);
|
||||
return (dwAttr != (DWORD)-1) && (dwAttr & FILE_ATTRIBUTE_DIRECTORY);
|
||||
}
|
||||
|
||||
void CExtractDialog::OnButtonOpenPath()
|
||||
{
|
||||
UString currentPath;
|
||||
_path.GetText(currentPath);
|
||||
|
||||
if (IsDirectory(currentPath))
|
||||
{
|
||||
StartApplication(currentPath, currentPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
wchar_t szMsg[1024];
|
||||
wsprintfW(szMsg, L"Folder \"%s\" is not available yet.\n\n"
|
||||
L"Note: the program will create the folder automatically when extracting.", (LPCWSTR)currentPath);
|
||||
MessageBoxW((HWND)_window, szMsg, L"7-Zip", MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static int MakeByteSizeString64(wchar_t * lpszBuf, size_t ccBuf, unsigned __int64 n64Byte)
|
||||
{
|
||||
int nRet = 0;
|
||||
|
||||
if (n64Byte < 1000ui64)
|
||||
{
|
||||
// < 1K
|
||||
nRet = swprintf(lpszBuf, ccBuf,
|
||||
L"%I64d B", n64Byte);
|
||||
}
|
||||
else if (n64Byte < 1024000ui64) // 1024 * 1000
|
||||
{
|
||||
// 1K <= n64Byte < 1M
|
||||
nRet = swprintf(lpszBuf, ccBuf,
|
||||
L"%.1f KB", (double)n64Byte / 1024.0);
|
||||
}
|
||||
else if (n64Byte < 1048576000ui64) // 1024 * 1024 * 1000
|
||||
{
|
||||
// 1M <= n64Byte < 1G
|
||||
nRet = swprintf(lpszBuf, ccBuf,
|
||||
L"%.2f MB", (double)n64Byte / 1048576.0); // 1024 * 1024
|
||||
}
|
||||
else if (n64Byte < 1073741824000ui64) // 1024 * 1024 * 1024 * 1000
|
||||
{
|
||||
// 1 G <= n64Byte < 1T
|
||||
nRet = swprintf(lpszBuf, ccBuf,
|
||||
L"%.2f GB", (double)n64Byte / 1073741824.0); // 1024.0F * 1024.0F * 1024.0F
|
||||
}
|
||||
else
|
||||
{
|
||||
// n64Byte >= 1T
|
||||
nRet = swprintf(lpszBuf, ccBuf,
|
||||
L"%.2f TB", (double)n64Byte / 1099511627776.0);
|
||||
// 1024.0F * 1024.0F * 1024.0F * 1024.0F
|
||||
}
|
||||
|
||||
return nRet;
|
||||
}
|
||||
|
||||
void CExtractDialog::ShowPathFreeSpace(UString & strPath)
|
||||
{
|
||||
bool bBadPath;
|
||||
UString strText;
|
||||
|
||||
strText.Empty();
|
||||
|
||||
bBadPath = false;
|
||||
strPath.Trim();
|
||||
for (; !IsDirectory(strPath); )
|
||||
{
|
||||
int n = strPath.ReverseFind(L'\\');
|
||||
if (n == -1)
|
||||
{
|
||||
bBadPath = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
strPath.ReleaseBuf_SetEnd(n);
|
||||
}
|
||||
}
|
||||
if (!bBadPath)
|
||||
{
|
||||
unsigned __int64 n64FreeBytesAvailable;
|
||||
unsigned __int64 n64TotalNumberOfBytes;
|
||||
unsigned __int64 n64TotalNumberOfFreeBytes;
|
||||
|
||||
if (GetDiskFreeSpaceExW(strPath, (PULARGE_INTEGER)&n64FreeBytesAvailable,
|
||||
(PULARGE_INTEGER)&n64TotalNumberOfBytes, (PULARGE_INTEGER)&n64TotalNumberOfFreeBytes))
|
||||
{
|
||||
wchar_t szFreeBytes[1024];
|
||||
wchar_t szTotalBytes[1024];
|
||||
MakeByteSizeString64(szFreeBytes, 1024-4, n64TotalNumberOfFreeBytes);
|
||||
MakeByteSizeString64(szTotalBytes, 1024-4, n64TotalNumberOfBytes);
|
||||
int nLen = swprintf(strText.GetBuf(1024), 1024-4, L"%s Free (Total: %s)", szFreeBytes, szTotalBytes);
|
||||
strText.ReleaseBuf_SetEnd(nLen);
|
||||
}
|
||||
}
|
||||
_freeSpace.SetText(strText);
|
||||
}
|
||||
|
||||
|
||||
bool CExtractDialog::OnCommand(int code, int itemID, LPARAM lParam)
|
||||
{
|
||||
if (itemID == IDC_EXTRACT_PATH)
|
||||
{
|
||||
#ifdef NO_REGISTRY
|
||||
if (code == EN_CHANGE)
|
||||
#else
|
||||
if (code == CBN_EDITCHANGE)
|
||||
#endif
|
||||
{
|
||||
UString strPath;
|
||||
_path.GetText(strPath);
|
||||
|
||||
ShowPathFreeSpace(strPath);
|
||||
return true;
|
||||
}
|
||||
#ifndef NO_REGISTRY
|
||||
else if (code == CBN_SELCHANGE)
|
||||
{
|
||||
int nSel = _path.GetCurSel();
|
||||
if (nSel != CB_ERR)
|
||||
{
|
||||
UString strPath;
|
||||
_path.GetLBText(nSel, strPath);
|
||||
ShowPathFreeSpace(strPath);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return CModalDialog::OnCommand(code, itemID, lParam);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "../../../Windows/Control/ComboBox.h"
|
||||
#include "../../../Windows/Control/Edit.h"
|
||||
#include "../../../Windows/Control/Static.h"
|
||||
|
||||
#include "../Common/ExtractMode.h"
|
||||
|
||||
@@ -31,6 +32,8 @@ namespace NExtractionDialog
|
||||
*/
|
||||
}
|
||||
|
||||
void StartApplication(const UString &dir, const UString &path);
|
||||
|
||||
class CExtractDialog: public NWindows::NControl::CModalDialog
|
||||
{
|
||||
#ifdef NO_REGISTRY
|
||||
@@ -45,6 +48,7 @@ class CExtractDialog: public NWindows::NControl::CModalDialog
|
||||
NWindows::NControl::CComboBox _pathMode;
|
||||
NWindows::NControl::CComboBox _overwriteMode;
|
||||
#endif
|
||||
NWindows::NControl::CStatic _freeSpace;
|
||||
|
||||
#ifndef _SFX
|
||||
// int GetFilesMode() const;
|
||||
@@ -58,6 +62,8 @@ class CExtractDialog: public NWindows::NControl::CModalDialog
|
||||
virtual bool OnInit();
|
||||
virtual bool OnButtonClicked(int buttonID, HWND buttonHWND);
|
||||
virtual void OnOK();
|
||||
void OnButtonOpenPath();
|
||||
virtual bool OnCommand(int code, int itemID, LPARAM lParam);
|
||||
|
||||
#ifndef NO_REGISTRY
|
||||
|
||||
@@ -67,6 +73,7 @@ class CExtractDialog: public NWindows::NControl::CModalDialog
|
||||
|
||||
#endif
|
||||
|
||||
void ShowPathFreeSpace(UString & strPath);
|
||||
bool IsShowPasswordChecked() const { return IsButtonCheckedBool(IDX_PASSWORD_SHOW); }
|
||||
public:
|
||||
// bool _enableSelectedFilesButton;
|
||||
@@ -84,6 +91,9 @@ public:
|
||||
NExtract::NPathMode::EEnum PathMode;
|
||||
NExtract::NOverwriteMode::EEnum OverwriteMode;
|
||||
|
||||
bool m_bOpenOutputFolder;
|
||||
bool m_bDeleteSourceFile;
|
||||
|
||||
#ifndef _SFX
|
||||
// CBoolPair AltStreams;
|
||||
CBoolPair NtSecurity;
|
||||
@@ -103,7 +113,8 @@ public:
|
||||
|
||||
CExtractDialog():
|
||||
PathMode_Force(false),
|
||||
OverwriteMode_Force(false)
|
||||
OverwriteMode_Force(false),
|
||||
m_bOpenOutputFolder(false), m_bDeleteSourceFile(false)
|
||||
{
|
||||
ElimDup.Val = true;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "../../GuiCommon.rc"
|
||||
|
||||
#define xc 336
|
||||
#define yc 168
|
||||
#define yc 200
|
||||
|
||||
#undef g1xs
|
||||
#undef g2x
|
||||
@@ -18,6 +18,13 @@
|
||||
#define g2xs (xc - g1xs - gSpace)
|
||||
#define g2xs2 (g2xs - m - m)
|
||||
|
||||
#define bxsOpen 30
|
||||
#define xsSpace 4
|
||||
|
||||
#define e7zYbase 58
|
||||
#define newControlHeight 42
|
||||
#define newControlHeight2 58
|
||||
|
||||
#undef GROUP_Y_SIZE
|
||||
#ifdef UNDER_CE
|
||||
#define GROUP_Y_SIZE 8
|
||||
@@ -29,30 +36,36 @@ IDD_EXTRACT DIALOG 0, 0, xs, ys MY_MODAL_DIALOG_STYLE MY_FONT
|
||||
CAPTION "Extract"
|
||||
BEGIN
|
||||
LTEXT "E&xtract to:", IDT_EXTRACT_EXTRACT_TO, m, m, xc, 8
|
||||
COMBOBOX IDC_EXTRACT_PATH, m, m + 12, xc - bxsDots - 12, 100, MY_COMBO_WITH_EDIT
|
||||
PUSHBUTTON "...", IDB_EXTRACT_SET_PATH, xs - m - bxsDots, m + 12 - 2, bxsDots, bys, WS_GROUP
|
||||
COMBOBOX IDC_EXTRACT_PATH, m, m + 12, xc - bxsDots - xsSpace - bxsOpen - xsSpace, 160, MY_COMBO_WITH_EDIT
|
||||
PUSHBUTTON "...", IDB_EXTRACT_SET_PATH, xs - m - bxsDots - xsSpace - bxsOpen, m + 12 - 1, bxsDots, bys-1, WS_GROUP
|
||||
PUSHBUTTON "&Open", IDC_EXTRACT_BUTTON_OPEN_PATH, xs - m - bxsOpen, m + 12 - 1, bxsOpen, bys-1, WS_GROUP
|
||||
|
||||
CONTROL "", IDX_EXTRACT_NAME_ENABLE, MY_CHECKBOX, m, m + 34, 12, 10
|
||||
EDITTEXT IDE_EXTRACT_NAME, m + 12 + 2, m + 32, g1xs - 12 - 2, 14, ES_AUTOHSCROLL
|
||||
EDITTEXT IDE_EXTRACT_NAME, m + 12 + 2, m + 32, xc - 12 - 2, 14, ES_AUTOHSCROLL
|
||||
|
||||
LTEXT "Path mode:", IDT_EXTRACT_PATH_MODE, m, m + 52, g1xs, 8
|
||||
COMBOBOX IDC_EXTRACT_PATH_MODE, m, m + 64, g1xs, 140, MY_COMBO
|
||||
LTEXT "", IDC_STATIC_EXTRACT_FREE_SPACE, m, e7zYbase, xc, 8
|
||||
GROUPBOX "After extraction completes successfully", IDC_GUI_AFTER_EXTRACT, m, e7zYbase+12, xc, 27
|
||||
CONTROL "O&pen output folder", IDC_EXTRACT_CHECK_OPEN_OUTPUT_FOLDER, MY_CHECKBOX, 14, e7zYbase+24, 100, 10
|
||||
CONTROL "&Delete source archives", IDC_CHECK_DELETE_SOURCE_FILE, MY_CHECKBOX, 125, e7zYbase+24, 120, 10
|
||||
|
||||
LTEXT "Path mode:", IDT_EXTRACT_PATH_MODE, m, m + 52 + newControlHeight, g1xs, 8
|
||||
COMBOBOX IDC_EXTRACT_PATH_MODE, m, m + 64 + newControlHeight, g1xs, 140, MY_COMBO
|
||||
|
||||
CONTROL "Eliminate duplication of root folder", IDX_EXTRACT_ELIM_DUP, MY_CHECKBOX,
|
||||
m, m + 84, g1xs, 10
|
||||
m, m + 84 + newControlHeight, g1xs, 10
|
||||
|
||||
LTEXT "Overwrite mode:", IDT_EXTRACT_OVERWRITE_MODE, m, m + 104, g1xs, 8
|
||||
COMBOBOX IDC_EXTRACT_OVERWRITE_MODE, m, m + 116, g1xs, 140, MY_COMBO
|
||||
LTEXT "Overwrite mode:", IDT_EXTRACT_OVERWRITE_MODE, m, m + 104 + newControlHeight, g1xs, 8
|
||||
COMBOBOX IDC_EXTRACT_OVERWRITE_MODE, m, m + 116 + newControlHeight, g1xs, 140, MY_COMBO
|
||||
|
||||
|
||||
GROUPBOX "Password", IDG_PASSWORD, g2x, m + 36, g2xs, GROUP_Y_SIZE
|
||||
EDITTEXT IDE_EXTRACT_PASSWORD, g2x2, m + 50, g2xs2, 14, ES_PASSWORD | ES_AUTOHSCROLL
|
||||
CONTROL "Show Password", IDX_PASSWORD_SHOW, MY_CHECKBOX, g2x2, m + 72, g2xs2, 10
|
||||
GROUPBOX "Password", IDG_PASSWORD, g2x, m + 36 + newControlHeight2, g2xs, GROUP_Y_SIZE
|
||||
EDITTEXT IDE_EXTRACT_PASSWORD, g2x2, m + 50 + newControlHeight2, g2xs2, 14, ES_PASSWORD | ES_AUTOHSCROLL
|
||||
CONTROL "Show Password", IDX_PASSWORD_SHOW, MY_CHECKBOX, g2x2, m + 72 + newControlHeight2, g2xs2, 10
|
||||
|
||||
// CONTROL "Restore alternate data streams", IDX_EXTRACT_ALT_STREAMS, MY_CHECKBOX,
|
||||
// g2x, m + 104, g2xs, 10
|
||||
CONTROL "Restore file security", IDX_EXTRACT_NT_SECUR, MY_CHECKBOX,
|
||||
g2x, m + 104, g2xs, 10
|
||||
g2x, m + 100 + newControlHeight2, g2xs, 10
|
||||
|
||||
DEFPUSHBUTTON "OK", IDOK, bx3, by, bxs, bys, WS_GROUP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, bx2, by, bxs, bys
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
#define IDC_EXTRACT_PATH_MODE 102
|
||||
#define IDC_EXTRACT_OVERWRITE_MODE 103
|
||||
|
||||
#define IDC_EXTRACT_BUTTON_OPEN_PATH 105
|
||||
#define IDC_EXTRACT_CHECK_OPEN_OUTPUT_FOLDER 106
|
||||
#define IDC_STATIC_EXTRACT_FREE_SPACE 107
|
||||
#define IDC_CHECK_DELETE_SOURCE_FILE 108
|
||||
#define IDC_GUI_AFTER_EXTRACT 109
|
||||
|
||||
#define IDE_EXTRACT_PASSWORD 120
|
||||
|
||||
#define IDE_EXTRACT_NAME 130
|
||||
@@ -18,7 +24,8 @@
|
||||
|
||||
#define IDX_EXTRACT_ELIM_DUP 3430
|
||||
#define IDX_EXTRACT_NT_SECUR 3431
|
||||
// #define IDX_EXTRACT_ALT_STREAMS 3432
|
||||
// #define IDX_EXTRACT_ALT_STREAMS 3432
|
||||
|
||||
#define IDX_PASSWORD_SHOW 3803
|
||||
#define IDG_PASSWORD 3807
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ using namespace NWindows;
|
||||
using namespace NFile;
|
||||
using namespace NDir;
|
||||
|
||||
extern bool g_bProcessError;
|
||||
|
||||
static const wchar_t *kIncorrectOutDir = L"Incorrect output directory path";
|
||||
|
||||
#ifndef _SFX
|
||||
@@ -160,7 +162,11 @@ HRESULT ExtractGUI(
|
||||
CExtractCallbackImp *extractCallback,
|
||||
HWND hwndParent)
|
||||
{
|
||||
bool openOutputFolder = false;
|
||||
bool deleteSourceFile = false;
|
||||
|
||||
messageWasDisplayed = false;
|
||||
g_bProcessError = false;
|
||||
|
||||
CThreadExtracting extracter;
|
||||
extracter.codecs = codecs;
|
||||
@@ -213,6 +219,9 @@ HRESULT ExtractGUI(
|
||||
options.PathMode = dialog.PathMode;
|
||||
options.ElimDup = dialog.ElimDup;
|
||||
|
||||
openOutputFolder = dialog.m_bOpenOutputFolder;
|
||||
deleteSourceFile = dialog.m_bDeleteSourceFile;
|
||||
|
||||
#ifndef _SFX
|
||||
// options.NtOptions.AltStreams = dialog.AltStreams;
|
||||
options.NtOptions.NtSecurity = dialog.NtSecurity;
|
||||
@@ -229,7 +238,7 @@ HRESULT ExtractGUI(
|
||||
NName::NormalizeDirPathPrefix(options.OutputDir);
|
||||
|
||||
/*
|
||||
if (!CreateComplexDirectory(options.OutputDir))
|
||||
if(!CreateComplexDirectory(options.OutputDir))
|
||||
{
|
||||
UString s = GetUnicodeString(NError::MyFormatMessage(GetLastError()));
|
||||
UString s2 = MyFormatNew(IDS_CANNOT_CREATE_FOLDER,
|
||||
@@ -268,5 +277,34 @@ HRESULT ExtractGUI(
|
||||
RINOK(extracter.Create(title, hwndParent));
|
||||
messageWasDisplayed = extracter.ThreadFinishedOK &
|
||||
extracter.ProgressDialog.MessagesDisplayed;
|
||||
|
||||
if (extracter.ThreadFinishedOK && !g_bProcessError)
|
||||
{
|
||||
if (openOutputFolder)
|
||||
{
|
||||
StartApplication(options.OutputDir, options.OutputDir);
|
||||
}
|
||||
if (deleteSourceFile)
|
||||
{
|
||||
DWORD dwAttr;
|
||||
UString strFilePath;
|
||||
for (unsigned i = 0; i < archivePathsFull.Size(); i++)
|
||||
{
|
||||
strFilePath = archivePathsFull[i];
|
||||
dwAttr = GetFileAttributesW(strFilePath);
|
||||
|
||||
if ((dwAttr != INVALID_FILE_ATTRIBUTES)
|
||||
&& (dwAttr & FILE_ATTRIBUTE_ARCHIVE))
|
||||
{
|
||||
if (dwAttr & FILE_ATTRIBUTE_READONLY)
|
||||
{
|
||||
dwAttr &= (~FILE_ATTRIBUTE_READONLY);
|
||||
SetFileAttributesW(strFilePath, dwAttr);
|
||||
}
|
||||
::DeleteFileW(strFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return extracter.Result;
|
||||
}
|
||||
|
||||
38
CPP/7zip/UI/GUI/GUI.sln
Normal file
38
CPP/7zip/UI/GUI/GUI.sln
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GUI", "GUI.vcproj", "{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugU|Win32 = DebugU|Win32
|
||||
DebugU|x64 = DebugU|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
ReleaseU|Win32 = ReleaseU|Win32
|
||||
ReleaseU|x64 = ReleaseU|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Debug|x64.Build.0 = Debug|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.DebugU|Win32.ActiveCfg = DebugU|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.DebugU|Win32.Build.0 = DebugU|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.DebugU|x64.ActiveCfg = DebugU|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.DebugU|x64.Build.0 = DebugU|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Release|Win32.Build.0 = Release|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Release|x64.ActiveCfg = Release|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.Release|x64.Build.0 = Release|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.ReleaseU|Win32.ActiveCfg = ReleaseU|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.ReleaseU|Win32.Build.0 = ReleaseU|Win32
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.ReleaseU|x64.ActiveCfg = ReleaseU|x64
|
||||
{D4BC12CF-49F2-474D-BAF6-EAC069DB7D6C}.ReleaseU|x64.Build.0 = ReleaseU|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
8401
CPP/7zip/UI/GUI/GUI.vcproj
Normal file
8401
CPP/7zip/UI/GUI/GUI.vcproj
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,9 +3,9 @@
|
||||
#ifndef __STDAFX_H
|
||||
#define __STDAFX_H
|
||||
|
||||
// #define _WIN32_WINNT 0x0400
|
||||
#define _WIN32_WINNT 0x0500
|
||||
#define WINVER _WIN32_WINNT
|
||||
//// #define _WIN32_WINNT 0x0400
|
||||
//#define _WIN32_WINNT 0x0500
|
||||
//#define WINVER _WIN32_WINNT
|
||||
|
||||
#include "../../../Common/Common.h"
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@ MY_VERSION_INFO(MY_VFT_APP, "7-Zip GUI", "7zg", "7zg.exe")
|
||||
|
||||
IDI_ICON ICON "FM.ico"
|
||||
|
||||
#ifndef UNDER_CE
|
||||
1 24 MOVEABLE PURE "7zG.exe.manifest"
|
||||
#endif
|
||||
//#ifndef UNDER_CE
|
||||
//1 24 MOVEABLE PURE "7zG.exe.manifest"
|
||||
//#endif
|
||||
|
||||
#include "../FileManager/PropertyName.rc"
|
||||
#include "../FileManager/OverwriteDialog.rc"
|
||||
|
||||
Reference in New Issue
Block a user