]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_main.C
* support/qstring_helpers.h: erase ucs4_to_qstring() method.
[lyx.git] / src / lyx_main.C
index b0a6b1713ada4db0815b9b6014ee6c6ea47ee550..b881f3d78f55f3c383c1ffbaa09bfe24008f2650 100644 (file)
 #include "support/filetools.h"
 #include "support/lyxlib.h"
 #include "support/convert.h"
+#include "support/ExceptionMessage.h"
 #include "support/os.h"
 #include "support/package.h"
 #include "support/path.h"
 #include "support/systemcall.h"
-#include "support/unicode.h"
 
 #include <boost/bind.hpp>
 #include <boost/filesystem/operations.hpp>
@@ -149,7 +149,7 @@ void reconfigureUserLyXDir()
 /// The main application class private implementation.
 struct LyX::Singletons 
 {
-       Singletons(): iconv(ucs4_codeset, "UTF-8")
+       Singletons()
        {
                // Set the default User Interface language as soon as possible.
                // The language used will be derived from the environment
@@ -171,9 +171,6 @@ struct LyX::Singletons
        /// lyx session, containing lastfiles, lastfilepos, and lastopened
        boost::scoped_ptr<Session> session_;
 
-       ///
-       IconvProcessor iconv;
-
        /// Files to load at start.
        vector<FileName> files_to_load_;
 
@@ -330,12 +327,6 @@ Converters & LyX::systemConverters()
 }
 
 
-IconvProcessor & LyX::iconvProcessor()
-{
-       return pimpl_->iconv;
-}
-
-
 kb_keymap const & LyX::topLevelKeymap() const
 {
        BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
@@ -395,9 +386,17 @@ int LyX::exec(int & argc, char * argv[])
        // we need to parse for "-dbg" and "-help"
        easyParse(argc, argv);
 
-       support::init_package(to_utf8(from_local8bit(argv[0])),
+       try { support::init_package(to_utf8(from_local8bit(argv[0])),
                              cl_system_support, cl_user_support,
                              support::top_build_dir_is_one_level_up);
+       } catch (support::ExceptionMessage const & message) {
+               if (message.type_ == support::ErrorException) {
+                       Alert::error(message.title_, message.details_);
+                       exit(1);
+               } else if (message.type_ == support::WarningException) {
+                       Alert::warning(message.title_, message.details_);
+               }
+       }
 
        if (!use_gui) {
                // FIXME: create a ConsoleApplication
@@ -871,7 +870,7 @@ bool LyX::init()
        if (!readRcFile("preferences"))
                return false;
 
-       if (!readEncodingsFile("encodings"))
+       if (!readEncodingsFile("encodings", "unicodesymbols"))
                return false;
        if (!readLanguagesFile("languages"))
                return false;
@@ -1238,16 +1237,24 @@ bool LyX::readLanguagesFile(string const & name)
 
 
 // Read the encodings file `name'
-bool LyX::readEncodingsFile(string const & name)
+bool LyX::readEncodingsFile(string const & enc_name,
+                            string const & symbols_name)
 {
-       lyxerr[Debug::INIT] << "About to read " << name << "..." << endl;
+       lyxerr[Debug::INIT] << "About to read " << enc_name << " and "
+                           << symbols_name << "..." << endl;
 
-       FileName const enc_path = libFileSearch(string(), name);
+       FileName const symbols_path = libFileSearch(string(), symbols_name);
+       if (symbols_path.empty()) {
+               showFileError(symbols_name);
+               return false;
+       }
+
+       FileName const enc_path = libFileSearch(string(), enc_name);
        if (enc_path.empty()) {
-               showFileError(name);
+               showFileError(enc_name);
                return false;
        }
-       encodings.read(enc_path);
+       encodings.read(enc_path, symbols_path);
        return true;
 }
 
@@ -1516,12 +1523,6 @@ Movers & theSystemMovers()
 }
 
 
-IconvProcessor & utf8ToUcs4()
-{
-       return LyX::ref().iconvProcessor();
-}
-
-
 Messages & getMessages(std::string const & language)
 {
        return LyX::ref().getMessages(language);