2009-04-16 07:29:01 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/**
|
|
|
|
* \file IndicesList.h
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
2010-05-03 13:36:19 +00:00
|
|
|
*
|
2009-04-16 07:29:01 +00:00
|
|
|
* \author Jürgen Spitzmüller
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef INDICESLIST_H
|
|
|
|
#define INDICESLIST_H
|
|
|
|
|
|
|
|
#include "ColorCode.h"
|
|
|
|
|
|
|
|
#include "support/docstring.h"
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
|
|
|
|
|
|
namespace lyx {
|
|
|
|
|
2010-05-03 13:36:19 +00:00
|
|
|
/**
|
|
|
|
* \class Index
|
|
|
|
*
|
|
|
|
* A class describing an Index type, such as "Index of Names".
|
2012-06-05 10:22:13 +00:00
|
|
|
* Different Index types are used in split Indices
|
2010-05-03 13:36:19 +00:00
|
|
|
*
|
|
|
|
* An Index has a name and a shortcut notation. It uses a
|
|
|
|
* user-specifiable GUI colour. All these can be set and
|
|
|
|
* queried.
|
|
|
|
*
|
|
|
|
* \class IndicesList
|
|
|
|
*
|
|
|
|
* A class containing a vector of all defined indices within a
|
|
|
|
* document. It has methods for outputting a '|'-separated string
|
|
|
|
* of all elements, and for adding, removing and renaming elements.
|
|
|
|
*/
|
|
|
|
|
2009-04-16 07:29:01 +00:00
|
|
|
class Index {
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
Index();
|
|
|
|
///
|
|
|
|
docstring const & index() const;
|
|
|
|
///
|
|
|
|
void setIndex(docstring const &);
|
|
|
|
///
|
|
|
|
docstring const & shortcut() const;
|
|
|
|
///
|
|
|
|
void setShortcut(docstring const &);
|
|
|
|
///
|
|
|
|
RGBColor const & color() const;
|
|
|
|
///
|
|
|
|
void setColor(RGBColor const &);
|
|
|
|
/**
|
|
|
|
* Set color from a string "#rrggbb".
|
|
|
|
* Use Color:background if the string is no valid color.
|
|
|
|
* This ensures compatibility with LyX 1.4.0 that had the symbolic
|
|
|
|
* color "none" that was displayed as Color:background.
|
|
|
|
*/
|
|
|
|
void setColor(std::string const &);
|
|
|
|
|
|
|
|
private:
|
|
|
|
///
|
|
|
|
docstring index_;
|
|
|
|
///
|
|
|
|
docstring shortcut_;
|
|
|
|
///
|
|
|
|
RGBColor color_;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class IndicesList {
|
|
|
|
///
|
|
|
|
typedef std::list<Index> List;
|
|
|
|
public:
|
|
|
|
typedef List::const_iterator const_iterator;
|
|
|
|
|
|
|
|
///
|
|
|
|
IndicesList() : separator_(from_ascii("|")) {}
|
|
|
|
|
|
|
|
///
|
|
|
|
bool empty() const { return list.empty(); }
|
|
|
|
///
|
|
|
|
void clear() { list.clear(); }
|
|
|
|
///
|
|
|
|
const_iterator begin() const { return list.begin(); }
|
|
|
|
const_iterator end() const { return list.end(); }
|
|
|
|
|
|
|
|
/** \returns the Index with \c name. If not found, returns 0.
|
|
|
|
*/
|
|
|
|
Index * find(docstring const & name);
|
|
|
|
Index const * find(docstring const & name) const;
|
|
|
|
|
|
|
|
/** \returns the Index with the shortcut \c shortcut.
|
|
|
|
* If not found, returns 0.
|
|
|
|
*/
|
|
|
|
Index * findShortcut(docstring const & shortcut);
|
|
|
|
Index const * findShortcut(docstring const & shortcut) const;
|
|
|
|
|
|
|
|
/** Add (possibly multiple (separated by separator())) indices to list
|
|
|
|
* \returns true if an index is added.
|
|
|
|
*/
|
|
|
|
bool add(docstring const & n, docstring const & s = docstring());
|
|
|
|
/** Add the default index (if not already there)
|
|
|
|
* \returns true if an index is added.
|
|
|
|
*/
|
|
|
|
bool addDefault(docstring const & n);
|
|
|
|
/** remove an index from list by name
|
|
|
|
* \returns true if an index is removed.
|
|
|
|
*/
|
|
|
|
bool remove(docstring const &);
|
|
|
|
/** rename an index in list
|
|
|
|
* \returns true if renaming succeeded.
|
|
|
|
*/
|
|
|
|
bool rename(docstring const &, docstring const &);
|
|
|
|
|
|
|
|
private:
|
|
|
|
///
|
|
|
|
List list;
|
|
|
|
///
|
|
|
|
docstring separator_;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
|
|
|
|
#endif // INDICESLIST_H
|