X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBranchList.h;h=7bf435217de502f102a968bd4c1ce8a2ea1c296c;hb=b198a36a363bb6a084407d476942d68ef5fb5e86;hp=e284aa43d0c0d2c0a59eb9d8c4d99094833991a1;hpb=236ea81bc5c0ce7101c9460d1ee97b8f3c9be9df;p=lyx.git diff --git a/src/BranchList.h b/src/BranchList.h index e284aa43d0..7bf435217d 100644 --- a/src/BranchList.h +++ b/src/BranchList.h @@ -1,13 +1,28 @@ -// -*- 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. * + * \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 // rand() +#include + + +namespace lyx { + +/** * \class Branch * * A class describing a 'branch', i.e., a named alternative for @@ -15,92 +30,129 @@ * 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 "support/std_string.h" -#include - 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); + /** 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 setColor(string const &); - + void setListID(int const id) { branch_list_id_ = id; } + /// + std::string const & color() const; + /// + std::string const & lightModeColor() const; + /// + std::string const & darkModeColor() const; + /** + * 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 & 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: /// - string branch_; + docstring branch_; /// - bool selected_; + bool selected_ = false; /// - string 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; }; class BranchList { -public: - /// - BranchList() : separator_("|") {} - /// typedef std::list List; +public: + typedef List::const_iterator const_iterator; /// - void clear(); - /// - bool empty() { return list.empty(); } + BranchList() : separator_(from_ascii("|")), id_(rand()) {} + /// - bool size() const { return list.size(); } + docstring separator() const { return separator_; } + /// - List::const_iterator begin() const { return list.begin(); } + int id() const { return id_; } + /// - 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 &); + /** 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_; /// - string separator_; + docstring separator_; + /// + int id_; }; -#endif +} // namespace lyx + +#endif // BRANCHLIST_H