X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetListingsParams.h;h=ddcca62f23a2b9d32439fa05b2b68199950a7a80;hb=59e6610d8ad4d5c5a81d9a6b4ef73ae36231489a;hp=6341bb994e35071a84a3125c52dfac70444415a9;hpb=05439b953b58286d0a576ec4268726baf2a43c46;p=lyx.git diff --git a/src/insets/InsetListingsParams.h b/src/insets/InsetListingsParams.h index 6341bb994e..ddcca62f23 100644 --- a/src/insets/InsetListingsParams.h +++ b/src/insets/InsetListingsParams.h @@ -12,10 +12,9 @@ #ifndef INSETLISTINGSPARAMS_H #define INSETLISTINGSPARAMS_H +#include "InsetCaptionable.h" + #include -#include -#include "Lexer.h" -#include "InsetCollapsable.h" namespace lyx { @@ -26,7 +25,7 @@ public: /// InsetListingsParams(std::string const &, bool in=false, - InsetCollapsable::CollapseStatus s = InsetCollapsable::Open); + InsetCollapsible::CollapseStatus s = InsetCollapsible::Open); /// write parameters to an ostream void write(std::ostream &) const; @@ -35,12 +34,12 @@ public: void read(Lexer &); /// valid parameter string - /// \param valid_key whether or not strip leading @, which is - /// used to bypass validator - std::string params(std::string const & sep=",", bool valid_key=false) const; + std::string params(std::string const & sep=",") const; - /// add key=value to params_ - void addParam(std::string const & key, std::string const & value); + /// add key=value to params_. key_=value will be used if key=value already exists + /// unless replace=true. + void addParam(std::string const & key, std::string const & value, + bool replace = false); /// add a few parameters void addParams(std::string const & par); @@ -66,42 +65,48 @@ public: bool isFloat() const; /// - InsetCollapsable::CollapseStatus status() const { return status_; } + InsetCollapsible::CollapseStatus status() const { return status_; } /// void setInline(bool i) { inline_ = i; } + /// + void setMinted(bool use_minted) { package_ = use_minted ? 1 : 0; } + + /// + static int package() { return package_; } + + /// + bool minted() { return package_ == 1; } + /// get value of option \c param std::string getParamValue(std::string const & param) const; /// void clear() { params_.clear(); } + /// validate parameter, return an error message + docstring validate() const; + private: + /// listings or minted package (0 or 1, respectively) + static int package_; + /// inline or normal listings bool inline_; - /// key-value pairs of the parameters - std::map params_; - - /// collapsable status - InsetCollapsable::CollapseStatus status_; -}; - + /// Do we have a param with the given \c key? + bool hasParam(std::string const & key) const; + /// return the value for the given \c key, if avaible, else empty string + std::string getValue(std::string const & key) const; -class invalidParam : public std::exception { -public: - invalidParam(docstring const & details) - : details_(to_utf8(details)) - {} - - virtual const char * what() const throw() { - return details_.c_str(); - } + /// key-value pairs of the parameters + // Use a vector of pairs in order to maintain the order of insertion. + typedef std::vector > keyValuePair; + keyValuePair params_; - virtual ~invalidParam() throw() {} -private: - std::string const details_; + /// collapsible status + InsetCollapsible::CollapseStatus status_; };