Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
filemanagerforqt.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 //=============================================================================
21 // Qt file manager implemenation: Open and close files
22 //=============================================================================
23 
24 #include "filemanagerforqt.h"
25 
26 #include <QStandardPaths>
27 #include <QDir>
28 #include <QFile>
29 #include <QTextStream>
30 
31 #include "core/system/log.h"
33 
34 //-----------------------------------------------------------------------------
35 // Constructor
36 //-----------------------------------------------------------------------------
37 
44 
46 {
47  // Create writable directories if they do not yet exist
48  if (not QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)))
49  LogW("Could not create or find a writeable location for the cache");
50  if (not QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)))
51  LogW("Could not create or find a writeable location for the generic cache");
52  if (not QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)))
53  LogW("Could not create or find a writeable location for the documentation");
54 }
55 
56 
57 //-----------------------------------------------------------------------------
58 // Return path of the log file
59 //-----------------------------------------------------------------------------
60 
69 
70 std::string FileManagerForQt::getLogFilePath(const std::string &logname) const
71 {
72  QDir directory(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
73  return directory.absoluteFilePath(QString::fromStdString(logname)).toStdString();
74 }
75 
76 
77 //-----------------------------------------------------------------------------
78 // Read the content of the XML file of an algorithm with the given ID
79 //-----------------------------------------------------------------------------
80 
86 
87 std::string FileManagerForQt::getAlgorithmInformationFileContent (const std::string &algorithmId) const
88 {
89  QFile file(QString::fromStdString(":/algorithms/" + algorithmId + "/" + algorithmId + ".xml"));
90 
91  // If the file does not exist throw an exception:
92  if (file.exists() == false)
93  EPT_EXCEPT(EptException::ERR_CANNOT_READ_FROM_FILE, "File '" + algorithmId + "' not found.");
94 
95  // If the existing file cannot be opened for reading throw an exception:
96  if (not file.open(QFile::ReadOnly | QFile::Text))
97  EPT_EXCEPT(EptException::ERR_CANNOT_READ_FROM_FILE, "File '" + algorithmId + "' could not be opened.");
98 
99  QTextStream stream(&file);
100  return stream.readAll().toStdString();
101 }
virtual std::string getLogFilePath(const std::string &logname) const overridefinal
Returns the path of the log file with the given logname.
#define LogW(...)
Definition: log.h:56
FileManagerForQt()
Constructor, creating directories.
#define EPT_EXCEPT(num, desc)
Definition: eptexception.h:119
virtual std::string getAlgorithmInformationFileContent(const std::string &algorithmId) const overridefinal
Read the content of the XML file of an algorithm with the given ID.