#ifndef BRANCHES_H
#define BRANCHES_H
-#include <string>
+#include "Color.h"
+
+#include "support/docstring.h"
+
#include <list>
+namespace lyx {
+
+
class Branch {
public:
///
- std::string const & getBranch() const;
+ Branch();
///
- void setBranch(std::string const &);
+ docstring const & getBranch() const;
+ ///
+ void setBranch(docstring const &);
///
bool getSelected() const;
/** Select/deselect the branch.
*/
bool setSelected(bool);
///
- std::string const & getColor() const;
+ RGBColor const & getColor() const;
///
+ void setColor(RGBColor const &);
+ /**
+ * Set color from a string "#rrggbb".
+ * Use LColor: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 LColor:background.
+ */
void setColor(std::string const &);
-
private:
///
- std::string branch_;
+ docstring branch_;
///
bool selected_;
///
- std::string color_;
+ RGBColor color_;
};
typedef List::const_iterator const_iterator;
///
- BranchList() : separator_("|") {}
+ BranchList() : separator_(from_ascii("|")) {}
///
- bool empty() { return list.empty(); }
+ 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 Branch with \c name. If not found, returns 0.
*/
- Branch * find(std::string const & name);
- Branch const * find(std::string const & name) const;
+ 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(std::string const &);
+ bool add(docstring const &);
/** remove a branch from list by name
* \returns true if a branch is removed.
*/
- bool remove(std::string const &);
+ bool remove(docstring const &);
private:
///
List list;
///
- std::string separator_;
+ docstring separator_;
};
+
+class BranchNamesEqual : public std::unary_function<Branch, bool> {
+public:
+ BranchNamesEqual(docstring const & name)
+ : name_(name) {}
+ bool operator()(Branch const & branch) const
+ {
+ return branch.getBranch() == name_;
+ }
+private:
+ docstring name_;
+};
+
+
+} // namespace lyx
+
#endif