]> git.lyx.org Git - lyx.git/blobdiff - src/BranchList.h
Fixed some lines that were too long. It compiled afterwards.
[lyx.git] / src / BranchList.h
index 3b6b2554fe63d4e64a04eee89fa28f1c4f82f569..0da9fe261f5e4b456dc55a784ce822c3aaa05d54 100644 (file)
@@ -1,10 +1,10 @@
-// -*- 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.
  *
  *
@@ -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
 #ifndef BRANCHES_H
 #define BRANCHES_H
 
-#include "LString.h"
+#include "Color.h"
+
 #include <list>
 
+
+namespace lyx {
+
+
 class Branch {
 public:
        ///
-       string const getBranch() const;
-       ///
-       void setBranch(string const &);
+       Branch();
        ///
-       bool getSelected() const;
+       docstring const & getBranch() 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 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_;
 };
 
+
+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