2005-01-10 19:17:43 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/**
|
|
|
|
* \file package.h
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Angus Leeming
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*
|
|
|
|
* A store of the paths to the various different directoies used
|
|
|
|
* by LyX. These paths differ markedly from one OS to another,
|
|
|
|
* following the local Windows, MacOS X or Posix conventions.
|
|
|
|
*/
|
|
|
|
#ifndef LYX_PACHAGE_H
|
|
|
|
#define LYX_PACHAGE_H
|
|
|
|
|
2007-04-06 13:09:54 +00:00
|
|
|
#include "support/filename.h"
|
|
|
|
|
2005-01-10 19:17:43 +00:00
|
|
|
#include <string>
|
|
|
|
|
|
|
|
namespace lyx {
|
|
|
|
namespace support {
|
|
|
|
|
|
|
|
class Package;
|
|
|
|
|
2005-01-31 19:57:03 +00:00
|
|
|
/** When run in-place <build-dir>/src/lyx is one level up from
|
|
|
|
* the <build-dir> whilst <build-dir>/src/tex2lyx/tex2lyx is
|
|
|
|
* two levels up.
|
|
|
|
*/
|
|
|
|
enum exe_build_dir_to_top_build_dir {
|
|
|
|
top_build_dir_is_one_level_up,
|
|
|
|
top_build_dir_is_two_levels_up
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2005-01-10 19:17:43 +00:00
|
|
|
/** Initialise package() with the command line data.
|
|
|
|
* This data is exactly as it was passed in the argv[] array.
|
|
|
|
*
|
|
|
|
* @param command_line_arg0 argv[0], the name of the LyX executable
|
|
|
|
* as passed on the command line.
|
|
|
|
*
|
|
|
|
* @param command_line_system_support_dir, the LyX system dir,
|
|
|
|
* as specified on the command line with "-sysdir <path to dir>".
|
|
|
|
*
|
|
|
|
* @param command_line_user_support_dir, the LyX user dir,
|
|
|
|
* as specified on the command line with "-userdir <path to dir>".
|
|
|
|
*/
|
|
|
|
void init_package(std::string const & command_line_arg0,
|
|
|
|
std::string const & command_line_system_support_dir,
|
2005-01-31 19:57:03 +00:00
|
|
|
std::string const & command_line_user_support_dir,
|
|
|
|
exe_build_dir_to_top_build_dir);
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** Accessor to the global data.
|
|
|
|
* Asserts that init_package() has been called first.
|
|
|
|
*/
|
|
|
|
Package const & package();
|
|
|
|
|
|
|
|
class Package {
|
|
|
|
public:
|
|
|
|
/// Default constructor does not lead to the paths being set.
|
|
|
|
Package();
|
|
|
|
|
|
|
|
/** Called by init_package, above.
|
|
|
|
* All paths will be initialized.
|
|
|
|
*/
|
|
|
|
Package(std::string const & command_line_arg0,
|
|
|
|
std::string const & command_line_system_support_dir,
|
2005-01-31 19:57:03 +00:00
|
|
|
std::string const & command_line_user_support_dir,
|
|
|
|
exe_build_dir_to_top_build_dir);
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The directory containing the LyX executable.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & binary_dir() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The top of the LyX source code tree.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
static FileName const & top_srcdir();
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The path to the system-level support files
|
|
|
|
* we're actually going to use.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & system_support() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The path to the autogenerated support files
|
|
|
|
* when running in-place.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & build_support() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The path to the user-level support files.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & user_support() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The user_support directory was set explicitly using either
|
|
|
|
* the -userdir command line switch or
|
2007-01-03 18:02:26 +00:00
|
|
|
* the LYX_USERDIR_15x environment variable.
|
2005-01-10 19:17:43 +00:00
|
|
|
*/
|
|
|
|
bool explicit_user_support() const;
|
|
|
|
|
|
|
|
/** The path to the locale directory.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & locale_dir() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** The default document directory.
|
|
|
|
* Can be reset by LyXRC.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName & document_dir() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
2006-12-17 21:52:40 +00:00
|
|
|
/** The path to the system temporary directory.
|
2005-01-10 19:17:43 +00:00
|
|
|
* (Eg /tmp on *nix.)
|
2006-12-17 21:52:40 +00:00
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & system_temp_dir() const;
|
2006-12-17 21:52:40 +00:00
|
|
|
|
|
|
|
/** The path to the temporary directory used by LyX.
|
|
|
|
* (Eg /tmp/lyx_tmpdir800nBI1z9 on *nix.)
|
2005-01-10 19:17:43 +00:00
|
|
|
* Can be reset by LyXRC.
|
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName & temp_dir() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
|
|
|
/** Used when setting the user_support directory.
|
|
|
|
* Used also when expanding "~/" or contracting to "~/". (filetools.C)
|
2007-04-26 04:41:58 +00:00
|
|
|
* Used in emergencyWrite (BufferList.cpp) as one possible location
|
2005-01-10 19:17:43 +00:00
|
|
|
* for the dump.
|
2006-04-22 11:58:02 +00:00
|
|
|
* This may be empty (e. g. when run under a CGI environment)
|
2005-01-10 19:17:43 +00:00
|
|
|
*/
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & home_dir() const;
|
2005-01-10 19:17:43 +00:00
|
|
|
|
2007-04-06 13:09:54 +00:00
|
|
|
/** Command to run the configure script.
|
|
|
|
* Caution: This is "ready-to-run", i.e. in the locale encoding, not
|
|
|
|
* utf8.
|
|
|
|
*/
|
2006-04-22 11:58:02 +00:00
|
|
|
std::string const & configure_command() const;
|
|
|
|
|
2005-01-10 19:17:43 +00:00
|
|
|
private:
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName binary_dir_;
|
|
|
|
FileName system_support_dir_;
|
|
|
|
FileName build_support_dir_;
|
|
|
|
FileName user_support_dir_;
|
|
|
|
FileName locale_dir_;
|
|
|
|
mutable FileName document_dir_;
|
|
|
|
mutable FileName temp_dir_;
|
|
|
|
FileName system_temp_dir_;
|
|
|
|
FileName home_dir_;
|
2006-04-22 11:58:02 +00:00
|
|
|
std::string configure_command_;
|
2005-01-10 19:17:43 +00:00
|
|
|
bool explicit_user_support_dir_;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
inline
|
|
|
|
Package::Package() {}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::binary_dir() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return binary_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::system_support() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return system_support_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::build_support() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return build_support_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::user_support() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return user_support_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
|
|
|
bool Package::explicit_user_support() const
|
|
|
|
{
|
|
|
|
return explicit_user_support_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::locale_dir() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return locale_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName & Package::document_dir() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return document_dir_;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName & Package::temp_dir() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return temp_dir_;
|
|
|
|
}
|
|
|
|
|
2006-12-17 21:52:40 +00:00
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::system_temp_dir() const
|
2006-12-17 21:52:40 +00:00
|
|
|
{
|
|
|
|
return system_temp_dir_;
|
|
|
|
}
|
|
|
|
|
2005-01-10 19:17:43 +00:00
|
|
|
inline
|
2007-04-06 13:09:54 +00:00
|
|
|
FileName const & Package::home_dir() const
|
2005-01-10 19:17:43 +00:00
|
|
|
{
|
|
|
|
return home_dir_;
|
|
|
|
}
|
|
|
|
|
2006-04-22 11:58:02 +00:00
|
|
|
inline
|
|
|
|
std::string const & Package::configure_command() const
|
|
|
|
{
|
|
|
|
return configure_command_;
|
|
|
|
}
|
|
|
|
|
2005-01-10 19:17:43 +00:00
|
|
|
} // namespace support
|
|
|
|
} // namespace lyx
|
|
|
|
|
|
|
|
#endif // LYX_PACHAGE_H
|