X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_main.h;h=4145c78b842991f0f48065cebe6677cc2ad1df53;hb=3f8fa07c6ed38218d6a4048f2993a512aa942c96;hp=8c0e24e1c744fadf016591714c52f9e6b8797096;hpb=146631a5c7358fc451bff65556cedef8eaea6a13;p=lyx.git diff --git a/src/lyx_main.h b/src/lyx_main.h index 8c0e24e1c7..4145c78b84 100644 --- a/src/lyx_main.h +++ b/src/lyx_main.h @@ -18,18 +18,22 @@ #include #include -#include namespace lyx { class Buffer; class BufferList; +class Converters; class ErrorItem; +class IconvProcessor; class InsetBase; class LyXFunc; class LyXServer; class LyXServerSocket; class LyXView; +class Messages; +class Mover; +class Movers; class Session; class kb_keymap; @@ -41,36 +45,18 @@ namespace frontend { class Application; } class LyX : boost::noncopyable { public: + LyX(); ~LyX(); - /** - * Execute LyX. The startup sequence is as follows: - * -# LyX::exec() - * -# LyX::priv_exec() - * -# lyx::createApplication() - * -# LyX::exec2() - * Step 3 is omitted if no gui is wanted. We need lyx::createApplication() - * only to create the QApplication object in the qt frontend. All - * attempts with static and dynamically allocated QApplication - * objects lead either to harmless error messages on exit - * ("Mutex destroy failure") or crashes (OS X). - */ - static int exec(int & argc, char * argv[]); - /// Execute LyX (inner execution loop, \sa exec) - int exec2(int & argc, char * argv[]); + /// Execute LyX. + int exec(int & argc, char * argv[]); + static LyX & ref(); static LyX const & cref(); /// in the case of failure void emergencyCleanup() const; - /// Ask the LyX class to exit. - /** - In GUI mode, after this function has been called, application_ leaves - the main event loop and returns from the call to Application::start(). - */ - void quit(); - /// BufferList & bufferList(); BufferList const & bufferList() const; @@ -94,6 +80,20 @@ public: /// kb_keymap & topLevelKeymap(); kb_keymap const & topLevelKeymap() const; + + /// + Converters & converters(); + Converters & systemConverters(); + + /// + Messages & getMessages(std::string const & language); + /// + Messages & getGuiMessages(); + /// + void setGuiLanguage(std::string const & language); + + /// + IconvProcessor & iconvProcessor(); LyXView * newLyXView(); @@ -102,28 +102,30 @@ public: */ Buffer const * const updateInset(InsetBase const *) const; -private: - static boost::scoped_ptr singleton_; - - LyX(); - int priv_exec(int & argc, char * argv[]); + /// Execute batch commands if available. + void execBatchCommands(); +private: /// Do some cleanup in preparation of an exit. void prepareExit(); /// Early exit during the initialisation process. void earlyExit(int status); - /// Initialise LyX and execute batch commands if available. + /// Initialise LyX and fills-in the vector of files to be loaded. /** - \param files is filled in with the command-line file names. \return exit code failure if any. */ - int execBatchCommands(int & argc, char * argv[], - std::vector & files); + int init(int & argc, char * argv[]); - /// Create a View and restore GUI Session. - void restoreGuiSession(std::vector const & files); + /// 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(); /// Initialize RC font for the GUI. void initGuiFont(); @@ -144,7 +146,7 @@ private: /// read lyxrc/preferences bool readRcFile(std::string const & name); /// read the given ui (menu/toolbar) file - bool readUIFile(std::string const & name); + bool readUIFile(std::string const & name, bool include = false); /// read the given languages file bool readLanguagesFile(std::string const & name); /// read the given encodings file @@ -163,8 +165,11 @@ private: struct Singletons; boost::scoped_ptr pimpl_; - /// - bool geometryOption_; + 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(); }; } // namespace lyx