From 2d57debd4974d50bc8c2ff5c0080776a56610054 Mon Sep 17 00:00:00 2001 From: Amar Takhar Date: Mon, 24 May 2010 17:57:07 +0000 Subject: [PATCH] Commit the beginings of the Path class to hold the internal representation of paths, this is extremely rough since I have to wait until we can do charset conversion in libaegisub to handle windows paths before going any further. Originally committed to SVN as r4359. --- aegisub/libaegisub/common/path.cpp | 35 +++++++++++ aegisub/libaegisub/include/libaegisub/path.h | 56 +++++++++++++++++ aegisub/libaegisub/unix/path.cpp | 63 ++++++++++++++++++++ aegisub/src/libresrc/default_path.json | 27 +++++++++ 4 files changed, 181 insertions(+) create mode 100644 aegisub/libaegisub/common/path.cpp create mode 100644 aegisub/libaegisub/include/libaegisub/path.h create mode 100644 aegisub/libaegisub/unix/path.cpp create mode 100644 aegisub/src/libresrc/default_path.json diff --git a/aegisub/libaegisub/common/path.cpp b/aegisub/libaegisub/common/path.cpp new file mode 100644 index 000000000..3e7b19cd7 --- /dev/null +++ b/aegisub/libaegisub/common/path.cpp @@ -0,0 +1,35 @@ +// Copyright (c) 2010, Amar Takhar +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// $Id$ + +/// @file path.cpp +/// @brief Common paths. +/// @ingroup libaegisub + + +#include + +namespace agi { + +Path::Path(const std::string &file, const std::string& default_path): path_file(file), path_default(default_path) { + opt = new agi::Options(file, default_path); + opt->ConfigUser(); +} + +Path::~Path() { + opt->Flush(); +} + +} // namespace agi diff --git a/aegisub/libaegisub/include/libaegisub/path.h b/aegisub/libaegisub/include/libaegisub/path.h new file mode 100644 index 000000000..a22a4d981 --- /dev/null +++ b/aegisub/libaegisub/include/libaegisub/path.h @@ -0,0 +1,56 @@ +// Copyright (c) 2010, Amar Takhar +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// $Id$ + +/// @file path.h +/// @brief Common paths. +/// @ingroup libaegisub + +#ifndef AGI_PRE +#endif + +#include + +namespace agi { + +/// @class Path +// Internal representation of all paths in aegisub. +class Path { +public: + + /// Constructor + Path(const std::string &file, const std::string& default_path); + + /// Destructor + ~Path(); + +private: + /// Location of path config file. + const std::string path_file; + + /// Internal default config. + const std::string path_default; + + /// Options object. + Options *opt; + + const char *Data(); ///< Shared resources + const char *Doc(); ///< Documents + const char *User(); ///< User config directory + const char *Locale(); ///< Locale files + const char *Temp(); ///< Temporary storage +}; + +} // namespace agi diff --git a/aegisub/libaegisub/unix/path.cpp b/aegisub/libaegisub/unix/path.cpp new file mode 100644 index 000000000..4820340de --- /dev/null +++ b/aegisub/libaegisub/unix/path.cpp @@ -0,0 +1,63 @@ +// Copyright (c) 2010, Amar Takhar +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// $Id$ + +/// @file path.cpp +/// @brief Common paths. +/// @ingroup libaegisub + +#include "acconf.h" + +#include + +namespace agi { + +const char *Path::Data() { + std::string tmp; + tmp.assign(INSTALL_PREFIX); + tmp.append("-"); + tmp.append(AEGISUB_VERSION_DATA); + return tmp.c_str(); +} + +const char *Path::Doc() { + std::string tmp; + tmp.assign(INSTALL_PREFIX); + tmp.append("-"); + tmp.append(AEGISUB_VERSION_DATA); + return tmp.c_str(); +} + +const char *Path::User() { + std::string tmp; + tmp.assign("~/.aegisub-"); + tmp.append(AEGISUB_VERSION_DATA); + return tmp.c_str(); +} + +const char *Path::Locale() { + std::string tmp; + tmp.assign("~/.aegisub-"); + tmp.append(AEGISUB_VERSION_DATA); + return tmp.c_str(); +} + + +const char *Path::Temp() { + const char *tmp = "/tmp"; + return tmp; +} + +} // namespace agi diff --git a/aegisub/src/libresrc/default_path.json b/aegisub/src/libresrc/default_path.json new file mode 100644 index 000000000..b20bba6c5 --- /dev/null +++ b/aegisub/src/libresrc/default_path.json @@ -0,0 +1,27 @@ +{ + "Backup" : "^USER/backup", + "Autosave" : "^USER/autosave", + "Data" : "^DATA", + "User" : "^USER", + "Temp" : "^TEMP", + "Dictionary" : { + "Local" { + "Lang" : "^CONFIG/dictionary/lang", + "Thesarus" : "^CONFIG/dictionary/thesaurus", + "Personal" : "^CONFIG/dictionary/personal" + } + "Lang" : [], + "Thesaurus" : [] + }, + "Automation" { + "Autoload" : [], + "Include" : [] + } + "Crash" : "^CONFIG/crash", + "Font" { + "FontConfig" { + "Cache" : "^CONFIG/fontconfig_cache" + } + }, + "Log" : "^CONFIG/log" +}