summaryrefslogtreecommitdiff
path: root/datamanager.cpp
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2015-08-09 05:13:19 -0500
committerJohn Fultz <jfultz@wolfram.com>2015-08-09 05:13:19 -0500
commitdc92d571f4f97f6420fdf1a94cc41c1d2808d71b (patch)
tree07bb60efdf4522296707285d22790251d74b3458 /datamanager.cpp
parentb8024ae268e49c17c40da105b9e22aaa41fcffeb (diff)
Progress on edit lexicon dialog.
* Files can now be loaded from user directory as well as app directory. * Edit lexicon dialog has been added, and pretty much all of the GUI elements framed out. Not actually implemented, yet. * Embiggen the board configuration dialog. * Some bits of code refactoring.
Diffstat (limited to 'datamanager.cpp')
-rw-r--r--datamanager.cpp42
1 files changed, 23 insertions, 19 deletions
diff --git a/datamanager.cpp b/datamanager.cpp
index e188668..eb65afd 100644
--- a/datamanager.cpp
+++ b/datamanager.cpp
@@ -41,7 +41,8 @@ DataManager::DataManager()
: m_evaluator(0), m_parameters(0), m_alphabetParameters(0), m_boardParameters(0), m_lexiconParameters(0), m_strategyParameters(0)
{
m_self = this;
- setDataDirectory(".");
+ setAppDataDirectory(".");
+ setUserDataDirectory(".");
seedRandomNumbers((int)time(NULL));
m_alphabetParameters = new EnglishAlphabetParameters;
@@ -122,6 +123,7 @@ void DataManager::cleanupComputerPlayers()
bool DataManager::fileExists(const string &filename)
{
+ // fixme: convert to wchar
struct stat buf;
int i = stat(filename.c_str(), &buf);
if (i == 0)
@@ -130,36 +132,38 @@ bool DataManager::fileExists(const string &filename)
return false;
}
-string DataManager::findDataFile(const string &subDirectory, const string &lexicon, string file)
+string DataManager::findDataFile(const string &subDirectory, const string &lexicon, const string &file)
{
- string firstTry = makeDataFilename(subDirectory, lexicon, file);
- if (fileExists(firstTry))
- return firstTry;
-
- string secondTry = makeDataFilename(subDirectory, m_backupLexicon, file);
- if (fileExists(secondTry))
- return secondTry;
+ string fname = makeDataFilename(subDirectory, lexicon, file, true);
+ if (!fileExists(fname))
+ fname = makeDataFilename(subDirectory, lexicon, file, false);
+ if (!fileExists(fname))
+ fname = makeDataFilename(subDirectory, m_backupLexicon, file, false);
+ if (!fileExists(fname))
+ fname = string();
- return string();
+ return fname;
}
-string DataManager::findDataFile(const string &subDirectory, string file)
+string DataManager::findDataFile(const string &subDirectory, const string &file)
{
- string firstTry = makeDataFilename(subDirectory, file);
- if (fileExists(firstTry))
- return firstTry;
+ string fname = makeDataFilename(subDirectory, file, true);
+ if (!fileExists(fname))
+ fname = makeDataFilename(subDirectory, file, false);
+ if (!fileExists(fname))
+ fname = string();
- return string();
+ return fname;
}
-string DataManager::makeDataFilename(const string &subDirectory, const string &lexicon, string file)
+string DataManager::makeDataFilename(const string &subDirectory, const string &lexicon, const string &file, bool user)
{
- return m_dataDirectory + "/" + subDirectory + "/" + lexicon + "/" + file;
+ return (user ? m_userDataDirectory : m_appDataDirectory) + "/" + subDirectory + "/" + lexicon + "/" + file;
}
-string DataManager::makeDataFilename(const string &subDirectory, string file)
+string DataManager::makeDataFilename(const string &subDirectory, const string &file, bool user)
{
- return m_dataDirectory + "/" + subDirectory + "/" + file;
+ return (user ? m_userDataDirectory : m_appDataDirectory) + "/" + subDirectory + "/" + file;
}
void DataManager::seedRandomNumbers(unsigned int seed)