Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / general / OutputFile.cpp
diff --git a/website/archive/binaries/mac/src/clustalw/src/general/OutputFile.cpp b/website/archive/binaries/mac/src/clustalw/src/general/OutputFile.cpp
new file mode 100644 (file)
index 0000000..55b505b
--- /dev/null
@@ -0,0 +1,105 @@
+/**
+ * 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;
+
+}
+
+}
+
+