X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_main.h;h=a196e8909aec48bb56d916ac4a3fe5baf6973777;hb=e7ef29fa2d516b8593aa3cccb6548de5686e8a9a;hp=3730881715646e295f78e5c4a3f11abdd986f464;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/lyx_main.h b/src/lyx_main.h index 3730881715..a196e8909a 100644 --- a/src/lyx_main.h +++ b/src/lyx_main.h @@ -1,88 +1,96 @@ // -*- C++ -*- -/* This file is part of -* ====================================================== -* -* LyX, The Document Processor -* -* Copyright (C) 1995 1996 Matthias Ettrich -* and the LyX Team. -* -*======================================================*/ - -/* This is the declaration of the LyX class, there should only - * exist _one_ instance of this in the application. */ - -#ifndef _LYX_MAIN_H_ -#define _LYX_MAIN_H_ - -#include - -class LyXGUI; -class LyXRC; -class LastFiles; -class Buffer; -class LString; +/** + * \file lyx_main.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author John Levon + * + * Full author contact details are available in file CREDITS. + */ -extern LString system_lyxdir; -extern LString user_lyxdir; -extern LString system_tempdir; +#ifndef LYX_MAIN_H +#define LYX_MAIN_H -extern LastFiles *lastfiles; /* we should hopefully be able to move this - * inside the LyX class */ +#include +#include +#include -extern LyXRC *lyxrc; +#include +#include +class Buffer; +class ErrorItem; +class InsetBase; +class LastFiles; +class LyXView; +class kb_keymap; -/** - This is the main LyX object it encapsulates most of the other objects. -*/ -class LyX -{ + +/// initial startup +class LyX : boost::noncopyable { public: - /**@name Constructors and Deconstructors */ - //@{ - /// the only allowed constructor - LyX(int *argc, char *argv[]); // constructor - // Always is useful a destructor - ~LyX(); - //@} - - /**@name Pointers to... */ - //@{ - /// - LyXGUI *lyxGUI; // should be only one of this - //@} + static void exec(int & argc, char * argv[]); + static LyX & ref(); + static LyX const & cref(); + + /// in the case of failure + void emergencyCleanup() const; + + LastFiles & lastfiles(); + LastFiles const & lastfiles() const; + + void addLyXView(boost::shared_ptr const & lyxview); + + /** 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(InsetBase const *) const; + private: - /**@name Constructors and Deconstructors */ - //@{ - /// not allowed - LyX(const LyX &){;} // not allowed - /// not allowed - LyX(){;} // not allowed - //@} - - /**@name Private variables */ - //@{ - /// does this user start lyx for the first time? + static boost::scoped_ptr singleton_; + + LyX(); + void priv_exec(int & argc, char * argv[]); + + /// initial LyX set up + void init(bool); + /// set up the default key bindings + void defaultKeyBindings(kb_keymap * kbmap); + /// set up the default dead key bindings if requested + void deadKeyBindings(kb_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. + * \returns true if the user-side configuration script + * (lib/configure) should be re-run in this directory. + */ + bool queryUserLyXDir(bool explicit_userdir); + /// read lyxrc/preferences + void readRcFile(std::string const & name); + /// read the given ui (menu/toolbar) file + void readUIFile(std::string const & name); + /// read the given languages file + void readLanguagesFile(std::string const & name); + /// read the given encodings file + void readEncodingsFile(std::string const & name); + /// parsing of non-gui LyX options. Returns true if gui + bool easyParse(int & argc, char * argv[]); + /// 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; + + /// last files loaded + boost::scoped_ptr lastfiles_; /// - struct sigaction act_; - //@} - /**@name Private Members */ - //@{ - /// - void runtime(); - /// - void init(int *argc, char *argv[]); - /// - void queryUserLyXDir(); - /// - void ReadRcFile(LString const & name); - /// - bool easyParse(int *argc, char *argv[]); - //@} + typedef std::list > ViewList; + ViewList views_; }; -#endif - - +#endif // LYX_MAIN_H