2007-03-27 17:47:10 +00:00
|
|
|
/*
|
|
|
|
* CiderPress
|
|
|
|
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
|
|
|
|
* See the file LICENSE for distribution terms.
|
|
|
|
*/
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "NewFolderDialog.h"
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(NewFolderDialog, CDialog)
|
2014-11-03 16:26:53 -08:00
|
|
|
ON_WM_HELPINFO()
|
2007-03-27 17:47:10 +00:00
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
2014-11-21 13:18:20 -08:00
|
|
|
void NewFolderDialog::DoDataExchange(CDataExchange* pDX)
|
2007-03-27 17:47:10 +00:00
|
|
|
{
|
2014-11-21 13:18:20 -08:00
|
|
|
/*
|
|
|
|
* It is very important to keep '\\' out of the folder path, because it allows
|
|
|
|
* for all sorts of behavior (like "..\foo" or "D:\ack") that the caller
|
|
|
|
* might not be expecting. For example, if it's displaying a tree, it
|
|
|
|
* might assume that the folder goes under the currently selected node.
|
|
|
|
*
|
|
|
|
* Under WinNT, '/' is regarded as equivalent to '\', so we have to block
|
|
|
|
* that as well.
|
|
|
|
*
|
|
|
|
* Other characters (':') are also dangerous, but so long as we start with
|
|
|
|
* a valid path, Windows will prevent them from being used where they are
|
|
|
|
* inappropriate.
|
|
|
|
*/
|
|
|
|
|
2014-11-03 16:26:53 -08:00
|
|
|
if (!pDX->m_bSaveAndValidate)
|
|
|
|
DDX_Text(pDX, IDC_NEWFOLDER_CURDIR, fCurrentFolder);
|
2007-03-27 17:47:10 +00:00
|
|
|
|
2014-11-03 16:26:53 -08:00
|
|
|
DDX_Text(pDX, IDC_NEWFOLDER_NAME, fNewFolder);
|
2007-03-27 17:47:10 +00:00
|
|
|
|
2014-11-03 16:26:53 -08:00
|
|
|
/* validate the new folder by creating it */
|
|
|
|
if (pDX->m_bSaveAndValidate) {
|
|
|
|
if (fNewFolder.IsEmpty()) {
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 15:32:55 -08:00
|
|
|
MessageBox(L"No name entered, not creating new folder.",
|
|
|
|
L"CiderPress", MB_OK);
|
2014-11-03 16:26:53 -08:00
|
|
|
// fall out of DoModal with fFolderCreated==false
|
|
|
|
} else if (fNewFolder.Find('\\') >= 0 ||
|
|
|
|
fNewFolder.Find('/') >= 0)
|
|
|
|
{
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 15:32:55 -08:00
|
|
|
MessageBox(L"Folder names may not contain '/' or '\\'.",
|
|
|
|
L"CiderPress", MB_OK);
|
2014-11-03 16:26:53 -08:00
|
|
|
pDX->Fail();
|
|
|
|
} else {
|
|
|
|
fNewFullPath = fCurrentFolder;
|
|
|
|
if (fNewFullPath.Right(1) != "\\")
|
|
|
|
fNewFullPath += "\\";
|
|
|
|
fNewFullPath += fNewFolder;
|
2014-11-18 13:05:15 -08:00
|
|
|
LOGI("CREATING '%ls'", (LPCWSTR) fNewFullPath);
|
2014-11-17 21:13:13 -08:00
|
|
|
if (!::CreateDirectory(fNewFullPath, NULL)) {
|
2014-11-03 16:26:53 -08:00
|
|
|
/* show the sometimes-bizarre Windows error string */
|
|
|
|
CString msg, errStr, failed;
|
|
|
|
DWORD dwerr = ::GetLastError();
|
|
|
|
GetWin32ErrorString(dwerr, &errStr);
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 15:32:55 -08:00
|
|
|
msg.Format(L"Unable to create folder '%ls': %ls",
|
|
|
|
(LPCWSTR) fNewFolder, (LPCWSTR) errStr);
|
2014-12-16 11:04:31 -08:00
|
|
|
CheckedLoadString(&failed, IDS_FAILED);
|
2014-11-03 16:26:53 -08:00
|
|
|
MessageBox(msg, failed, MB_OK | MB_ICONERROR);
|
|
|
|
pDX->Fail();
|
|
|
|
} else {
|
|
|
|
/* success! */
|
|
|
|
fFolderCreated = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-03-27 17:47:10 +00:00
|
|
|
}
|