diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/highlight/src/core/datadir.cpp |
Initial commit
Diffstat (limited to 'support/highlight/src/core/datadir.cpp')
-rw-r--r-- | support/highlight/src/core/datadir.cpp | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/support/highlight/src/core/datadir.cpp b/support/highlight/src/core/datadir.cpp new file mode 100644 index 0000000000..faa929301a --- /dev/null +++ b/support/highlight/src/core/datadir.cpp @@ -0,0 +1,181 @@ +/*************************************************************************** + dataDir.cpp - description + ------------------- + begin : Sam March 1 2003 + copyright : (C) 2003 by André Simon + email : andre.simon1@gmx.de + ***************************************************************************/ + + +/* +This file is part of Highlight. + +Highlight is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Highlight is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Highlight. If not, see <http://www.gnu.org/licenses/>. +*/ + + +#include <string> +#include <fstream> +#include <vector> +#include "platform_fs.h" + +#include "datadir.h" + +using namespace std; + +string DataDir::LSB_DATA_DIR="/usr/share/highlight/"; +string DataDir::LSB_CFG_DIR="/etc/highlight/"; +string DataDir::LSB_DOC_DIR="/usr/share/doc/highlight/"; + + +bool DataDir::searchDataDir ( const string &userDefinedDir ) +{ + +#ifndef _WIN32 + bool found = false; + + vector <string> possibleDirs; + if ( !userDefinedDir.empty() ) possibleDirs.push_back ( userDefinedDir ); +// if (!additionalDataDir.empty()) possibleDirs.push_back(additionalDataDir); +#ifdef HL_DATA_DIR + possibleDirs.push_back ( HL_DATA_DIR ); +#endif + possibleDirs.push_back ( LSB_DATA_DIR ); + + for ( unsigned int i=0;i<possibleDirs.size();i++ ) + { + if ( fileExists ( possibleDirs[i] ) ) + { + dataDir=possibleDirs[i]; + found = true; break; + } + } + return found; +#else + dataDir=userDefinedDir; + return true; +#endif +} + +DataDir::DataDir() +{ +} + +void DataDir::setAdditionalDataDir ( const string& dir ) +{ + additionalDataDir=dir; +} +void DataDir::setAdditionalConfDir ( const string& dir ) +{ + additionalConfDir=dir; +} + +const string & DataDir::getAdditionalDataDir() +{ + return additionalDataDir; +} + +const string & DataDir::getAdditionalConfDir() +{ + return additionalConfDir; +} + +const string &DataDir::getDir() +{ + return dataDir; +} + +const string DataDir::getLangPath ( const string & file, bool forceDefault ) +{ + if ( !forceDefault && !additionalDataDir.empty() ) + { + string path=getAdditionalLangDefDir() +file; + if ( fileExists ( path ) ) + { + return path; + } + } + return dataDir+"langDefs"+Platform::pathSeparator+file; +} + +const string DataDir::getThemePath ( const string & file, bool forceDefault ) +{ + if ( !forceDefault && !additionalDataDir.empty() ) + { + string path=getAdditionalThemeDir() +file; + if ( fileExists ( path ) ) + { + return path; + } + } + return dataDir+"themes"+Platform::pathSeparator+file; +} + +const string DataDir::getConfDir ( bool forceDefault ) +{ + if ( !forceDefault && !additionalConfDir.empty() ) + { + return additionalConfDir; + } +#ifndef _WIN32 +#ifdef HL_CONFIG_DIR + return HL_CONFIG_DIR; +#else + return LSB_CFG_DIR; +#endif +#else + return getDir(); +#endif +} + +const string DataDir::getAdditionalLangDefDir() +{ + return additionalDataDir+"langDefs"+Platform::pathSeparator; +} + +const string DataDir::getAdditionalThemeDir() +{ + return additionalDataDir+"themes"+Platform::pathSeparator; +} + +const string DataDir::getI18nDir() +{ + return dataDir+"gui_files"+Platform::pathSeparator+"i18n"+Platform::pathSeparator; +} + +const string DataDir::getExtDir() +{ + return dataDir+"gui_files"+Platform::pathSeparator+"ext"+Platform::pathSeparator; +} + +const string DataDir::getDocDir() +{ +#ifndef _WIN32 +#ifdef HL_DOC_DIR + return HL_CONFIG_DIR; +#else + return LSB_DOC_DIR; +#endif +#else + return getDir(); +#endif +} + +bool DataDir::fileExists ( const string&f ) +{ + ifstream file ( f.c_str() ); + bool exists=!file.fail(); + file.close(); + return exists; +} |