ciderpress/app/RecompressOptionsDialog.cpp

96 lines
2.6 KiB
C++
Raw Normal View History

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.
*/
/*
* Support for RecompressOptionsDialog.
*/
#include "stdafx.h"
#include "RecompressOptionsDialog.h"
#include "NufxArchive.h"
#include "HelpTopics.h"
//BEGIN_MESSAGE_MAP(UseSelectionDialog, CDialog)
// ON_WM_HELPINFO()
// //ON_COMMAND(IDHELP, OnHelp)
2007-03-27 17:47:10 +00:00
//END_MESSAGE_MAP()
/*
* Set up our modified version of the "use selection" dialog.
*/
BOOL
RecompressOptionsDialog::OnInitDialog(void)
{
fCompressionIdx = LoadComboBox((NuThreadFormat) fCompressionType);
2007-03-27 17:47:10 +00:00
return UseSelectionDialog::OnInitDialog();
2007-03-27 17:47:10 +00:00
}
/*
* Load strings into the combo box. Only load formats supported by the
* NufxLib DLL.
*
* Returns the combo box index for the format matching "fmt".
*/
int
RecompressOptionsDialog::LoadComboBox(NuThreadFormat fmt)
{
static const struct {
NuThreadFormat format;
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 23:32:55 +00:00
const WCHAR* name;
} kComboStrings[] = {
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 23:32:55 +00:00
{ kNuThreadFormatUncompressed, L"No compression" },
{ kNuThreadFormatHuffmanSQ, L"Squeeze" },
{ kNuThreadFormatLZW1, L"Dynamic LZW/1" },
{ kNuThreadFormatLZW2, L"Dynamic LZW/2" },
{ kNuThreadFormatLZC12, L"12-bit LZC" },
{ kNuThreadFormatLZC16, L"16-bit LZC" },
{ kNuThreadFormatDeflate, L"Deflate" },
{ kNuThreadFormatBzip2, L"Bzip2" },
};
2007-03-27 17:47:10 +00:00
CComboBox* pCombo;
int idx, comboIdx;
int retIdx = 0;
2007-03-27 17:47:10 +00:00
pCombo = (CComboBox*) GetDlgItem(IDC_RECOMP_COMP);
ASSERT(pCombo != nil);
2007-03-27 17:47:10 +00:00
for (idx = comboIdx = 0; idx < NELEM(kComboStrings); idx++) {
if (NufxArchive::IsCompressionSupported(kComboStrings[idx].format)) {
pCombo->AddString(kComboStrings[idx].name);
pCombo->SetItemData(comboIdx, kComboStrings[idx].format);
2007-03-27 17:47:10 +00:00
if (kComboStrings[idx].format == fmt)
retIdx = comboIdx;
2007-03-27 17:47:10 +00:00
comboIdx++;
}
}
2007-03-27 17:47:10 +00:00
return retIdx;
2007-03-27 17:47:10 +00:00
}
/*
* Convert values.
*/
void
RecompressOptionsDialog::DoDataExchange(CDataExchange* pDX)
{
DDX_CBIndex(pDX, IDC_RECOMP_COMP, fCompressionIdx);
2007-03-27 17:47:10 +00:00
if (pDX->m_bSaveAndValidate) {
CComboBox* pCombo;
pCombo = (CComboBox*) GetDlgItem(IDC_RECOMP_COMP);
ASSERT(pCombo != nil);
2007-03-27 17:47:10 +00:00
fCompressionType = pCombo->GetItemData(fCompressionIdx);
WMSG2("DDX got type=%d from combo index %d\n",
fCompressionType, fCompressionIdx);
}
2007-03-27 17:47:10 +00:00
UseSelectionDialog::DoDataExchange(pDX);
2007-03-27 17:47:10 +00:00
}