-// -*- C++ -*-
+// -*- C++ -*-
/**
- * \file BranchList.h
+ * \file BranchList.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
* \author Martin Vermeer
- *
+ *
* Full author contact details are available in file CREDITS.
*
*
* A branch has a name, can either be selected or not, and uses a
* user-specifyable background colour. All these can be set and
* queried.
- *
+ *
* \class BranchList
*
* A class containing a vector of all defined branches within a
*/
-#ifndef BRANCHES_H
-#define BRANCHES_H
+#ifndef BRANCHLIST_H
+#define BRANCHLIST_H
+
+#include "ColorCode.h"
+
+#include "support/docstring.h"
-#include "LString.h"
#include <list>
+
+namespace lyx {
+
class Branch {
public:
///
- string const getBranch() const;
+ Branch();
///
- void setBranch(string const &);
+ docstring const & branch() const;
///
- bool getSelected() const;
+ void setBranch(docstring const &);
///
- void setSelected(bool);
- ///
- string const getColor() const;
+ bool isSelected() const;
+ /** Select/deselect the branch.
+ * \return true if the selection status changes.
+ */
+ bool setSelected(bool);
///
- void setColor(string 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:
///
- string branch_;
+ docstring branch_;
///
bool selected_;
///
- string color_;
+ RGBColor color_;
};
class BranchList {
-public:
- ///
- BranchList() : separator_("|") {}
-
///
typedef std::list<Branch> List;
+public:
+ typedef List::const_iterator const_iterator;
///
- void clear();
- ///
- bool empty() { return list.empty(); }
- ///
- bool size() const { return list.size(); }
- ///
- List::const_iterator begin() const { return list.begin(); }
+ BranchList() : separator_(from_ascii("|")) {}
+
///
- List::const_iterator end() const { return list.end(); }
+ bool empty() const { return list.empty(); }
///
- string getColor(string const &) const;
- ///
- void setColor(string const &, string const &);
- /// Select/deselect multiple branches given in '|'-separated string
- void setSelected(string const &, bool);
- /// Add multiple branches to list
- void add(string const &);
- /// remove a branch from list by name
- void remove(string const &);
- /// return whether this branch is selected
- bool selected(string const &) const;
- /// return, as a '|'-separated string, all branch names
- string allBranches() const;
- ///
- string allSelected() const;
+ void clear() { list.clear(); }
///
- string const separator() const;
-
+ const_iterator begin() const { return list.begin(); }
+ const_iterator end() const { return list.end(); }
+
+ /** \returns the Branch with \c name. If not found, returns 0.
+ */
+ Branch * find(docstring const & name);
+ Branch const * find(docstring const & name) const;
+
+ /** Add (possibly multiple (separated by separator())) branches to list
+ * \returns true if a branch is added.
+ */
+ bool add(docstring const &);
+ /** remove a branch from list by name
+ * \returns true if a branch is removed.
+ */
+ bool remove(docstring const &);
+
private:
///
List list;
///
- string separator_;
+ docstring separator_;
};
-#endif
+} // namespace lyx
+
+#endif // BRANCHLIST_H