X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.h;h=162151286aafe72ecc736621141c04a42b839611;hb=c7d29be153debac82e3d2e8865fcc849f0a5f40d;hp=e7b18f40e393d652110ab93569ceb35e85ed037f;hpb=1a77c867a23f6f904f24b4968bdeb41e4244ccec;p=lyx.git diff --git a/src/LyX.h b/src/LyX.h index e7b18f40e3..162151286a 100644 --- 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 * @@ -14,110 +14,69 @@ #ifndef LYX_H #define LYX_H -#include -#include +#include "support/strfwd.h" -#include +#include 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 CmdDef; +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; +extern double qt_scale_factor; 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; - - /// - CmdDef & topLevelCmdDef(); - - /// - 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(); @@ -130,24 +89,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(); + /// Execute commandline commands if no GUI was requested. + int execWithoutGui(int & argc, char * argv[]); - /// Create a View, load files and restore GUI Session. - void restoreGuiSession(); - - /// 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. @@ -156,9 +105,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. @@ -171,22 +120,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 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 & 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