lyx_mirror/src/insets/InsetListingsParams.h
Richard Heck 072ed23ffc Patch from Bo. Fixes problem with labels in child docs of the listings type:
Duplicate labels were not being updated.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28556 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-19 04:50:25 +00:00

98 lines
2.2 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 <map>
#include <exception>
#include "Lexer.h"
#include "InsetCollapsable.h"
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; }
/// 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:
/// inline or normal listings
bool inline_;
/// key-value pairs of the parameters
std::map<std::string, std::string> params_;
/// collapsable status
InsetCollapsable::CollapseStatus status_;
};
} // namespace lyx
#endif