X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBranchList.h;h=dd89a261d765e601e26d42c6e0c317a38766dc76;hb=27a777ccc624b19c5d1961a6279c0db97594c0fb;hp=152ac58f78ebf1af28804d3e9e083a53d4867776;hpb=5fc41035a48ca62a79abe32bc32c76d7cc578370;p=lyx.git diff --git a/src/BranchList.h b/src/BranchList.h index 152ac58f78..dd89a261d7 100644 --- a/src/BranchList.h +++ b/src/BranchList.h @@ -1,11 +1,11 @@ -// -*- 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 + * + * Full author contact details are available in file CREDITS. * * * \class Branch @@ -17,7 +17,7 @@ * 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 @@ -30,77 +30,104 @@ #ifndef BRANCHES_H #define BRANCHES_H -#include "LString.h" +#include "Color.h" + +#include "support/docstring.h" + #include + +namespace lyx { + + class Branch { public: /// - string const getBranch() const; + Branch(); /// - void setBranch(string const &); + docstring const & getBranch() const; /// - bool getSelected() const; - /// - void setSelected(bool); - /// - string const getColor() const; + void setBranch(docstring const &); /// - void setColor(string const &); - + bool getSelected() const; + /** Select/deselect the branch. + * \return true if the selection status changes. + */ + bool setSelected(bool); + /// + 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: /// - string branch_; + docstring branch_; /// bool selected_; /// - string color_; + RGBColor color_; }; class BranchList { -public: - /// - BranchList() : separator_("|") {} - /// typedef std::list 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_; }; + +class BranchNamesEqual : public std::unary_function { +public: + BranchNamesEqual(docstring const & name) + : name_(name) {} + bool operator()(Branch const & branch) const + { + return branch.getBranch() == name_; + } +private: + docstring name_; +}; + + +} // namespace lyx + #endif