From 7faf6c20343031ed0174d3f987e91a6eb4f3242c Mon Sep 17 00:00:00 2001 From: tomch Date: Tue, 5 Jan 2010 22:25:33 +0000 Subject: [PATCH] Merge from Tom: . Don't create HDV file (when it doesn't exist). . Bug fix when iterating through image types. --- source/DiskImageHelper.cpp | 11 +++++------ source/Harddisk.cpp | 5 ++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/source/DiskImageHelper.cpp b/source/DiskImageHelper.cpp index ffe83093..ae1c10bc 100644 --- a/source/DiskImageHelper.cpp +++ b/source/DiskImageHelper.cpp @@ -788,9 +788,6 @@ public: return WriteBlock(pImageInfo, nBlock, pBlockBuffer); } - virtual bool AllowCreate(void) { return true; } - virtual UINT GetImageSizeForCreate(void) { return 0; } // Start with a zero size buffer - virtual eImageType GetType(void) { return eImageHDV; } virtual char* GetCreateExtensions(void) { return ".hdv"; } virtual char* GetRejectExtensions(void) { return ".do;.iie;.prg"; } @@ -1503,7 +1500,7 @@ CImageBase* CDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHAR* p CImageBase* CDiskImageHelper::GetImageForCreation(const TCHAR* pszExt, DWORD* pCreateImageSize) { // WE CREATE ONLY DOS ORDER (DO) OR 6656-NIBBLE (NIB) FORMAT FILES - for (UINT uLoop = 0; uLoop <= GetNumImages(); uLoop++) + for (UINT uLoop = 0; uLoop < GetNumImages(); uLoop++) { if (!GetImage(uLoop)->AllowCreate()) continue; @@ -1579,8 +1576,10 @@ CImageBase* CHardDiskImageHelper::Detect(LPBYTE pImage, DWORD dwSize, const TCHA CImageBase* CHardDiskImageHelper::GetImageForCreation(const TCHAR* pszExt, DWORD* pCreateImageSize) { - // Only HDV file supported - for (UINT uLoop = 0; uLoop <= GetNumImages(); uLoop++) + // NB. Not supported for HardDisks + // - Would need to create a default 16-block file like CiderPress + + for (UINT uLoop = 0; uLoop < GetNumImages(); uLoop++) { if (!GetImage(uLoop)->AllowCreate()) continue; diff --git a/source/Harddisk.cpp b/source/Harddisk.cpp index 6a7b7608..61d4d6fc 100644 --- a/source/Harddisk.cpp +++ b/source/Harddisk.cpp @@ -223,7 +223,7 @@ static void NotifyInvalidImage(TCHAR* pszImageFilename) static BOOL HD_Load_Image(const int iDrive, LPCSTR pszImageFilename) { - const bool bCreateIfNecessary = false; // NB. File Select dialog uses OFN_CREATEPROMPT + const bool bCreateIfNecessary = false; // NB. Don't allow creation of HDV files string strFilenameInZip; // TODO: Use this ImageError_e Error = ImageOpen(pszImageFilename, iDrive, bCreateIfNecessary, strFilenameInZip); @@ -370,9 +370,8 @@ void HD_Select(const int iDrive) ofn.lpstrFile = filename; ofn.nMaxFile = MAX_PATH; ofn.lpstrInitialDir = directory; - ofn.Flags = OFN_CREATEPROMPT; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; // Don't allow creation & hide the read-only checkbox ofn.lpstrTitle = title; - ofn.lpTemplateName = TEXT("INSERT_DIALOG"); if (GetOpenFileName(&ofn)) {