4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Angus Leeming
9 * Full author contact details are available in file CREDITS.
11 * A store of the paths to the various different directoies used
12 * by LyX. These paths differ markedly from one OS to another,
13 * following the local Windows, MacOS X or Posix conventions.
25 /** When run in-place <build-dir>/src/lyx is one level up from
26 * the <build-dir> whilst <build-dir>/src/tex2lyx/tex2lyx is
29 enum exe_build_dir_to_top_build_dir {
30 top_build_dir_is_one_level_up,
31 top_build_dir_is_two_levels_up
35 /** Initialise package() with the command line data.
36 * This data is exactly as it was passed in the argv[] array.
38 * @param command_line_arg0 argv[0], the name of the LyX executable
39 * as passed on the command line.
41 * @param command_line_system_support_dir, the LyX system dir,
42 * as specified on the command line with "-sysdir <path to dir>".
44 * @param command_line_user_support_dir, the LyX user dir,
45 * as specified on the command line with "-userdir <path to dir>".
47 void init_package(std::string const & command_line_arg0,
48 std::string const & command_line_system_support_dir,
49 std::string const & command_line_user_support_dir,
50 exe_build_dir_to_top_build_dir);
52 /** Accessor to the global data.
53 * Asserts that init_package() has been called first.
55 Package const & package();
59 /// Default constructor does not lead to the paths being set.
62 /** Called by init_package, above.
63 * All paths will be initialized.
65 Package(std::string const & command_line_arg0,
66 std::string const & command_line_system_support_dir,
67 std::string const & command_line_user_support_dir,
68 exe_build_dir_to_top_build_dir);
70 /** The directory containing the LyX executable.
72 std::string const & binary_dir() const;
74 /** The top of the LyX source code tree.
75 * Used by the GTK frontend when searching for .glade files.
77 std::string const & top_srcdir() const;
79 /** The path to the system-level support files
80 * we're actually going to use.
82 std::string const & system_support() const;
84 /** The path to the autogenerated support files
85 * when running in-place.
87 std::string const & build_support() const;
89 /** The path to the user-level support files.
91 std::string const & user_support() const;
93 /** The user_support directory was set explicitly using either
94 * the -userdir command line switch or
95 * the LYX_USERDIR_14x environment variable.
97 bool explicit_user_support() const;
99 /** The path to the locale directory.
101 std::string const & locale_dir() const;
103 /** The default document directory.
104 * Can be reset by LyXRC.
106 std::string & document_dir() const;
108 /** The path to the temporary directory.
110 * Can be reset by LyXRC.
112 std::string & temp_dir() const;
114 /** Used when setting the user_support directory.
115 * Used also when expanding "~/" or contracting to "~/". (filetools.C)
116 * Used in emergencyWrite (bufferlist.C) as one possible location
118 * This may be empty (e. g. when run under a CGI environment)
120 std::string const & home_dir() const;
122 /// Command to run the configure script
123 std::string const & configure_command() const;
126 std::string binary_dir_;
127 std::string system_support_dir_;
128 std::string build_support_dir_;
129 std::string user_support_dir_;
130 std::string locale_dir_;
131 mutable std::string document_dir_;
132 mutable std::string temp_dir_;
133 std::string home_dir_;
134 std::string configure_command_;
135 bool explicit_user_support_dir_;
140 Package::Package() {}
143 std::string const & Package::binary_dir() const
149 std::string const & Package::system_support() const
151 return system_support_dir_;
155 std::string const & Package::build_support() const
157 return build_support_dir_;
161 std::string const & Package::user_support() const
163 return user_support_dir_;
167 bool Package::explicit_user_support() const
169 return explicit_user_support_dir_;
173 std::string const & Package::locale_dir() const
179 std::string & Package::document_dir() const
181 return document_dir_;
185 std::string & Package::temp_dir() const
191 std::string const & Package::home_dir() const
197 std::string const & Package::configure_command() const
199 return configure_command_;
202 } // namespace support
205 #endif // LYX_PACHAGE_H