mirror of
https://github.com/fadden/ciderpress.git
synced 2024-11-27 08:49:20 +00:00
7b70767a1f
The file extraction dialog allows you to select file parts, so you can choose to exclude resource forks or just extract disk images. If you don't choose any parts, nothing will extract, and you get a confusingly generic message about nothing matching the criteria. This adds a specific error message for the case where no parts are selected.
86 lines
2.4 KiB
C++
86 lines
2.4 KiB
C++
/*
|
|
* CiderPress
|
|
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
|
|
* See the file LICENSE for distribution terms.
|
|
*/
|
|
/*
|
|
* Functions for the ChooseAddTarget dialog box.
|
|
*/
|
|
#include "StdAfx.h"
|
|
#include "ChooseAddTargetDialog.h"
|
|
#include "DiskFSTree.h"
|
|
|
|
using namespace DiskImgLib;
|
|
|
|
BEGIN_MESSAGE_MAP(ChooseAddTargetDialog, CDialog)
|
|
ON_COMMAND(IDHELP, OnHelp)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL ChooseAddTargetDialog::OnInitDialog(void)
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_ADD_TARGET_TREE);
|
|
|
|
ASSERT(fpDiskFS != NULL);
|
|
ASSERT(pTree != NULL);
|
|
|
|
fDiskFSTree.fIncludeSubdirs = true;
|
|
fDiskFSTree.fExpandDepth = -1;
|
|
if (!fDiskFSTree.BuildTree(fpDiskFS, pTree)) {
|
|
LOGI("Tree load failed!");
|
|
OnCancel();
|
|
}
|
|
|
|
int count = pTree->GetCount();
|
|
LOGI("ChooseAddTargetDialog tree has %d items", count);
|
|
if (count <= 1) {
|
|
LOGI(" Skipping out of target selection");
|
|
// adding to root volume of the sole DiskFS
|
|
fpChosenDiskFS = fpDiskFS;
|
|
ASSERT(fpChosenSubdir == NULL);
|
|
OnOK();
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void ChooseAddTargetDialog::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
/*
|
|
* Not much to do on the way in. On the way out, make sure that they've
|
|
* selected something acceptable, and copy the values to an easily
|
|
* accessible location.
|
|
*/
|
|
if (pDX->m_bSaveAndValidate) {
|
|
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_ADD_TARGET_TREE);
|
|
CString errMsg, appName;
|
|
CheckedLoadString(&appName, IDS_MB_APP_NAME);
|
|
|
|
/* shortcut for simple disk images */
|
|
if (pTree->GetCount() == 1 && fpChosenDiskFS != NULL)
|
|
return;
|
|
|
|
HTREEITEM selected;
|
|
selected = pTree->GetSelectedItem();
|
|
if (selected == NULL) {
|
|
errMsg = L"Please select a disk or subdirectory to add files to.";
|
|
MessageBox(errMsg, appName, MB_OK);
|
|
pDX->Fail();
|
|
return;
|
|
}
|
|
|
|
DiskFSTree::TargetData* pTargetData;
|
|
pTargetData = (DiskFSTree::TargetData*) pTree->GetItemData(selected);
|
|
if (!pTargetData->selectable) {
|
|
errMsg = L"You can't add files there.";
|
|
MessageBox(errMsg, appName, MB_OK);
|
|
pDX->Fail();
|
|
return;
|
|
}
|
|
|
|
fpChosenDiskFS = pTargetData->pDiskFS;
|
|
fpChosenSubdir = pTargetData->pFile;
|
|
}
|
|
}
|