]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.h
Fix support for screen fractional scaling with Wayland
[lyx.git] / src / LyX.h
index 8347dba478aa85efb2db5ac265d9e267cea9fa00..c35464e210e6626f9d5f6e10f6ed879514b78935 100644 (file)
--- a/src/LyX.h
+++ b/src/LyX.h
@@ -4,7 +4,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  * \author Jean-Marc Lasgouttes
  * \author John Levon
  *
 #ifndef LYX_H
 #define LYX_H
 
-#include <boost/scoped_ptr.hpp>
-#include <boost/noncopyable.hpp>
+#include "support/strfwd.h"
 
-#include <string>
+#include <vector>
 
 namespace lyx {
 
-namespace support {
-class FileName;
-}
-
-class Buffer;
 class BufferList;
+class CmdDef;
 class Converters;
+class DispatchResult;
 class ErrorItem;
-class Inset;
-class LyXFunc;
-class Server;
-class ServerSocket;
+class Formats;
+class FuncRequest;
+class FuncStatus;
+class KeyMap;
+class LaTeXFonts;
 class Messages;
 class Mover;
 class Movers;
+class Server;
+class ServerSocket;
 class Session;
-class KeyMap;
+class SpellChecker;
+
+enum RunMode {
+       NEW_INSTANCE,
+       USE_REMOTE,
+       PREFERRED
+};
+
+enum OverwriteFiles {
+       NO_FILES,
+       MAIN_FILE,
+       ALL_FILES,
+       UNSPECIFIED
+};
 
 extern bool use_gui;
+extern bool verbose;
+extern bool ignore_missing_glyphs;
+extern RunMode run_mode;
+extern OverwriteFiles force_overwrite;
 
 namespace frontend {
 class Application;
-class LyXView;
 }
 
 /// initial startup
-class LyX : boost::noncopyable {
+class LyX {
+       friend class LyXConsoleApp;
 public:
-
        LyX();
        ~LyX();
 
        /// Execute LyX.
        int exec(int & argc, char * argv[]);
 
-       static LyX & ref();
-       static LyX const & cref();
-
-       /// in the case of failure
-       void emergencyCleanup() const;
-
-       ///
-       BufferList & bufferList();
-       BufferList const & bufferList() const;
-       ///
-       Session & session();
-       Session const & session() const;
-       ///
-       LyXFunc & lyxFunc();
-       LyXFunc const & lyxFunc() const;
-       ///
-       Server & server();
-       Server const & server() const;
-       ///
-       ServerSocket & socket();
-       ServerSocket const & socket() const;
-
-       ///
-       frontend::Application & application();
-       frontend::Application const & application() const;
-
-       ///
-       KeyMap & topLevelKeymap();
-       KeyMap const & topLevelKeymap() const;
-
-       ///
-       Converters & converters();
-       Converters & systemConverters();
-
-       ///
-       Messages & getMessages(std::string const & language);
-       ///
-       Messages & getGuiMessages();
-       ///
-       void setGuiLanguage(std::string const & language);
-
-       ///
-       frontend::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 * updateInset(Inset const *) const;
-
-       void hideDialogs(std::string const & name, Inset * inset) const;
-
-       /// Execute batch commands if available.
-       void execBatchCommands();
-
-       ///
-       void addFileToLoad(support::FileName const &);
-
 private:
+       /// noncopyable
+       LyX(LyX const &);
+       void operator=(LyX const &);
+
        /// Do some cleanup in preparation of an exit.
        void prepareExit();
 
@@ -126,24 +88,14 @@ private:
        */
        int init(int & argc, char * argv[]);
 
-       /// Load files passed at command-line.
-       /**
-       This method is used only in non-GUI mode.
-       */
-       void loadFiles();
-
-       /// Create a View, load files and restore GUI Session.
-       void restoreGuiSession();
+       /// Execute commandline commands if no GUI was requested.
+       int execWithoutGui(int & argc, char * argv[]);
 
-       /// Initialize RC font for the GUI.
-       void initGuiFont();
+       /// Execute batch commands if available.
+       void execCommands();
 
        /// 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.
@@ -152,9 +104,9 @@ private:
         */
        bool queryUserLyXDir(bool explicit_userdir);
        /// read lyxrc/preferences
-       bool readRcFile(std::string const & name);
-       /// read the given ui (menu/toolbar) file
-       bool readUIFile(std::string const & name, bool include = false);
+       /// \param check_format: whether to try to convert the format of
+       /// the file, if there is a mismatch.
+       bool readRcFile(std::string const & name, bool check_format = false);
        /// read the given languages file
        bool readLanguagesFile(std::string const & name);
        /// read the encodings.
@@ -167,22 +119,65 @@ private:
        /// shows up a parsing error on screen
        void printError(ErrorItem const &);
 
-       /// has this user started lyx for the first time?
-       bool first_start;
-       /// the parsed command line batch command if any
-       std::string batch_command;
+       ///
+       Messages & messages(std::string const & language);
 
        /// Use the Pimpl idiom to hide the internals.
-       struct Singletons;
-       boost::scoped_ptr<Singletons> pimpl_;
+       // Mostly used for singletons.
+       struct Impl;
+       Impl * pimpl_;
+
+       /// has this user started lyx for the first time?
+       bool first_start;
 
+       friend FuncStatus getStatus(FuncRequest const & action);
+       friend DispatchResult const & dispatch(FuncRequest const & action);
+       friend void dispatch(FuncRequest const & action, DispatchResult & dr);
+       friend std::vector<std::string> & theFilesToLoad();
+       friend BufferList & theBufferList();
+       friend Server & theServer();
+       friend ServerSocket & theServerSocket();
+       friend Converters & theConverters();
+       friend Converters & theSystemConverters();
+       friend Formats & theFormats();
+       friend Formats & theSystemFormats();
+       friend Messages const & getMessages(std::string const & language);
+       friend Messages const & getGuiMessages();
+       friend KeyMap & theTopLevelKeymap();
        friend Movers & theMovers();
-       friend Mover const & getMover(std::string  const & fmt);
+       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 Session & theSession();
+       friend LaTeXFonts & theLaTeXFonts();
+       friend CmdDef & theTopLevelCmdDef();
+       friend SpellChecker * theSpellChecker();
+       friend void setSpellChecker();
+       friend void emergencyCleanup();
+       friend void execBatchCommands();
+       friend void lyx_exit(int exit_code);
 };
 
+
+/// in the case of failure
+void emergencyCleanup();
+/// 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 lyx_exit(int exit_code);
+/// Execute batch commands if available.
+void execBatchCommands();
+
+///
+FuncStatus getStatus(FuncRequest const & action);
+
+///
+DispatchResult const & dispatch(FuncRequest const & action);
+
+///
+void dispatch(FuncRequest const & action, DispatchResult & dr);
+
 } // namespace lyx
 
 #endif // LYX_H