]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
* docstream: factorize out some code and introduce odocfstream::reset()
[lyx.git] / src / LyX.cpp
index 456b47ebf698493d9a55e9fd8373d84751f4bd83..895cbcbfb684551f7575c78ebe7de39464b5b35f 100644 (file)
 
 #include "LyX.h"
 
-#include "Color.h"
-#include "ConverterCache.h"
-#include "Buffer.h"
 #include "buffer_funcs.h"
+#include "Buffer.h"
 #include "BufferList.h"
+#include "CmdDef.h"
+#include "Color.h"
+#include "ConverterCache.h"
 #include "Converter.h"
 #include "CutAndPaste.h"
-#include "debug.h"
 #include "Encoding.h"
 #include "ErrorList.h"
 #include "Format.h"
-#include "gettext.h"
 #include "KeyMap.h"
-#include "CmdDef.h"
 #include "Language.h"
-#include "Session.h"
+#include "Lexer.h"
 #include "LyXAction.h"
 #include "LyXFunc.h"
-#include "Lexer.h"
 #include "LyXRC.h"
+#include "MenuBackend.h"
 #include "ModuleList.h"
+#include "Mover.h"
 #include "Server.h"
 #include "ServerSocket.h"
+#include "Session.h"
 #include "TextClassList.h"
-#include "MenuBackend.h"
-#include "Messages.h"
-#include "Mover.h"
 #include "ToolbarBackend.h"
 
 #include "frontends/alert.h"
 #include "frontends/Application.h"
-#include "frontends/LyXView.h"
 
+#include "support/debug.h"
 #include "support/environment.h"
+#include "support/ExceptionMessage.h"
 #include "support/filetools.h"
+#include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/lyxlib.h"
-#include "support/ExceptionMessage.h"
+#include "support/Messages.h"
 #include "support/os.h"
 #include "support/Package.h"
 #include "support/Path.h"
@@ -99,7 +98,6 @@ using support::package;
 using support::prependEnvPath;
 using support::rtrim;
 using support::Systemcall;
-using frontend::LyXView;
 
 namespace Alert = frontend::Alert;
 namespace os = support::os;
@@ -161,9 +159,9 @@ struct LyX::Impl
        ///
        BufferList buffer_list_;
        ///
-       boost::scoped_ptr<KeyMap> toplevel_keymap_;
+       KeyMap toplevel_keymap_;
        ///
-       boost::scoped_ptr<CmdDef> toplevel_cmddef_;
+       CmdDef toplevel_cmddef_;
        ///
        boost::scoped_ptr<Server> lyx_server_;
        ///
@@ -316,15 +314,13 @@ frontend::Application const & LyX::application() const
 
 KeyMap & LyX::topLevelKeymap()
 {
-       BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
-       return *pimpl_->toplevel_keymap_.get();
+       return pimpl_->toplevel_keymap_;
 }
 
 
 CmdDef & LyX::topLevelCmdDef()
 {
-       BOOST_ASSERT(pimpl_->toplevel_cmddef_.get());
-       return *pimpl_->toplevel_cmddef_.get();
+       return pimpl_->toplevel_cmddef_;
 }
 
 
@@ -342,8 +338,7 @@ Converters & LyX::systemConverters()
 
 KeyMap const & LyX::topLevelKeymap() const
 {
-       BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
-       return *pimpl_->toplevel_keymap_.get();
+       return pimpl_->toplevel_keymap_;
 }
 
 
@@ -627,7 +622,8 @@ void LyX::execBatchCommands()
 
 void LyX::restoreGuiSession()
 {
-       LyXView * view = newLyXView();
+       // create the main window
+       pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg));
 
        // if there is no valid class list, do not load any file. 
        if (textclasslist.empty())
@@ -663,24 +659,6 @@ void LyX::restoreGuiSession()
                        continue;
                updateLabels(*buf);
        }
-
-       // FIXME: Switch to the last loaded Buffer. This must not be the first one
-       // because the Buffer won't be connected in this case. The correct solution
-       // would be to avoid the manual connection of the current Buffer in LyXView.
-       if (!pimpl_->buffer_list_.empty())
-               view->setBuffer(pimpl_->buffer_list_.last());
-}
-
-
-LyXView * LyX::newLyXView()
-{
-       if (!lyx::use_gui)
-               return 0;
-
-       // create the main window
-       LyXView * view = &pimpl_->application_->createView(geometryArg);
-
-       return view;
 }
 
 /*
@@ -804,6 +782,10 @@ bool LyX::init()
        lyxrc.tempdir_path = package().temp_dir().absFilename();
        lyxrc.document_path = package().document_dir().absFilename();
 
+       if (lyxrc.example_path.empty()) {
+               lyxrc.example_path = addPath(package().system_support().absFilename(),
+                                             "examples");
+       }
        if (lyxrc.template_path.empty()) {
                lyxrc.template_path = addPath(package().system_support().absFilename(),
                                              "templates");
@@ -879,17 +861,15 @@ bool LyX::init()
        //setGuiLanguage(lyxrc.gui_language);
 
        // Set up command definitions
-       pimpl_->toplevel_cmddef_.reset(new CmdDef);
-       pimpl_->toplevel_cmddef_->read(lyxrc.def_file);
+       pimpl_->toplevel_cmddef_.read(lyxrc.def_file);
 
        // Set up bindings
-       pimpl_->toplevel_keymap_.reset(new KeyMap);
-       pimpl_->toplevel_keymap_->read("site");
-       pimpl_->toplevel_keymap_->read(lyxrc.bind_file);
+       pimpl_->toplevel_keymap_.read("site");
+       pimpl_->toplevel_keymap_.read(lyxrc.bind_file);
        // load user bind file user.bind
-       pimpl_->toplevel_keymap_->read("user");
+       pimpl_->toplevel_keymap_.read("user");
 
-       pimpl_->lyxfunc_.initKeySequences(pimpl_->toplevel_keymap_.get());
+       pimpl_->lyxfunc_.initKeySequences(&pimpl_->toplevel_keymap_);
 
        // Read menus
        if (!readUIFile(lyxrc.ui_file))