lyx_mirror/src/LyX.h
Bernhard Roider 1a77c867a2 CmdDef.cpp/h: A class that manages command definitions. The definitions are
by default read from lib/commands/default.def 
              A .def file allows to define a command with
              \define "Name" "lfun"
              where Name is the name of the new command and lfun is the code
              to be executed.
              \def_file "FileName"
              allows to include another .def file.
              The implementation of CmdDef is similar to KeyMap, i.e. there is 
              one instance created in the LyX.cpp that reads the .def file, holds 
              a list containing all definitions, and supplies access methods.


LFUN_CALL:    The new lfun is used to execute a command definition, e.g.
              call Name

If a toolbar item has the associated action "call Name" then the image 
lib/images/commands/Name.png is used for the button.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21093 a592a061-630c-0410-9148-cb99ea01b6c8
2007-10-20 23:27:03 +00:00

193 lines
4.4 KiB
C++

// -*- C++ -*-
/**
* \file LyX.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.
*/
#ifndef LYX_H
#define LYX_H
#include <boost/scoped_ptr.hpp>
#include <boost/noncopyable.hpp>
#include <string>
namespace lyx {
namespace support {
class FileName;
}
class Buffer;
class BufferList;
class Converters;
class ErrorItem;
class Inset;
class LyXFunc;
class Server;
class ServerSocket;
class Messages;
class Mover;
class Movers;
class Session;
class KeyMap;
class CmdDef;
extern bool use_gui;
namespace frontend {
class Application;
class LyXView;
}
/// initial startup
class LyX : boost::noncopyable {
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:
/// Do some cleanup in preparation of an exit.
void prepareExit();
/// Early exit during the initialisation process.
void earlyExit(int status);
/// Initialise LyX and fills-in the vector of files to be loaded.
/**
\return exit code failure if any.
*/
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();
/// 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.
* \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
bool readRcFile(std::string const & name);
/// read the given ui (menu/toolbar) file
bool readUIFile(std::string const & name, bool include = false);
/// read the given languages file
bool readLanguagesFile(std::string const & name);
/// read the encodings.
/// \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);
/// parsing of non-gui LyX options.
void 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;
/// 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();
};
} // namespace lyx
#endif // LYX_H