]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_main.C
remove redundant lyxerr.debugging checks; macro LYXERR already checks whether the...
[lyx.git] / src / lyx_main.C
index 1deaa8ca251cef5ab784c43b0bf8b3f3cb6093dc..c22e4c14ba72f736edbfaf662ad12280248fa217 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_;
 
@@ -197,7 +194,7 @@ struct LyX::Singletons
 frontend::Application * theApp()
 {
        if (singleton_)
-               return &singleton_->application();
+               return singleton_->pimpl_->application_.get();
        else
                return 0;
 }
@@ -227,7 +224,6 @@ LyX::LyX()
 {
        singleton_ = this;
        pimpl_.reset(new Singletons);
-       geometryArg.clear();
 }
 
 
@@ -330,12 +326,6 @@ Converters & LyX::systemConverters()
 }
 
 
-IconvProcessor & LyX::iconvProcessor()
-{
-       return pimpl_->iconv;
-}
-
-
 kb_keymap const & LyX::topLevelKeymap() const
 {
        BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
@@ -395,9 +385,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
@@ -483,7 +481,7 @@ void LyX::prepareExit()
 
        // do any other cleanup procedures now
        if (package().temp_dir() != package().system_temp_dir()) {
-               lyxerr[Debug::INFO] << "Deleting tmp dir "
+               LYXERR(Debug::INFO) << "Deleting tmp dir "
                                    << package().temp_dir() << endl;
 
                if (!destroyDir(FileName(package().temp_dir()))) {
@@ -533,9 +531,9 @@ int LyX::init(int & argc, char * argv[])
        }
 
        // Initialization of LyX (reads lyxrc and more)
-       lyxerr[Debug::INIT] << "Initializing LyX::init..." << endl;
+       LYXERR(Debug::INIT) << "Initializing LyX::init..." << endl;
        bool success = init();
-       lyxerr[Debug::INIT] << "Initializing LyX::init...done" << endl;
+       LYXERR(Debug::INIT) << "Initializing LyX::init...done" << endl;
        if (!success)
                return EXIT_FAILURE;
 
@@ -587,7 +585,7 @@ void LyX::execBatchCommands()
        if (batch_command.empty())
                return;
 
-       lyxerr[Debug::INIT] << "About to handle -x '"
+       LYXERR(Debug::INIT) << "About to handle -x '"
                << batch_command << '\'' << endl;
 
        pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(batch_command));
@@ -636,7 +634,7 @@ LyXView * LyX::newLyXView()
        unsigned int height = 510;
        // default icon size, will be overwritten by  stored session value
        unsigned int iconSizeXY = 0;
-       bool maximize = false;
+       int maximized = LyXView::NotMaximized;
        // first try lyxrc
        if (lyxrc.geometry_width != 0 && lyxrc.geometry_height != 0 ) {
                width = lyxrc.geometry_width;
@@ -650,8 +648,9 @@ LyXView * LyX::newLyXView()
                val = session().sessionInfo().load("WindowHeight");
                if (!val.empty())
                        height = convert<unsigned int>(val);
-               if (session().sessionInfo().load("WindowIsMaximized") == "yes")
-                       maximize = true;
+               val = session().sessionInfo().load("WindowMaximized");
+               if (!val.empty())
+                       maximized = convert<int>(val);
                val = session().sessionInfo().load("IconSizeXY");
                if (!val.empty())
                        iconSizeXY = convert<unsigned int>(val);
@@ -676,7 +675,7 @@ LyXView * LyX::newLyXView()
        }
 
        // create the main window
-       LyXView * view = &pimpl_->application_->createView(width, height, posx, posy, maximize, iconSizeXY, geometryArg);
+       LyXView * view = &pimpl_->application_->createView(width, height, posx, posy, maximized, iconSizeXY, geometryArg);
 
        return view;
 }
@@ -871,13 +870,13 @@ bool LyX::init()
        if (!readRcFile("preferences"))
                return false;
 
-       if (!readEncodingsFile("encodings"))
+       if (!readEncodingsFile("encodings", "unicodesymbols"))
                return false;
        if (!readLanguagesFile("languages"))
                return false;
 
        // Load the layouts
-       lyxerr[Debug::INIT] << "Reading layouts..." << endl;
+       LYXERR(Debug::INIT) << "Reading layouts..." << endl;
        if (!LyXSetStyle())
                return false;
 
@@ -924,11 +923,9 @@ bool LyX::init()
                return false;
        }
 
-       if (lyxerr.debugging(Debug::INIT)) {
-               lyxerr << "LyX tmp dir: `" << package().temp_dir() << '\'' << endl;
-       }
+       LYXERR(Debug::INIT) << "LyX tmp dir: `" << package().temp_dir() << '\'' << endl;
 
-       lyxerr[Debug::INIT] << "Reading session information '.lyx/session'..." << endl;
+       LYXERR(Debug::INIT) << "Reading session information '.lyx/session'..." << endl;
        pimpl_->session_.reset(new Session(lyxrc.num_lastfiles));
 
        // This must happen after package initialization and after lyxrc is
@@ -1108,19 +1105,19 @@ bool LyX::queryUserLyXDir(bool explicit_userdir)
 
 bool LyX::readRcFile(string const & name)
 {
-       lyxerr[Debug::INIT] << "About to read " << name << "... ";
+       LYXERR(Debug::INIT) << "About to read " << name << "... ";
 
        FileName const lyxrc_path = libFileSearch(string(), name);
        if (!lyxrc_path.empty()) {
 
-               lyxerr[Debug::INIT] << "Found in " << lyxrc_path << endl;
+               LYXERR(Debug::INIT) << "Found in " << lyxrc_path << endl;
 
                if (lyxrc.read(lyxrc_path) < 0) {
                        showFileError(name);
                        return false;
                }
        } else
-               lyxerr[Debug::INIT] << "Not found." << lyxrc_path << endl;
+               LYXERR(Debug::INIT) << "Not found." << lyxrc_path << endl;
        return true;
 
 }
@@ -1150,14 +1147,14 @@ bool LyX::readUIFile(string const & name, bool include)
        std::list<string>::const_iterator end = uifiles.end();
        it = std::find(it, end, name);
        if (it != end) {
-               lyxerr[Debug::INIT] << "UI file '" << name
+               LYXERR(Debug::INIT) << "UI file '" << name
                                    << "' has been read already. "
                                    << "Is this an include loop?"
                                    << endl;
                return false;
        }
 
-       lyxerr[Debug::INIT] << "About to read " << name << "..." << endl;
+       LYXERR(Debug::INIT) << "About to read " << name << "..." << endl;
 
        
        FileName ui_path;
@@ -1171,14 +1168,14 @@ bool LyX::readUIFile(string const & name, bool include)
                ui_path = libFileSearch("ui", name, "ui");
        
        if (ui_path.empty()) {
-               lyxerr[Debug::INIT] << "Could not find " << name << endl;
+               LYXERR(Debug::INIT) << "Could not find " << name << endl;
                showFileError(name);
                return false;
        }
 
        uifiles.push_back(name);
 
-       lyxerr[Debug::INIT] << "Found " << name
+       LYXERR(Debug::INIT) << "Found " << name
                            << " in " << ui_path << endl;
        LyXLex lex(uitags, ui_last - 1);
        lex.setFile(ui_path);
@@ -1225,7 +1222,7 @@ bool LyX::readUIFile(string const & name, bool include)
 // Read the languages file `name'
 bool LyX::readLanguagesFile(string const & name)
 {
-       lyxerr[Debug::INIT] << "About to read " << name << "..." << endl;
+       LYXERR(Debug::INIT) << "About to read " << name << "..." << endl;
 
        FileName const lang_path = libFileSearch(string(), name);
        if (lang_path.empty()) {
@@ -1238,16 +1235,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;
 }
 
@@ -1313,7 +1318,8 @@ int parse_version(string const &, string const &)
 int parse_sysdir(string const & arg, string const &)
 {
        if (arg.empty()) {
-               lyxerr << to_utf8(_("Missing directory for -sysdir switch")) << endl;
+               Alert::error(_("No system directory"),
+                       _("Missing directory for -sysdir switch"));
                exit(1);
        }
        cl_system_support = arg;
@@ -1323,7 +1329,8 @@ int parse_sysdir(string const & arg, string const &)
 int parse_userdir(string const & arg, string const &)
 {
        if (arg.empty()) {
-               lyxerr << to_utf8(_("Missing directory for -userdir switch")) << endl;
+               Alert::error(_("No user directory"),
+                       _("Missing directory for -userdir switch"));
                exit(1);
        }
        cl_user_support = arg;
@@ -1333,7 +1340,8 @@ int parse_userdir(string const & arg, string const &)
 int parse_execute(string const & arg, string const &)
 {
        if (arg.empty()) {
-               lyxerr << to_utf8(_("Missing command string after --execute switch")) << endl;
+               Alert::error(_("Incomplete command"),
+                       _("Missing command string after --execute switch"));
                exit(1);
        }
        batch = arg;
@@ -1513,12 +1521,6 @@ Movers & theSystemMovers()
 }
 
 
-IconvProcessor & utf8ToUcs4()
-{
-       return LyX::ref().iconvProcessor();
-}
-
-
 Messages & getMessages(std::string const & language)
 {
        return LyX::ref().getMessages(language);