/*!
  @file FileException.cpp
  @brief implements FileException
  

  Created by Paul Licameli on 11/22/16.

*/


#include "FileException.h"
#include "FileNames.h"

#include "Prefs.h"

FileException::~FileException()
{
}

TranslatableString FileException::ErrorMessage() const
{
   TranslatableString format;
   switch (cause) {
      case Cause::Open:
         format = XO("Audacity failed to open a file in %s.");
         break;
      case Cause::Read:
         format = XO("Audacity failed to read from a file in %s.");
         break;
      case Cause::Write:
         return WriteFailureMessage(fileName);
      case Cause::Rename:
         format =
XO("Audacity successfully wrote a file in %s but failed to rename it as %s.");
      default:
         break;
   }

   return format.Format(
      FileNames::AbbreviatePath(fileName), renameTarget.GetFullName() );
}

wxString FileException::ErrorHelpUrl() const
{
   switch (cause) {
   case Cause::Open:
   case Cause::Read:
      return "Error:_Opening_or_reading_file";
      break;
   case Cause::Write:
   case Cause::Rename:
      return "Error:_Disk_full_or_not_writable";
   default:
      break;
   }

   return "";
}

TranslatableString
FileException::WriteFailureMessage(const wxFileName &fileName)
{
   return XO("Audacity failed to write to a file.\n"
     "Perhaps %s is not writable or the disk is full.\n"
     "For tips on freeing up space, click the help button."
   ).Format(FileNames::AbbreviatePath(fileName));
}
