lyx_mirror/src/insets/InsetListingsParams.h
Enrico Forestieri 8dab1cfe7e Fix bug #9101
Update the listings inset to optionally use the minted package
(instead of the listings one) for typesetting code listings.
Only one of the two packages can be used in a document, but it
is possible to switch packages without issues if the used options
are the same. If a switch is made and the options differ, one needs
to manually adjust them if they were entered in the advanced options
tab, or apply again the gui settings.
Note that minted requires the -shell-escape option for the latex
backend and the installation of additional software (python pygments).
2017-06-07 00:55:23 +02:00

113 lines
2.7 KiB
C++

// -*- C++ -*-
/**
* \file InsetListingsParams.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Bo Peng
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSETLISTINGSPARAMS_H
#define INSETLISTINGSPARAMS_H
#include "InsetCaptionable.h"
#include <map>
namespace lyx {
class InsetListingsParams {
public:
///
InsetListingsParams();
///
InsetListingsParams(std::string const &, bool in=false,
InsetCollapsable::CollapseStatus s = InsetCollapsable::Open);
/// write parameters to an ostream
void write(std::ostream &) const;
/// read parameters from an ostream
void read(Lexer &);
/// valid parameter string
std::string params(std::string const & sep=",") const;
/// 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);
/// set params_ with par, throw an exception if par is valid
void setParams(std::string const & par);
/// generate a parameter string that can be safely save and restored
/// by lyx' lexer
std::string encodedString() const;
/// newline (\n) separated parameters. comma can be removed.
/// One possible complication is that , may appear in option value.
std::string separatedParams(bool keepComma = false) const;
/// get parameter from encoded string
void fromEncodedString(std::string const & par);
///
bool isInline() const { return inline_; }
///
bool isFloat() const;
///
InsetCollapsable::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_; }
/// 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_;
/// 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;
/// key-value pairs of the parameters
// Use a vector of pairs in order to maintain the order of insertion.
typedef std::vector<std::pair<std::string, std::string> > keyValuePair;
keyValuePair params_;
/// collapsable status
InsetCollapsable::CollapseStatus status_;
};
} // namespace lyx
#endif