--- /dev/null
+/**
+ * Author: Mark Larkin
+ *
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.
+ */
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+#include "OutputFile.h"
+#include "utils.h"
+#include "userparams.h"
+
+namespace clustalw
+{
+
+OutputFile::OutputFile()
+{
+
+}
+
+OutputFile::~OutputFile()
+{
+ // If it is open, close it and say that a file has been created!!!!!
+ if(file.get())
+ {
+ file->close();
+ utilityObject->info("%s file created: [%s]\n", typeOfFileMsg.c_str(),
+ name.c_str());
+ }
+}
+
+bool OutputFile::openFile(std::string* fileName, const std::string msg, const std::string* path,
+ const std::string ext, const std::string fileType)
+{
+ if (fileName->empty())
+ {
+ *fileName = getOutputFileName(msg, *path, ext);
+
+ if(fileName->empty())
+ {
+ return false;
+ }
+ }
+
+ file.reset(new std::ofstream(fileName->c_str(), std::ofstream::trunc));
+
+ if(!file->is_open())
+ {
+ utilityObject->error("Cannot open output file [%s]\n", fileName->c_str());
+ return false;
+ }
+ name = *fileName;
+ typeOfFileMsg = fileType;
+
+ return true;
+}
+
+bool OutputFile::isOpen()
+{
+ return file->is_open();
+}
+
+std::ofstream* OutputFile::getPtrToFile()
+{
+ return file.get();
+}
+
+std::string OutputFile::getOutputFileName(const std::string prompt, std::string path,
+ const std::string fileExtension)
+{
+ std::string temp;
+ std::string _fileName; // Will return this name.
+ std::string message;
+ _fileName = path + fileExtension;
+
+ if(_fileName.compare(userParameters->getSeqName()) == 0)
+ {
+ cerr << "WARNING: Output file name is the same as input file.\n";
+ if (userParameters->getMenuFlag())
+ {
+ message = "\n\nEnter new name to avoid overwriting [" + _fileName + "]: ";
+ utilityObject->getStr(message, temp);
+ if(temp != "")
+ {
+ _fileName = temp;
+ }
+ }
+ }
+ else if (userParameters->getMenuFlag())
+ {
+
+ message = prompt + " [" + _fileName + "]";
+ utilityObject->getStr(message, temp);
+ if(temp != "")
+ {
+ _fileName = temp;
+ }
+ }
+ return _fileName;
+
+}
+
+}
+
+