]> git.lyx.org Git - lyx.git/blobdiff - src/BranchList.h
Avoid full metrics computation with Update:FitCursor
[lyx.git] / src / BranchList.h
index 00814ab95722e2aa3258bfd257a10d339f19f689..7bf435217de502f102a968bd4c1ce8a2ea1c296c 100644 (file)
@@ -3,11 +3,26 @@
  * \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.
- *
- *
+ */
+
+#ifndef BRANCHLIST_H
+#define BRANCHLIST_H
+
+#include "ColorCode.h"
+
+#include "support/docstring.h"
+
+#include <cstdlib> // rand()
+#include <list>
+
+
+namespace lyx {
+
+/**
  * \class Branch
  *
  * A class describing a 'branch', i.e., a named alternative for
  * other parts.
  *
  * A branch has a name, can either be selected or not, and uses a
- * user-specifyable background colour. All these can be set and
+ * user-specifiable background colour. All these can be set and
  * queried.
  *
  * \class BranchList
  *
  * A class containing a vector of all defined branches within a
- * document. Has methods for selecting or deselecting branches by
+ * document. It has methods for selecting or deselecting branches by
  * name, for outputting a '|'-separated string of all elements or only
  * the selected ones, and for adding and removing elements.
  */
 
-
-#ifndef BRANCHES_H
-#define BRANCHES_H
-
-#include "ColorCode.h"
-
-#include "support/docstring.h"
-
-#include <list>
-
-
-namespace lyx {
-
-
 class Branch {
 public:
        ///
-       Branch();
+       Branch() {}
        ///
-       docstring const & getBranch() const;
+       docstring const & branch() const;
        ///
        void setBranch(docstring const &);
        ///
-       bool getSelected() const;
+       bool isSelected() const;
        /** Select/deselect the branch.
         *  \return true if the selection status changes.
         */
        bool setSelected(bool);
+       /** If true, the branch name will be appended
+        *  to the output file name.
+        */
+       bool hasFileNameSuffix() const;
+       /// Select/deselect filename suffix property.
+       void setFileNameSuffix(bool);
+       ///
+       void setListID(int const id) { branch_list_id_ = id; }
        ///
-       RGBColor const & getColor() const;
+       std::string const & color() const;
        ///
-       void setColor(RGBColor const &);
+       std::string const & lightModeColor() const;
+       ///
+       std::string const & darkModeColor() const;
        /**
-        * Set color from a string "#rrggbb".
+        * Set background color from a hexcolor string "#rrggbb" or a lyx color name.
         * 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.
+        * This sets the dark color if in dark mode, else the light color.
         */
-       void setColor(std::string const &);
+       void setColor(std::string const & color);
+       /// Set dark and light background colors
+       void setColors(std::string const & color,
+                     std::string const & dmcolor = std::string());
+       ///
+       int listID() const { return branch_list_id_; }
 
 private:
        ///
        docstring branch_;
        ///
-       bool selected_;
+       bool selected_ = false;
        ///
-       RGBColor color_;
+       bool filenameSuffix_ = false;
+       /// light mode background color
+       std::string lmcolor_ = "background";
+       /// dark mode background color
+       std::string dmcolor_ = "background";
+       ///
+       int branch_list_id_ = 0;
 };
 
 
@@ -83,15 +106,21 @@ public:
        typedef List::const_iterator const_iterator;
 
        ///
-       BranchList() : separator_(from_ascii("|")) {}
+       BranchList() : separator_(from_ascii("|")), id_(rand()) {}
+
+       ///
+       docstring separator() const { return separator_; }
+
+       ///
+       int id() const { return id_; }
 
        ///
-       bool empty() const { return list.empty(); }
+       bool empty() const { return list_.empty(); }
        ///
-       void clear() { list.clear(); }
+       void clear() { list_.clear(); }
        ///
-       const_iterator begin() const { return list.begin(); }
-       const_iterator end() const { return list.end(); }
+       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.
         */
@@ -106,17 +135,24 @@ public:
         *  \returns true if a branch is removed.
         */
        bool remove(docstring const &);
+       /** rename an branch in list
+        *  \returns true if renaming succeeded.
+        * if \p merge is true, the branch will be removed
+        * if a branch with the newname already exists.
+        */
+       bool rename(docstring const &, docstring const &, bool const merge = false);
+       /// get the complete filename suffix
+       docstring getFileNameSuffix() const;
 
 private:
        ///
-       List list;
+       List list_;
        ///
        docstring separator_;
+       ///
+       int id_;
 };
 
-
-
-
 } // namespace lyx
 
-#endif
+#endif // BRANCHLIST_H