X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCommandParams.h;h=5e043a4e57395ec69a77a75b4755309b32446cb7;hb=2c357c1d23b7b83839a9beb8225d4f1ae4f793b4;hp=3e6b20eca8f689b1be11eeceaa5fa04105509a32;hpb=4ce743a0a77d85d5e1722a3f2854ce163e40b353;p=lyx.git diff --git a/src/insets/InsetCommandParams.h b/src/insets/InsetCommandParams.h index 3e6b20eca8..5e043a4e57 100644 --- a/src/insets/InsetCommandParams.h +++ b/src/insets/InsetCommandParams.h @@ -6,6 +6,7 @@ * * \author Angus Leeming * \author Georg Baum + * \author Richard Heck * * Full author contact details are available in file CREDITS. */ @@ -13,9 +14,11 @@ #ifndef INSETCOMMANDPARAMS_H #define INSETCOMMANDPARAMS_H +#include "InsetCode.h" #include "support/docstring.h" #include +#include #include @@ -23,41 +26,46 @@ namespace lyx { class Lexer; +// No parameter may be named "preview", because that is a required +// flag for all commands. +struct CommandInfo { + /// Number of parameters + size_t n; + /// Parameter names. paramnames[n] must be "". + char const * const * paramnames; + /// Tells whether a parameter is optional + bool const * optional; +}; + + class InsetCommandParams { public: - /// Construct parameters for command \p name. \p name must be known. - explicit InsetCommandParams(std::string const & name); + /// Construct parameters for inset of type \p code. + explicit InsetCommandParams(InsetCode code); + /// Construct parameters for inset of type \p code with + /// command name \p cmdName. + explicit InsetCommandParams(InsetCode code, + std::string const & cmdName); + /// + std::string insetType() const { return insetName(insetCode_); } + /// + InsetCode code() const { return insetCode_; } /// void read(Lexer &); /// Parse the command - /// FIXME remove - void scanCommand(std::string const &); /// void write(std::ostream &) const; /// Build the complete LaTeX command docstring const getCommand() const; /// Return the command name - std::string const & getCmdName() const { return name_; } - /// this is used by listings package. - std::string const getOptions() const; -private: - /// FIXME remove - std::string const getSecOptions() const; -public: - /// FIXME remove - std::string const getContents() const; + std::string const & getCmdName() const { return cmdName_; } /// Set the name to \p n. This must be a known name. All parameters /// are cleared except those that exist also in the new command. /// What matters here is the parameter name, not position. void setCmdName(std::string const & n); - /// this is used by the listings package - void setOptions(std::string const &); -private: - /// FIXME remove - void setSecOptions(std::string const &); -public: - /// FIXME remove - void setContents(std::string const &); + /// FIXME Would be better removed, but is used in BufferView.cpp in + /// ways that make removal hard. + docstring const getFirstNonOptParam() const; /// get parameter \p name docstring const & operator[](std::string const & name) const; /// set parameter \p name @@ -71,21 +79,25 @@ public: private: /// - struct CommandInfo { - /// Number of parameters - size_t n; - /// Parameter names. paramnames[n] must be "". - char const * const * paramnames; - /// Tells whether a parameter is optional - bool const * optional; - }; - /// Get information for command \p name. - /// Returns 0 if the command is not known. - static CommandInfo const * findInfo(std::string const & name); + /// Get information for inset type \p code. + /// Returns 0 if the inset is not known. + static CommandInfo const * findInfo(InsetCode code); + /// Get information for \p code and command \p cmdName. + /// Returns 0 if the combination is not known. + /// Don't call this without first making sure the command name is + /// acceptable to the inset. + static CommandInfo const * findInfo(InsetCode code, + std::string const & cmdName); + /// + static bool isCompatibleCommand(InsetCode code, std::string const & s); + /// + std::string getDefaultCmd(InsetCode); /// Description of all command properties CommandInfo const * info_; + /// what kind of inset we're the parameters for + InsetCode insetCode_; /// The name of this command as it appears in .lyx and .tex files - std::string name_; + std::string cmdName_; /// typedef std::vector ParamVector; /// The parameters (both optional and required ones). The order is