#include "lyxsocket.h"
#include "lyxtextclasslist.h"
#include "MenuBackend.h"
+#include "messages.h"
#include "mover.h"
#include "ToolbarBackend.h"
#include "support/environment.h"
#include "support/filetools.h"
-#include "support/fontutils.h"
#include "support/lyxlib.h"
#include "support/convert.h"
#include "support/os.h"
#include <iostream>
#include <csignal>
+#include <map>
+#include <string>
#include <vector>
namespace fs = boost::filesystem;
using std::endl;
+using std::for_each;
+using std::map;
+using std::make_pair;
using std::string;
using std::vector;
-using std::for_each;
#ifndef CXX_GLOBAL_CSTD
using std::exit;
{
Singletons(): iconv(ucs4_codeset, "UTF-8")
{
+ // Set the default User Interface language as soon as possible.
+ // The language used will be derived from the environment
+ // variables.
+ messages_["GUI"] = Messages();
}
/// our function handler
LyXFunc lyxfunc_;
/// Files to load at start.
vector<FileName> files_to_load_;
+
+ /// The messages translators.
+ map<string, Messages> messages_;
+
+ /// The file converters.
+ Converters converters_;
+
+ // The system converters copy after reading lyxrc.defaults.
+ Converters system_converters_;
};
///
}
+Converters & LyX::converters()
+{
+ return pimpl_->converters_;
+}
+
+
+Converters & LyX::systemConverters()
+{
+ return pimpl_->system_converters_;
+}
+
+
IconvProcessor & LyX::iconvProcessor()
{
return pimpl_->iconv;
}
+Messages & LyX::getMessages(std::string const & language)
+{
+ map<string, Messages>::iterator it = pimpl_->messages_.find(language);
+
+ if (it != pimpl_->messages_.end())
+ return it->second;
+
+ std::pair<map<string, Messages>::iterator, bool> result =
+ pimpl_->messages_.insert(std::make_pair(language, Messages(language)));
+
+ BOOST_ASSERT(result.second);
+ return result.first->second;
+}
+
+
+Messages & LyX::getGuiMessages()
+{
+ return pimpl_->messages_["GUI"];
+}
+
+
+void LyX::setGuiLanguage(std::string const & language)
+{
+ pimpl_->messages_["GUI"] = Messages(language);
+}
+
+
Buffer const * const LyX::updateInset(InsetBase const * inset) const
{
if (!inset)
}
// Force adding of font path _before_ Application is initialized
- support::addFontResources();
+ support::os::addFontResources();
// Let the frontend parse and remove all arguments that it knows
pimpl_->application_.reset(createApplication(argc, argv));
initGuiFont();
- // FIXME
- /* Create a CoreApplication class that will provide the main event loop
- * and the socket callback registering. With Qt4, only QtCore
- * library would be needed.
- * When this is done, a server_mode could be created and the following two
- * line would be moved out from here.
- */
- pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
- pimpl_->lyx_socket_.reset(new LyXServerSocket(&pimpl_->lyxfunc_,
- support::os::internal_path(package().temp_dir() + "/lyxsocket")));
-
// Parse and remove all known arguments in the LyX singleton
// Give an error for all remaining ones.
int exit_status = init(argc, argv);
return exit_status;
}
+ // FIXME
+ /* Create a CoreApplication class that will provide the main event loop
+ * and the socket callback registering. With Qt4, only QtCore
+ * library would be needed.
+ * When this is done, a server_mode could be created and the following two
+ * line would be moved out from here.
+ */
+ // Note: socket callback must be registered after init(argc, argv)
+ // such that package().temp_dir() is properly initialized.
+ pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
+ pimpl_->lyx_socket_.reset(new LyXServerSocket(&pimpl_->lyxfunc_,
+ support::os::internal_path(package().temp_dir() + "/lyxsocket")));
+
// Start the real execution loop.
exit_status = pimpl_->application_->exec();
prepareExit();
// Restore original font resources after Application is destroyed.
- support::restoreFontResources();
+ support::os::restoreFontResources();
return exit_status;
}
pimpl_->buffer_list_.closeAll();
// do any other cleanup procedures now
- lyxerr[Debug::INFO] << "Deleting tmp dir " << package().temp_dir() << endl;
-
- // Prevent the deletion of /tmp if LyX was called with invalid
- // arguments. Does not work on windows.
- // FIXME: Fix the real bug instead.
- if (package().temp_dir() == "/tmp") {
- lyxerr << "Not deleting /tmp." << endl;
- return;
- }
-
- if (!destroyDir(FileName(package().temp_dir()))) {
- docstring const msg =
- bformat(_("Unable to remove the temporary directory %1$s"),
- from_utf8(package().temp_dir()));
- Alert::warning(_("Unable to remove temporary directory"), msg);
+ if (package().temp_dir() != package().system_temp_dir()) {
+ lyxerr[Debug::INFO] << "Deleting tmp dir "
+ << package().temp_dir() << endl;
+
+ if (!destroyDir(FileName(package().temp_dir()))) {
+ docstring const msg =
+ bformat(_("Unable to remove the temporary directory %1$s"),
+ from_utf8(package().temp_dir()));
+ Alert::warning(_("Unable to remove temporary directory"), msg);
+ }
}
if (use_gui) {
// get absolute path of file and add ".lyx" to
// the filename if necessary
pimpl_->files_to_load_.push_back(fileSearch(string(),
- os::internal_path(to_utf8(from_local8bit(argv[argi]))), "lyx"));
+ os::internal_path(to_utf8(from_local8bit(argv[argi]))),
+ "lyx", support::allow_unreadable));
}
if (first_start)
if (it->empty())
continue;
- Buffer * const b = newFile(it->absFilename(), string(), true);
Buffer * buf = pimpl_->buffer_list_.newBuffer(it->absFilename(), false);
if (loadLyXFile(buf, *it)) {
ErrorList const & el = buf->errorList("Parse");
if (!readRcFile("lyxrc.dist"))
return false;
+ // Set the language defined by the distributor.
+ //setGuiLanguage(lyxrc.gui_language);
+
// Set the PATH correctly.
#if !defined (USE_POSIX_PACKAGING)
// Add the directory containing the LyX executable to the path
system_lyxrc = lyxrc;
system_formats = formats;
- system_converters = converters;
+ pimpl_->system_converters_ = pimpl_->converters_;
system_movers = movers;
system_lcolor = lcolor;
return false;
if (use_gui) {
+ // Set the language defined by the user.
+ //setGuiLanguage(lyxrc.gui_language);
+
// Set up bindings
pimpl_->toplevel_keymap_.reset(new kb_keymap);
defaultKeyBindings(pimpl_->toplevel_keymap_.get());
}
+Converters & theConverters()
+{
+ return LyX::ref().converters();
+}
+
+
+Converters & theSystemConverters()
+{
+ return LyX::ref().systemConverters();
+}
+
+
IconvProcessor & utf8ToUcs4()
{
return LyX::ref().iconvProcessor();
}
+
+Messages & getMessages(std::string const & language)
+{
+ return LyX::ref().getMessages(language);
+}
+
+
+Messages & getGuiMessages()
+{
+ return LyX::ref().getGuiMessages();
+}
+
} // namespace lyx