mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 15:14:59 -06:00
117 lines
2.6 KiB
C++
Executable File
117 lines
2.6 KiB
C++
Executable File
// SplitDialog.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "Windows/FileName.h"
|
|
|
|
#ifdef LANG
|
|
#include "LangUtils.h"
|
|
#endif
|
|
|
|
#include "BrowseDialog.h"
|
|
#include "CopyDialogRes.h"
|
|
#include "SplitDialog.h"
|
|
#include "SplitUtils.h"
|
|
#include "resourceGui.h"
|
|
|
|
using namespace NWindows;
|
|
|
|
#ifdef LANG
|
|
static CIDLangPair kIDLangPairs[] =
|
|
{
|
|
{ IDC_STATIC_SPLIT_PATH, 0x03020501 },
|
|
{ IDC_STATIC_SPLIT_VOLUME, 0x02000D40 },
|
|
};
|
|
#endif
|
|
|
|
|
|
bool CSplitDialog::OnInit()
|
|
{
|
|
#ifdef LANG
|
|
LangSetWindowText(HWND(*this), 0x03020500);
|
|
LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));
|
|
#endif
|
|
_pathCombo.Attach(GetItem(IDC_COMBO_SPLIT_PATH));
|
|
_volumeCombo.Attach(GetItem(IDC_COMBO_SPLIT_VOLUME));
|
|
|
|
if (!FilePath.IsEmpty())
|
|
{
|
|
UString title;
|
|
GetText(title);
|
|
title += L' ';
|
|
title += FilePath;
|
|
SetText(title);
|
|
}
|
|
_pathCombo.SetText(Path);
|
|
AddVolumeItems(_volumeCombo);
|
|
_volumeCombo.SetCurSel(0);
|
|
NormalizeSize();
|
|
return CModalDialog::OnInit();
|
|
}
|
|
|
|
bool CSplitDialog::OnSize(WPARAM /* wParam */, int xSize, int ySize)
|
|
{
|
|
int mx, my;
|
|
GetMargins(8, mx, my);
|
|
int bx1, bx2, by;
|
|
GetItemSizes(IDCANCEL, bx1, by);
|
|
GetItemSizes(IDOK, bx2, by);
|
|
int yPos = ySize - my - by;
|
|
int xPos = xSize - mx - bx1;
|
|
|
|
InvalidateRect(NULL);
|
|
|
|
{
|
|
RECT rect;
|
|
GetClientRectOfItem(IDC_BUTTON_SPLIT_PATH, rect);
|
|
int bx = rect.right - rect.left;
|
|
MoveItem(IDC_BUTTON_SPLIT_PATH, xSize - mx - bx, rect.top, bx, rect.bottom - rect.top);
|
|
ChangeSubWindowSizeX(_pathCombo, xSize - mx - mx - bx - mx);
|
|
}
|
|
|
|
MoveItem(IDCANCEL, xPos, yPos, bx1, by);
|
|
MoveItem(IDOK, xPos - mx - bx2, yPos, bx2, by);
|
|
|
|
return false;
|
|
}
|
|
|
|
bool CSplitDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
|
|
{
|
|
switch(buttonID)
|
|
{
|
|
case IDC_BUTTON_SPLIT_PATH:
|
|
OnButtonSetPath();
|
|
return true;
|
|
}
|
|
return CModalDialog::OnButtonClicked(buttonID, buttonHWND);
|
|
}
|
|
|
|
void CSplitDialog::OnButtonSetPath()
|
|
{
|
|
UString currentPath;
|
|
_pathCombo.GetText(currentPath);
|
|
// UString title = L"Specify a location for output folder";
|
|
UString title = LangStringSpec(IDS_SET_FOLDER, 0x03020209);
|
|
|
|
UString resultPath;
|
|
if (!MyBrowseForFolder(HWND(*this), title, currentPath, resultPath))
|
|
return;
|
|
NFile::NName::NormalizeDirPathPrefix(resultPath);
|
|
_pathCombo.SetCurSel(-1);
|
|
_pathCombo.SetText(resultPath);
|
|
}
|
|
|
|
void CSplitDialog::OnOK()
|
|
{
|
|
_pathCombo.GetText(Path);
|
|
UString volumeString;
|
|
_volumeCombo.GetText(volumeString);
|
|
volumeString.Trim();
|
|
if (!ParseVolumeSizes(volumeString, VolumeSizes) || VolumeSizes.Size() == 0)
|
|
{
|
|
::MessageBoxW(*this, LangString(IDS_INCORRECT_VOLUME_SIZE, 0x02000D41), L"7-Zip", 0);
|
|
return;
|
|
}
|
|
CModalDialog::OnOK();
|
|
}
|