]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
document my LFUN changes in the past
[lyx.git] / src / LyX.cpp
index f90e09ce5bfe8cefbb0f20d34f6c83922f0baeaf..db9e92033a41066a4a7b805bf39b8f37636d3239 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_;
 }
 
 
@@ -476,6 +471,15 @@ void LyX::prepareExit()
        // close buffers first
        pimpl_->buffer_list_.closeAll();
 
+       // register session changes and shutdown server and socket
+       if (use_gui) {
+               if (pimpl_->session_)
+                       pimpl_->session_->writeFile();
+               pimpl_->session_.reset();
+               pimpl_->lyx_server_.reset();
+               pimpl_->lyx_socket_.reset();
+       }
+
        // do any other cleanup procedures now
        if (package().temp_dir() != package().system_temp_dir()) {
                LYXERR(Debug::INFO, "Deleting tmp dir "
@@ -489,14 +493,6 @@ void LyX::prepareExit()
                }
        }
 
-       if (use_gui) {
-               if (pimpl_->session_)
-                       pimpl_->session_->writeFile();
-               pimpl_->session_.reset();
-               pimpl_->lyx_server_.reset();
-               pimpl_->lyx_socket_.reset();
-       }
-
        // Kill the application object before exiting. This avoids crashes
        // when exiting on Linux.
        if (pimpl_->application_)
@@ -627,7 +623,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())
@@ -638,7 +635,7 @@ void LyX::restoreGuiSession()
        if (!pimpl_->files_to_load_.empty()) {
                for_each(pimpl_->files_to_load_.begin(),
                        pimpl_->files_to_load_.end(),
-                       bind(&LyXView::loadLyXFile, view, _1, true));
+                       bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, true));
                // clear this list to save a few bytes of RAM
                pimpl_->files_to_load_.clear();
                pimpl_->session_->lastOpened().clear();
@@ -649,7 +646,7 @@ void LyX::restoreGuiSession()
                // last session, and should be already there (regular files), or should
                // not be added at all (help files).
                for_each(lastopened.begin(), lastopened.end(),
-                       bind(&LyXView::loadLyXFile, view, _1, false));
+                       bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, false));
 
                // clear this list to save a few bytes of RAM
                pimpl_->session_->lastOpened().clear();
@@ -663,24 +660,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 +783,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 +862,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))