]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.h
infrastructure for 'graceful asserts'
[lyx.git] / src / LyX.h
index 0a0602e3864f98de5562a1656a32a7c94fded661..3d98e42b8edb5100c719d27152f7e0c6e6018969 100644 (file)
--- a/src/LyX.h
+++ b/src/LyX.h
 #ifndef LYX_H
 #define LYX_H
 
-#include <boost/scoped_ptr.hpp>
-#include <boost/utility.hpp>
-
-#include <string>
+#include "support/strfwd.h"
 
 namespace lyx {
 
-namespace support {
-class FileName;
-}
-
-class Buffer;
 class BufferList;
+class CmdDef;
 class Converters;
 class ErrorItem;
-class Inset;
+class KeyMap;
 class LyXFunc;
-class Server;
-class ServerSocket;
-class LyXView;
 class Messages;
 class Mover;
 class Movers;
+class Server;
+class ServerSocket;
 class Session;
-class KeyMap;
 
 extern bool use_gui;
 
-namespace frontend { class Application; }
+namespace frontend {
+class Application;
+class LyXView;
+}
 
 /// initial startup
-class LyX : boost::noncopyable {
+class LyX {
 public:
 
        LyX();
@@ -54,6 +48,11 @@ public:
        /// Execute LyX.
        int exec(int & argc, char * argv[]);
 
+       /// Try to exit LyX properly.
+       /// \p exit_code is 0 by default, if a non zero value is passed,
+       /// emergencyCleanup() will be called before exiting.
+       void exit(int exit_code = 0) const;
+
        static LyX & ref();
        static LyX const & cref();
 
@@ -81,9 +80,8 @@ public:
        frontend::Application const & application() const;
 
        ///
-       KeyMap & topLevelKeymap();
-       KeyMap const & topLevelKeymap() const;
-       
+       CmdDef & topLevelCmdDef();
+
        ///
        Converters & converters();
        Converters & systemConverters();
@@ -96,20 +94,19 @@ public:
        void setGuiLanguage(std::string const & language);
 
        ///
-       LyXView * newLyXView();
-
-       /** redraw \c inset in all the BufferViews in which it is currently
-        *  visible. If successful return a pointer to the owning Buffer.
-        */
-       Buffer const * const updateInset(Inset const *) const;
+       frontend::LyXView * newLyXView();
 
        /// Execute batch commands if available.
        void execBatchCommands();
 
        ///
-       void addFileToLoad(support::FileName const &);
+       void addFileToLoad(std::string const &);
 
 private:
+       /// noncopyable
+       LyX(LyX const &);
+       void operator=(LyX const &);
+
        /// Do some cleanup in preparation of an exit.
        void prepareExit();
 
@@ -128,18 +125,8 @@ private:
        */
        void loadFiles();
 
-       /// Create a View, load files and restore GUI Session.
-       void restoreGuiSession();
-
-       /// Initialize RC font for the GUI.
-       void initGuiFont();
-
        /// initial LyX set up
        bool init();
-       /// set up the default key bindings
-       void defaultKeyBindings(KeyMap * kbmap);
-       /// set up the default dead key bindings if requested
-       void deadKeyBindings(KeyMap * kbmap);
        /** Check for the existence of the user's support directory and,
         *  if not present, create it. Exits the program if the directory
         *  cannot be created.
@@ -157,26 +144,26 @@ private:
        /// \param enc_name encodings definition file
        /// \param symbols_name unicode->LaTeX mapping file
        bool readEncodingsFile(std::string const & enc_name,
-                              std::string const & symbols_name);
+                              std::string const & symbols_name);
        /// parsing of non-gui LyX options.
        void easyParse(int & argc, char * argv[]);
        /// shows up a parsing error on screen
        void printError(ErrorItem const &);
 
+       /// Use the Pimpl idiom to hide the internals.
+       // Mostly used for singletons.
+       struct Impl;
+       Impl * pimpl_;
+
        /// has this user started lyx for the first time?
        bool first_start;
-       /// the parsed command line batch command if any
-       std::string batch_command;
-
-       /// Use the Pimpl idiom to hide the internals.
-       struct Singletons;
-       boost::scoped_ptr<Singletons> pimpl_;
 
        friend Movers & theMovers();
        friend Mover const & getMover(std::string  const & fmt);
        friend void setMover(std::string const & fmt, std::string const & command);
        friend Movers & theSystemMovers();
        friend frontend::Application * theApp();
+       friend KeyMap & theTopLevelKeymap();
 };
 
 } // namespace lyx