mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-21 23:09:40 +00:00
Overhaul the branches code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8247 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
83ceb3c57b
commit
1cad117882
137
src/BranchList.C
137
src/BranchList.C
@ -22,7 +22,7 @@ using std::bind2nd;
|
||||
using std::binary_function;
|
||||
|
||||
|
||||
string const Branch::getBranch() const
|
||||
string const & Branch::getBranch() const
|
||||
{
|
||||
return branch_;
|
||||
}
|
||||
@ -40,13 +40,16 @@ bool Branch::getSelected() const
|
||||
}
|
||||
|
||||
|
||||
void Branch::setSelected(bool b)
|
||||
bool Branch::setSelected(bool b)
|
||||
{
|
||||
if (b == selected_)
|
||||
return false;
|
||||
selected_ = b;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
string const Branch::getColor() const
|
||||
string const & Branch::getColor() const
|
||||
{
|
||||
return color_;
|
||||
}
|
||||
@ -58,60 +61,41 @@ void Branch::setColor(string const & c)
|
||||
}
|
||||
|
||||
|
||||
void BranchList::clear()
|
||||
namespace {
|
||||
|
||||
struct SameName {
|
||||
SameName(string const & name) : name_(name) {}
|
||||
bool operator()(Branch const & branch) const
|
||||
{ return branch.getBranch() == name_; }
|
||||
private:
|
||||
string name_;
|
||||
};
|
||||
|
||||
}// namespace anon
|
||||
|
||||
|
||||
Branch * BranchList::find(std::string const & name)
|
||||
{
|
||||
list.clear();
|
||||
List::iterator it =
|
||||
std::find_if(list.begin(), list.end(), SameName(name));
|
||||
return it == list.end() ? 0 : &*it;
|
||||
}
|
||||
|
||||
|
||||
string BranchList::getColor(string const & s) const
|
||||
|
||||
Branch const * BranchList::find(std::string const & name) const
|
||||
{
|
||||
List::const_iterator it = list.begin();
|
||||
List::const_iterator end = list.end();
|
||||
for (; it != end; ++it) {
|
||||
if (s == it->getBranch()) {
|
||||
return it->getColor();
|
||||
}
|
||||
}
|
||||
BOOST_ASSERT(false); // Always
|
||||
return string(); // never gets here
|
||||
List::const_iterator it =
|
||||
std::find_if(list.begin(), list.end(), SameName(name));
|
||||
return it == list.end() ? 0 : &*it;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void BranchList::setColor(string const & s, string const & val)
|
||||
{
|
||||
List::iterator it = list.begin();
|
||||
List::iterator end = list.end();
|
||||
for (; it != end; ++it) {
|
||||
if (s == it->getBranch()) {
|
||||
it->setColor(val);
|
||||
return;
|
||||
}
|
||||
}
|
||||
BOOST_ASSERT(false);
|
||||
}
|
||||
|
||||
|
||||
void BranchList::setSelected(string const & s, bool val)
|
||||
{
|
||||
List::iterator it = list.begin();
|
||||
List::iterator end = list.end();
|
||||
for (; it != end; ++it) {
|
||||
if (s == it->getBranch()) {
|
||||
it->setSelected(val);
|
||||
return;
|
||||
}
|
||||
}
|
||||
BOOST_ASSERT(false);
|
||||
}
|
||||
|
||||
|
||||
void BranchList::add(string const & s)
|
||||
|
||||
bool BranchList::add(string const & s)
|
||||
{
|
||||
bool added = false;
|
||||
string::size_type i = 0;
|
||||
while (true) {
|
||||
string::size_type const j = s.find_first_of(separator(), i);
|
||||
string::size_type const j = s.find_first_of(separator_, i);
|
||||
string name;
|
||||
if (j == string::npos)
|
||||
name = s.substr(i);
|
||||
@ -128,6 +112,7 @@ void BranchList::add(string const & s)
|
||||
}
|
||||
}
|
||||
if (!already) {
|
||||
added = true;
|
||||
Branch br;
|
||||
br.setBranch(name);
|
||||
br.setSelected(false);
|
||||
@ -138,6 +123,7 @@ void BranchList::add(string const & s)
|
||||
break;
|
||||
i = j + 1;
|
||||
}
|
||||
return added;
|
||||
}
|
||||
|
||||
|
||||
@ -152,58 +138,9 @@ struct match : public binary_function<Branch, string, bool> {
|
||||
} // namespace anon.
|
||||
|
||||
|
||||
void BranchList::remove(string const & s)
|
||||
bool BranchList::remove(string const & s)
|
||||
{
|
||||
List::size_type const size = list.size();
|
||||
list.remove_if(bind2nd(match(), s));
|
||||
}
|
||||
|
||||
|
||||
bool BranchList::selected(string const & s) const
|
||||
{
|
||||
List::const_iterator it = list.begin();
|
||||
List::const_iterator end = list.end();
|
||||
for (; it != end; ++it) {
|
||||
if (s == it->getBranch())
|
||||
return it->getSelected();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
string BranchList::allBranches() const
|
||||
{
|
||||
List::const_iterator it = list.begin();
|
||||
List::const_iterator end = list.end();
|
||||
string ret;
|
||||
for (; it != end; ++it) {
|
||||
ret += it->getBranch() + separator();
|
||||
}
|
||||
// remove final '|':
|
||||
string::size_type i = ret.find_last_of(separator());
|
||||
if (i != string::npos)
|
||||
ret.erase(i);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
string BranchList::allSelected() const
|
||||
{
|
||||
List::const_iterator it = list.begin();
|
||||
List::const_iterator end = list.end();
|
||||
string ret;
|
||||
for (; it != end; ++it) {
|
||||
if (it->getSelected())
|
||||
ret += it->getBranch() + separator();
|
||||
}
|
||||
// remove final '|':
|
||||
string::size_type i = ret.find_last_of(separator());
|
||||
if (i != string::npos)
|
||||
ret.erase(i);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
string const BranchList::separator() const
|
||||
{
|
||||
return separator_;
|
||||
return size != list.size();
|
||||
}
|
||||
|
@ -37,15 +37,17 @@
|
||||
class Branch {
|
||||
public:
|
||||
///
|
||||
std::string const getBranch() const;
|
||||
std::string const & getBranch() const;
|
||||
///
|
||||
void setBranch(std::string const &);
|
||||
///
|
||||
bool getSelected() const;
|
||||
/** Select/deselect the branch.
|
||||
* \return true if the selection status changes.
|
||||
*/
|
||||
bool setSelected(bool);
|
||||
///
|
||||
void setSelected(bool);
|
||||
///
|
||||
std::string const getColor() const;
|
||||
std::string const & getColor() const;
|
||||
///
|
||||
void setColor(std::string const &);
|
||||
|
||||
@ -61,41 +63,33 @@ private:
|
||||
|
||||
|
||||
class BranchList {
|
||||
///
|
||||
typedef std::list<Branch> List;
|
||||
public:
|
||||
typedef List::const_iterator const_iterator;
|
||||
|
||||
///
|
||||
BranchList() : separator_("|") {}
|
||||
|
||||
///
|
||||
typedef std::list<Branch> List;
|
||||
|
||||
///
|
||||
void clear();
|
||||
///
|
||||
bool empty() { return list.empty(); }
|
||||
///
|
||||
bool size() const { return list.size(); }
|
||||
///
|
||||
List::const_iterator begin() const { return list.begin(); }
|
||||
///
|
||||
List::const_iterator end() const { return list.end(); }
|
||||
///
|
||||
std::string getColor(std::string const &) const;
|
||||
///
|
||||
void setColor(std::string const &, std::string const &);
|
||||
/// Select/deselect multiple branches given in '|'-separated string
|
||||
void setSelected(std::string const &, bool);
|
||||
/// Add multiple branches to list
|
||||
void add(std::string const &);
|
||||
/// remove a branch from list by name
|
||||
void remove(std::string const &);
|
||||
/// return whether this branch is selected
|
||||
bool selected(std::string const &) const;
|
||||
/// return, as a '|'-separated string, all branch names
|
||||
std::string allBranches() const;
|
||||
///
|
||||
std::string allSelected() const;
|
||||
///
|
||||
std::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(std::string const & name);
|
||||
Branch const * find(std::string const & name) const;
|
||||
|
||||
/** Add (possibly multiple (separated by separator())) branches to list
|
||||
* \returns true if a branch is added.
|
||||
*/
|
||||
bool add(std::string const &);
|
||||
/** remove a branch from list by name
|
||||
* \returns true if a branch is removed.
|
||||
*/
|
||||
bool remove(std::string const &);
|
||||
|
||||
private:
|
||||
///
|
||||
|
@ -1,3 +1,32 @@
|
||||
2003-12-14 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
BranchList.[Ch]: minimize the API.
|
||||
(Branch::getBranch, getColor): now return a 'const &'.
|
||||
(Branch::setSelected) now returns a bool set to true if the
|
||||
selection status changes.
|
||||
(BranchList::clear, size, getColor, setColor, setSelected,
|
||||
allBranches, allSelected, separator): removed.
|
||||
(BranchList::find): new functions, returning the Branch with
|
||||
the given name.
|
||||
(BranchList::add, remove): return a bool indicating that
|
||||
the operation was successful.
|
||||
|
||||
* InsetList.C (insetsOpenCloseBranch): much simplified thanks to a
|
||||
new InsetBranch::isBranchSlected member function.
|
||||
|
||||
* LColor.[Ch]: mimimize the API.
|
||||
(fill): renamed as addColor and made private.
|
||||
(setColor, getGUIName, getX11Name, getLaTeXName): the overloaded
|
||||
versions of these functions taking a string arg have been removed.
|
||||
|
||||
* bufferparams.C (readToken):
|
||||
* lyxfunc.C (dispatch):
|
||||
* lyxrc.C (read): changes due to the altered BranchList and
|
||||
LColor APIs.
|
||||
|
||||
* factory.C (createInset, readInset): changes due to altered
|
||||
InsetBranch c-tor.
|
||||
|
||||
2003-12-14 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
|
||||
|
||||
* factory.C:
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
#include "buffer.h"
|
||||
#include "bufferparams.h"
|
||||
#include "BranchList.h"
|
||||
#include "BufferView.h"
|
||||
#include "debug.h"
|
||||
|
||||
@ -139,13 +140,15 @@ void InsetList::insetsOpenCloseBranch(Buffer const & buf)
|
||||
List::iterator it = list.begin();
|
||||
List::iterator end = list.end();
|
||||
for (; it != end; ++it) {
|
||||
if (it->inset && it->inset->lyxCode() == InsetOld::BRANCH_CODE) {
|
||||
InsetBranch * inset = static_cast<InsetBranch *>(it->inset);
|
||||
if (buf.params().branchlist().selected(inset->params().branch)) {
|
||||
inset->open();
|
||||
} else {
|
||||
inset->close();
|
||||
}
|
||||
if (!it->inset ||
|
||||
it->inset->lyxCode() != InsetOld::BRANCH_CODE)
|
||||
continue;
|
||||
|
||||
InsetBranch * inset = static_cast<InsetBranch *>(it->inset);
|
||||
if (inset->isBranchSelected(buf.params().branchlist())) {
|
||||
inset->open();
|
||||
} else {
|
||||
inset->close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
144
src/LColor.C
144
src/LColor.C
@ -41,12 +41,6 @@ struct ColorEntry {
|
||||
|
||||
}
|
||||
|
||||
struct TransformEntry {
|
||||
char const * lyxname;
|
||||
int ncolor;
|
||||
};
|
||||
|
||||
|
||||
struct LColor::Pimpl {
|
||||
///
|
||||
struct information {
|
||||
@ -172,152 +166,92 @@ void LColor::operator=(LColor const & c)
|
||||
}
|
||||
|
||||
|
||||
void LColor::fill(LColor::color c,
|
||||
string const & lyxname,
|
||||
string const & x11name,
|
||||
string const & latexname,
|
||||
string const & guiname)
|
||||
{
|
||||
ColorEntry ce;
|
||||
ce.lcolor = c;
|
||||
ce.guiname = guiname.c_str();
|
||||
ce.latexname = latexname.c_str();
|
||||
ce.x11name = x11name.c_str();
|
||||
ce.lyxname = lyxname.c_str();
|
||||
pimpl_->fill(ce);
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getGUIName(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
if (ici != pimpl_->infotab.end())
|
||||
return _(ici->second.guiname);
|
||||
return "none";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getGUIName(string const & s) const
|
||||
{
|
||||
Pimpl::Transform::const_iterator ici = pimpl_->transform.find(s);
|
||||
if (ici != pimpl_->transform.end()) {
|
||||
Pimpl::InfoTab::const_iterator
|
||||
it = pimpl_->infotab.find(ici->second);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.guiname;
|
||||
}
|
||||
Pimpl::InfoTab::const_iterator it = pimpl_->infotab.find(c);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return _(it->second.guiname);
|
||||
return "none";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getX11Name(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
if (ici != pimpl_->infotab.end())
|
||||
return ici->second.x11name;
|
||||
Pimpl::InfoTab::const_iterator it = pimpl_->infotab.find(c);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.x11name;
|
||||
|
||||
lyxerr << "LyX internal error: Missing color"
|
||||
" entry in LColor.C for " << int(c) << endl;
|
||||
lyxerr << "Using black." << endl;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getX11Name(string const & s) const
|
||||
{
|
||||
Pimpl::Transform::const_iterator ici = pimpl_->transform.find(s);
|
||||
if (ici != pimpl_->transform.end()) {
|
||||
Pimpl::InfoTab::const_iterator
|
||||
it = pimpl_->infotab.find(ici->second);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.x11name;
|
||||
}
|
||||
lyxerr << "LyX internal error: Missing color"
|
||||
" entry in LColor.C for " << s << endl;
|
||||
lyxerr << "Using black." << endl;
|
||||
" entry in LColor.C for " << int(c) << '\n'
|
||||
<< "Using black." << endl;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getLaTeXName(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
if (ici != pimpl_->infotab.end())
|
||||
return ici->second.latexname;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getLaTeXName(string const & s) const
|
||||
{
|
||||
Pimpl::Transform::const_iterator ici = pimpl_->transform.find(s);
|
||||
if (ici != pimpl_->transform.end()) {
|
||||
Pimpl::InfoTab::const_iterator
|
||||
it = pimpl_->infotab.find(ici->second);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.latexname;
|
||||
}
|
||||
Pimpl::InfoTab::const_iterator it = pimpl_->infotab.find(c);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.latexname;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getLyXName(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
if (ici != pimpl_->infotab.end())
|
||||
return ici->second.lyxname;
|
||||
Pimpl::InfoTab::const_iterator it = pimpl_->infotab.find(c);
|
||||
if (it != pimpl_->infotab.end())
|
||||
return it->second.lyxname;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
size_t LColor::size() const
|
||||
bool LColor::setColor(LColor::color col, string const & x11name)
|
||||
{
|
||||
return pimpl_->infotab.size();
|
||||
}
|
||||
|
||||
|
||||
void LColor::setColor(LColor::color col, string const & x11name)
|
||||
{
|
||||
Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col);
|
||||
if (iti != pimpl_->infotab.end()) {
|
||||
iti->second.x11name = x11name;
|
||||
return;
|
||||
Pimpl::InfoTab::iterator it = pimpl_->infotab.find(col);
|
||||
if (it == pimpl_->infotab.end()) {
|
||||
lyxerr << "Color " << col << " not found in database."
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
lyxerr << "LyX internal error: color and such." << endl;
|
||||
BOOST_ASSERT(false);
|
||||
}
|
||||
|
||||
|
||||
bool LColor::setColor(string const & lyxname, string const & x11name)
|
||||
{
|
||||
color col = getFromLyXName(lyxname);
|
||||
|
||||
// "inherit" is returned for colors not in the database
|
||||
// (and anyway should not be redefined)
|
||||
if (col == inherit || col == ignore) {
|
||||
lyxerr << "Color " << lyxname << " is undefined or may not be"
|
||||
" redefined" << endl;
|
||||
if (col == none || col == inherit || col == ignore) {
|
||||
lyxerr << "Color " << getLyXName(col)
|
||||
<< " may not be redefined" << endl;
|
||||
return false;
|
||||
}
|
||||
setColor(col, x11name);
|
||||
|
||||
it->second.x11name = x11name;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
LColor::color LColor::getFromGUIName(string const & guiname) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin();
|
||||
Pimpl::InfoTab::const_iterator it = pimpl_->infotab.begin();
|
||||
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||
for (; ici != end; ++ici) {
|
||||
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
||||
return static_cast<LColor::color>(ici->first);
|
||||
for (; it != end; ++it) {
|
||||
if (!compare_ascii_no_case(_(it->second.guiname), guiname))
|
||||
return static_cast<LColor::color>(it->first);
|
||||
}
|
||||
return LColor::inherit;
|
||||
}
|
||||
|
||||
|
||||
void LColor::addColor(LColor::color c, string const & lyxname) const
|
||||
{
|
||||
ColorEntry ce = { c, "", "", "", lyxname.c_str() };
|
||||
pimpl_->fill(ce);
|
||||
}
|
||||
|
||||
|
||||
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
||||
{
|
||||
if (pimpl_->transform.find(lyxname) == pimpl_->transform.end())
|
||||
addColor(static_cast<color>(pimpl_->infotab.size()), lyxname);
|
||||
|
||||
return static_cast<LColor::color>(pimpl_->transform[lyxname]);
|
||||
}
|
||||
|
||||
|
39
src/LColor.h
39
src/LColor.h
@ -193,45 +193,30 @@ public:
|
||||
///
|
||||
void operator=(LColor const &);
|
||||
|
||||
///
|
||||
void fill(LColor::color c,
|
||||
std::string const & lyxname,
|
||||
std::string const & x11name = std::string(),
|
||||
std::string const & latexname = std::string(),
|
||||
std::string const & guiname = std::string());
|
||||
/** set the given LyX color to the color defined by the X11 name given
|
||||
* \returns true if successful.
|
||||
*/
|
||||
bool setColor(LColor::color col, std::string const & x11name);
|
||||
|
||||
/// set the given LyX color to the color defined by the X11 name given
|
||||
void setColor(LColor::color col, std::string const & x11name);
|
||||
/// set the given LyX color to the color defined by the X11 name given
|
||||
bool setColor(std::string const & lyxname, std::string const & x11name);
|
||||
|
||||
/// Get GUI name of color
|
||||
/// Get the GUI name of \c color.
|
||||
std::string const getGUIName(LColor::color c) const;
|
||||
///
|
||||
std::string const getGUIName(std::string const & s) const;
|
||||
|
||||
/// Get X11 name of color
|
||||
/// Get the X11 name of \c color.
|
||||
std::string const getX11Name(LColor::color c) const;
|
||||
///
|
||||
std::string const getX11Name(std::string const & s) const;
|
||||
|
||||
/// Get LaTeX name of color
|
||||
/// Get the LaTeX name of \c color.
|
||||
std::string const getLaTeXName(LColor::color c) const;
|
||||
///
|
||||
std::string const getLaTeXName(std::string const & s) const;
|
||||
|
||||
/// Get LyX name of color
|
||||
/// Get the LyX name of \c color.
|
||||
std::string const getLyXName(LColor::color c) const;
|
||||
/// (string-to-string version not needed as it is identity)
|
||||
|
||||
///
|
||||
size_t size() const;
|
||||
|
||||
/// get the color from the GUI name
|
||||
/// \returns the LColor::color associated with the GUI name.
|
||||
LColor::color getFromGUIName(std::string const & guiname) const;
|
||||
/// get the color from the LyX name
|
||||
/// \returns the LColor::color associated with the LyX name.
|
||||
LColor::color getFromLyXName(std::string const & lyxname) const;
|
||||
private:
|
||||
///
|
||||
void addColor(LColor::color c, std::string const & lyxname) const;
|
||||
///
|
||||
struct Pimpl;
|
||||
///
|
||||
|
@ -333,20 +333,22 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
|
||||
string const tok = lex.getString();
|
||||
if (tok == "\\end_branch")
|
||||
break;
|
||||
Branch * branch_ptr = branchlist().find(branch);
|
||||
if (tok == "\\selected") {
|
||||
lex.nextToken();
|
||||
branchlist().setSelected(branch, lex.getInteger());
|
||||
if (branch_ptr)
|
||||
branch_ptr->setSelected(lex.getInteger());
|
||||
}
|
||||
// not yet operational
|
||||
if (tok == "\\color") {
|
||||
lex.nextToken();
|
||||
string color = lex.getString();
|
||||
branchlist().setColor(branch, color);
|
||||
if (branch_ptr)
|
||||
branch_ptr->setColor(color);
|
||||
// Update also the LColor table:
|
||||
if (color == "none")
|
||||
color = lcolor.getX11Name(LColor::background);
|
||||
lcolor.fill(static_cast<LColor::color>(lcolor.size()),
|
||||
branch, color);
|
||||
lcolor.setColor(lcolor.getFromLyXName(branch), color);
|
||||
}
|
||||
}
|
||||
} else if (token == "\\author") {
|
||||
|
@ -111,7 +111,7 @@ InsetOld * createInset(FuncRequest const & cmd)
|
||||
string arg = cmd.getArg(0);
|
||||
if (arg.empty())
|
||||
arg = "none";
|
||||
return new InsetBranch(params, arg);
|
||||
return new InsetBranch(params, InsetBranchParams(arg));
|
||||
}
|
||||
|
||||
case LFUN_INSET_ERT:
|
||||
@ -419,7 +419,8 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
|
||||
CharStyles::iterator found_cs = tclass.charstyle(s);
|
||||
inset.reset(new InsetCharStyle(buf.params(), found_cs));
|
||||
} else if (tmptok == "Branch") {
|
||||
inset.reset(new InsetBranch(buf.params(), string()));
|
||||
inset.reset(new InsetBranch(buf.params(),
|
||||
InsetBranchParams()));
|
||||
} else if (tmptok == "Include") {
|
||||
InsetCommandParams p("Include");
|
||||
inset.reset(new InsetInclude(p));
|
||||
|
@ -1,3 +1,10 @@
|
||||
2003-12-14 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlBranch.[Ch] (branchlist): new member function.
|
||||
|
||||
* ControlDocument.C (setBranchColor): removed.
|
||||
(apply): update LColor to accommodate the new BranchList colors.
|
||||
|
||||
2003-12-14 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
|
||||
|
||||
* ControlMinipage.[Ch]: remove.
|
||||
@ -8,13 +15,6 @@
|
||||
* ControlMath.C (dispatchSubscript, dispatchSuperscript): enable
|
||||
the math panel sub/superscript buttons once again.
|
||||
|
||||
2003-12-12 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlBranch.[Ch] (branchlist): new member function.
|
||||
|
||||
* ControlDocument.C (setBranchColor): remove redundant call to
|
||||
LColor::setColor.
|
||||
|
||||
2003-12-11 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* ControlCommand.C (initialiseParams): changes due to the changed
|
||||
|
@ -12,11 +12,16 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "ControlBranch.h"
|
||||
|
||||
#include "buffer.h"
|
||||
#include "bufferparams.h"
|
||||
#include "BranchList.h"
|
||||
#include "funcrequest.h"
|
||||
#include "insets/insetbranch.h"
|
||||
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
|
||||
ControlBranch::ControlBranch(Dialog & parent)
|
||||
@ -44,3 +49,9 @@ void ControlBranch::dispatchParams()
|
||||
string const lfun = InsetBranchMailer::params2string(params());
|
||||
kernel().dispatch(FuncRequest(LFUN_INSET_APPLY, lfun));
|
||||
}
|
||||
|
||||
|
||||
BranchList const & ControlBranch::branchlist() const
|
||||
{
|
||||
return kernel().buffer().params().branchlist();
|
||||
}
|
||||
|
@ -16,8 +16,10 @@
|
||||
|
||||
#include "Dialog.h"
|
||||
|
||||
class BranchList;
|
||||
class InsetBranchParams;
|
||||
|
||||
|
||||
class ControlBranch : public Dialog::Controller {
|
||||
public:
|
||||
///
|
||||
@ -32,9 +34,10 @@ public:
|
||||
virtual bool isBufferDependent() const { return true; }
|
||||
///
|
||||
InsetBranchParams & params() { return *params_.get(); }
|
||||
///
|
||||
InsetBranchParams const & params() const { return *params_.get(); }
|
||||
///
|
||||
BranchList const & branchlist() const;
|
||||
|
||||
private:
|
||||
///
|
||||
boost::scoped_ptr<InsetBranchParams> params_;
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "ControlDocument.h"
|
||||
#include "ViewBase.h"
|
||||
|
||||
#include "BranchList.h"
|
||||
#include "buffer.h"
|
||||
#include "buffer_funcs.h"
|
||||
#include "bufferparams.h"
|
||||
@ -22,11 +23,11 @@
|
||||
#include "gettext.h"
|
||||
#include "iterators.h"
|
||||
#include "language.h"
|
||||
#include "LColor.h"
|
||||
#include "lyxtextclasslist.h"
|
||||
#include "paragraph.h"
|
||||
#include "funcrequest.h"
|
||||
#include "lfuns.h"
|
||||
#include "LColor.h"
|
||||
|
||||
#include "frontends/Alert.h"
|
||||
#include "frontends/LyXView.h"
|
||||
@ -85,6 +86,22 @@ void ControlDocument::apply()
|
||||
|
||||
lv_.message(_("Document settings applied"));
|
||||
|
||||
// branches
|
||||
BranchList & branchlist = params().branchlist();
|
||||
BranchList::const_iterator it = branchlist.begin();
|
||||
BranchList::const_iterator const end = branchlist.end();
|
||||
for (; it != end; ++it) {
|
||||
string const & current_branch = it->getBranch();
|
||||
Branch const * branch = branchlist.find(current_branch);
|
||||
string x11hexname = branch->getColor();
|
||||
// check that we have a valid color!
|
||||
if (x11hexname.empty() || x11hexname[0] != '#')
|
||||
x11hexname = lcolor.getX11Name(LColor::background);
|
||||
// display the new color
|
||||
string const str = current_branch + ' ' + x11hexname;
|
||||
lv_.dispatch(FuncRequest(LFUN_SET_COLOR, str));
|
||||
}
|
||||
|
||||
// Open insets of selected branches, close deselected ones
|
||||
// Currently only top-level insets in buffer handled (bug).
|
||||
ParIterator pit = buffer()->par_iterator_begin();
|
||||
@ -121,14 +138,6 @@ void ControlDocument::setLanguage()
|
||||
}
|
||||
|
||||
|
||||
void ControlDocument::setBranchColor(string const & branch, string const & hex)
|
||||
{
|
||||
lcolor.setColor(branch, hex);
|
||||
string const s = branch + ' ' + hex;
|
||||
lv_.dispatch(FuncRequest(LFUN_SET_COLOR, s));
|
||||
}
|
||||
|
||||
|
||||
void ControlDocument::classApply()
|
||||
{
|
||||
BufferParams & params = buffer()->params();
|
||||
|
@ -34,8 +34,6 @@ public:
|
||||
///
|
||||
void setLanguage();
|
||||
///
|
||||
void setBranchColor(std::string const & branch, std::string const & hex);
|
||||
///
|
||||
LyXTextClass textClass();
|
||||
///
|
||||
BufferParams & params();
|
||||
|
@ -1,3 +1,10 @@
|
||||
2003-12-14 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* QBranch.C: use the List interface to BranchList, simplifying the code.
|
||||
|
||||
* QDocument.C:
|
||||
* QDocumentDialog.C: overhaul the branchlist code.
|
||||
|
||||
2003-12-14 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
|
||||
|
||||
* QMinipage.[Ch]:
|
||||
|
@ -11,22 +11,21 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "qt_helpers.h"
|
||||
#include "ControlBranch.h"
|
||||
#include "BranchList.h"
|
||||
|
||||
#include "controllers/ControlBranch.h"
|
||||
|
||||
#include "insets/insetbranch.h"
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include "QBranch.h"
|
||||
#include "QBranchDialog.h"
|
||||
#include "Qt2BC.h"
|
||||
#include "qt_helpers.h"
|
||||
|
||||
#include <qcombobox.h>
|
||||
#include <qpushbutton.h>
|
||||
|
||||
#include "QBranchDialog.h"
|
||||
#include "QBranch.h"
|
||||
#include "Qt2BC.h"
|
||||
|
||||
using lyx::support::getVectorFromString;
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
|
||||
typedef QController<ControlBranch, QView<QBranchDialog> > base_class;
|
||||
@ -39,16 +38,8 @@ QBranch::QBranch(Dialog & parent)
|
||||
|
||||
void QBranch::build_dialog()
|
||||
{
|
||||
string all_branches(controller().params().branchlist.allBranches());
|
||||
|
||||
dialog_.reset(new QBranchDialog(this));
|
||||
|
||||
std::vector<string> all = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < all.size(); ++i) {
|
||||
QString const bname = toqstr(all[i].c_str());
|
||||
dialog_->branchCO->insertItem(bname);
|
||||
}
|
||||
|
||||
bcview().setOK(dialog_->okPB);
|
||||
bcview().setCancel(dialog_->closePB);
|
||||
}
|
||||
@ -56,21 +47,25 @@ void QBranch::build_dialog()
|
||||
|
||||
void QBranch::update_contents()
|
||||
{
|
||||
// re-read branch list
|
||||
typedef BranchList::const_iterator const_iterator;
|
||||
|
||||
BranchList const & branchlist = controller().branchlist();
|
||||
string const cur_branch = controller().params().branch;
|
||||
|
||||
dialog_->branchCO->clear();
|
||||
string all_branches(controller().params().branchlist.allBranches());
|
||||
string cur_branch(controller().params().branch);
|
||||
unsigned int cur_item = 0;
|
||||
std::vector<string> all = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < all.size(); ++i) {
|
||||
QString const bname = toqstr(all[i].c_str());
|
||||
dialog_->branchCO->insertItem(bname);
|
||||
if (bname == toqstr(cur_branch))
|
||||
cur_item = i;
|
||||
|
||||
const_iterator const begin = branchlist.begin();
|
||||
const_iterator const end = branchlist.end();
|
||||
int id = 1;
|
||||
int count = 1;
|
||||
for (const_iterator it = begin; it != end; ++it, ++count) {
|
||||
string const & branch = it->getBranch();
|
||||
dialog_->branchCO->insertItem(toqstr(branch));
|
||||
|
||||
if (cur_branch == branch)
|
||||
id = count;
|
||||
}
|
||||
// set to current item. A better idea anyone?
|
||||
if (all_branches.find(cur_branch) != string::npos && cur_branch != "none")
|
||||
dialog_->branchCO->setCurrentItem(cur_item);
|
||||
dialog_->branchCO->setCurrentItem(id);
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "support/lstrings.h"
|
||||
#include "lyxtextclasslist.h"
|
||||
#include "floatplacement.h"
|
||||
#include "LColor.h"
|
||||
|
||||
#include <qpushbutton.h>
|
||||
#include <qmultilineedit.h>
|
||||
@ -388,24 +387,7 @@ void QDocument::apply()
|
||||
|
||||
params.footskip = widgetsToLength(m->footskipLE, m->footskipUnit);
|
||||
|
||||
// branches
|
||||
string const all_branches = params.branchlist().allBranches();
|
||||
if (!all_branches.empty()) {
|
||||
std::vector<string> all = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < all.size(); ++i) {
|
||||
string const current_branch = all[i].c_str();
|
||||
string x11hexname = params.branchlist().getColor(current_branch);
|
||||
// check that we have a valid color!
|
||||
if (x11hexname.empty() || x11hexname[0] != '#')
|
||||
x11hexname = lcolor.getX11Name(LColor::background);
|
||||
// display the new color
|
||||
controller().setBranchColor(current_branch, x11hexname);
|
||||
}
|
||||
}
|
||||
if (branchlist_.empty())
|
||||
branchlist_ = params.branchlist();
|
||||
params.branchlist() = branchlist_;
|
||||
branchlist_.clear();
|
||||
}
|
||||
|
||||
|
||||
@ -654,6 +636,7 @@ void QDocument::update_contents()
|
||||
params.footskip, defaultUnit);
|
||||
|
||||
// branches
|
||||
branchlist_ = params.branchlist();
|
||||
dialog_->updateBranchView();
|
||||
}
|
||||
|
||||
|
@ -10,20 +10,21 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "bufferparams.h"
|
||||
#include "debug.h"
|
||||
#include "qt_helpers.h"
|
||||
#include "lyxrc.h"
|
||||
|
||||
#include "controllers/ControlDocument.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include "ControlDocument.h"
|
||||
#include "QDocument.h"
|
||||
#include "QDocumentDialog.h"
|
||||
|
||||
#include "panelstack.h"
|
||||
#include "floatplacement.h"
|
||||
#include "LColor.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
#include "bufferparams.h"
|
||||
#include "lyxrc.h"
|
||||
#include "lengthcombo.h"
|
||||
#include "panelstack.h"
|
||||
#include "qt_helpers.h"
|
||||
|
||||
#include <qlabel.h>
|
||||
#include <qmultilineedit.h>
|
||||
@ -36,12 +37,9 @@
|
||||
#include <qpixmap.h>
|
||||
#include <qcolor.h>
|
||||
#include <qcolordialog.h>
|
||||
#include "lengthcombo.h"
|
||||
|
||||
using lyx::support::token;
|
||||
using lyx::support::getVectorFromString;
|
||||
|
||||
using std::vector;
|
||||
using std::string;
|
||||
|
||||
|
||||
@ -424,43 +422,34 @@ void QDocumentDialog::updateNumbering()
|
||||
|
||||
void QDocumentDialog::updateBranchView()
|
||||
{
|
||||
ControlDocument & cntrl = form_->controller();
|
||||
BufferParams & params = cntrl.params();
|
||||
|
||||
string const all_branches = params.branchlist().allBranches();
|
||||
branchesModule->branchesLV->clear();
|
||||
if (!all_branches.empty()) {
|
||||
std::vector<string> all = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < all.size(); ++i) {
|
||||
QString const bname = toqstr(all[i].c_str());
|
||||
QString const sel =
|
||||
(params.branchlist().selected(fromqstr(bname))) ? qt_("Yes") : qt_("No");
|
||||
QListViewItem * newItem =
|
||||
new QListViewItem(branchesModule->branchesLV, bname, sel);
|
||||
QColor itemcolor;
|
||||
string x11hexname = params.branchlist().getColor(fromqstr(bname));
|
||||
if (x11hexname[0] == '#')
|
||||
itemcolor.setNamedColor(toqstr(x11hexname));
|
||||
if (itemcolor.isValid()) {
|
||||
QPixmap coloritem(30, 10);
|
||||
coloritem.fill(itemcolor);
|
||||
newItem->setPixmap(2, coloritem);
|
||||
}
|
||||
|
||||
BranchList::const_iterator it = form_->branchlist_.begin();
|
||||
BranchList::const_iterator const end = form_->branchlist_.end();
|
||||
for (; it != end; ++it) {
|
||||
QString const bname = toqstr(it->getBranch());
|
||||
QString const sel = it->getSelected() ? qt_("Yes") : qt_("No");
|
||||
QListViewItem * newItem =
|
||||
new QListViewItem(branchesModule->branchesLV, bname, sel);
|
||||
string const x11hexname = it->getColor();
|
||||
QColor itemcolor;
|
||||
if (x11hexname[0] == '#')
|
||||
itemcolor.setNamedColor(toqstr(x11hexname));
|
||||
if (itemcolor.isValid()) {
|
||||
QPixmap coloritem(30, 10);
|
||||
coloritem.fill(itemcolor);
|
||||
newItem->setPixmap(2, coloritem);
|
||||
}
|
||||
}
|
||||
form_->branchlist_ = params.branchlist();
|
||||
form_->changed();
|
||||
}
|
||||
|
||||
|
||||
void QDocumentDialog::addBranchPressed()
|
||||
{
|
||||
ControlDocument & cntrl = form_->controller();
|
||||
BufferParams & params = cntrl.params();
|
||||
|
||||
QString const new_branch = branchesModule->newBranchLE->text();
|
||||
if (!new_branch.isEmpty()) {
|
||||
params.branchlist().add(fromqstr(new_branch));
|
||||
form_->branchlist_.add(fromqstr(new_branch));
|
||||
branchesModule->newBranchLE->clear();
|
||||
updateBranchView();
|
||||
}
|
||||
@ -469,16 +458,13 @@ void QDocumentDialog::addBranchPressed()
|
||||
|
||||
void QDocumentDialog::deleteBranchPressed()
|
||||
{
|
||||
ControlDocument & cntrl = form_->controller();
|
||||
BufferParams & params = cntrl.params();
|
||||
|
||||
QListViewItem * selItem =
|
||||
branchesModule->branchesLV->selectedItem();
|
||||
QString sel_branch;
|
||||
if (selItem != 0)
|
||||
sel_branch = selItem->text(0);
|
||||
if (sel_branch) {
|
||||
params.branchlist().remove(fromqstr(sel_branch));
|
||||
form_->branchlist_.remove(fromqstr(sel_branch));
|
||||
branchesModule->newBranchLE->clear();
|
||||
updateBranchView();
|
||||
}
|
||||
@ -501,28 +487,23 @@ void QDocumentDialog::branchDoubleClicked(QListViewItem * selItem)
|
||||
|
||||
void QDocumentDialog::toggleBranch(QListViewItem * selItem)
|
||||
{
|
||||
ControlDocument & cntrl = form_->controller();
|
||||
BufferParams & params = cntrl.params();
|
||||
if (selItem == 0)
|
||||
return;
|
||||
|
||||
QString sel_branch;
|
||||
if (selItem != 0)
|
||||
sel_branch = selItem->text(0);
|
||||
QString sel_branch = selItem->text(0);
|
||||
if (sel_branch) {
|
||||
bool selected = false;
|
||||
if (selItem->text(1) == qt_("Yes"))
|
||||
selected = true;
|
||||
params.branchlist().setSelected(fromqstr(sel_branch), !selected);
|
||||
branchesModule->newBranchLE->clear();
|
||||
updateBranchView();
|
||||
bool const selected = selItem->text(1) == qt_("Yes");
|
||||
Branch * branch = form_->branchlist_.find(fromqstr(sel_branch));
|
||||
if (branch && branch->setSelected(!selected)) {
|
||||
branchesModule->newBranchLE->clear();
|
||||
updateBranchView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void QDocumentDialog::toggleBranchColor()
|
||||
{
|
||||
ControlDocument & cntrl = form_->controller();
|
||||
BufferParams & params = cntrl.params();
|
||||
|
||||
QListViewItem * selItem =
|
||||
branchesModule->branchesLV->selectedItem();
|
||||
QString sel_branch;
|
||||
@ -531,13 +512,18 @@ void QDocumentDialog::toggleBranchColor()
|
||||
if (sel_branch) {
|
||||
QColor initial;
|
||||
string current_branch = fromqstr(sel_branch);
|
||||
string x11hexname = params.branchlist().getColor(current_branch);
|
||||
Branch * branch =
|
||||
form_->branchlist_.find(current_branch);
|
||||
if (!branch)
|
||||
return;
|
||||
|
||||
string x11hexname = branch->getColor();
|
||||
if (x11hexname[0] == '#')
|
||||
initial.setNamedColor(toqstr(x11hexname));
|
||||
QColor ncol(QColorDialog::getColor(initial));
|
||||
if (ncol.isValid()){
|
||||
// add the color to the branchlist
|
||||
params.branchlist().setColor(current_branch, fromqstr(ncol.name()));
|
||||
branch->setColor(fromqstr(ncol.name()));
|
||||
branchesModule->newBranchLE->clear();
|
||||
updateBranchView();
|
||||
}
|
||||
|
@ -1,3 +1,14 @@
|
||||
2003-12-14 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* FormBranch.C: use the List interface to BranchList, simplifying the
|
||||
code.
|
||||
|
||||
* FormDocument.C: overhaul the branch code, using the List
|
||||
interface to BranchList and factoring repeated blocks into two
|
||||
new helper functions.
|
||||
|
||||
* lyx_gui.C (update_color): ensure the GC is up to date.
|
||||
|
||||
2003-12-14 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
|
||||
|
||||
* FormMinipage.[Ch]:
|
||||
|
@ -12,16 +12,17 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "FormBranch.h"
|
||||
#include "ControlBranch.h"
|
||||
#include "forms/form_branch.h"
|
||||
|
||||
#include "xformsBC.h"
|
||||
|
||||
#include "BranchList.h"
|
||||
|
||||
#include "controllers/ControlBranch.h"
|
||||
|
||||
#include "insets/insetbranch.h"
|
||||
|
||||
#include "lyx_forms.h"
|
||||
|
||||
|
||||
using std::string;
|
||||
|
||||
|
||||
@ -34,12 +35,8 @@ FormBranch::FormBranch(Dialog & parent)
|
||||
|
||||
void FormBranch::build()
|
||||
{
|
||||
string all_branches(controller().params().branchlist.allBranches());
|
||||
|
||||
dialog_.reset(build_branch(this));
|
||||
|
||||
fl_addto_choice(dialog_->choice_branch, all_branches.c_str());
|
||||
|
||||
bcview().setOK(dialog_->button_ok);
|
||||
bcview().setApply(dialog_->button_apply);
|
||||
bcview().setCancel(dialog_->button_cancel);
|
||||
@ -48,20 +45,30 @@ void FormBranch::build()
|
||||
|
||||
void FormBranch::update()
|
||||
{
|
||||
// Make changes in all_branches propagate within session:
|
||||
string all_branches(controller().params().branchlist.allBranches());
|
||||
fl_clear_choice(dialog_->choice_branch);
|
||||
fl_addto_choice(dialog_->choice_branch, all_branches.c_str());
|
||||
typedef BranchList::const_iterator const_iterator;
|
||||
|
||||
string branch(controller().params().branch);
|
||||
if (all_branches.find(branch) != string::npos && branch != "none")
|
||||
fl_set_choice_text(dialog_->choice_branch, branch.c_str());
|
||||
BranchList const & branchlist = controller().branchlist();
|
||||
string const cur_branch = controller().params().branch;
|
||||
|
||||
fl_clear_choice(dialog_->choice_branch);
|
||||
|
||||
const_iterator const begin = branchlist.begin();
|
||||
const_iterator const end = branchlist.end();
|
||||
int id = 1;
|
||||
int count = 1;
|
||||
for (const_iterator it = begin; it != end; ++it, ++count) {
|
||||
string const & branch = it->getBranch();
|
||||
fl_addto_choice(dialog_->choice_branch, branch.c_str());
|
||||
|
||||
if (cur_branch == branch)
|
||||
id = count;
|
||||
}
|
||||
fl_set_choice(dialog_->choice_branch, id);
|
||||
}
|
||||
|
||||
|
||||
void FormBranch::apply()
|
||||
{
|
||||
string const type = fl_get_choice_text(dialog_->choice_branch);
|
||||
|
||||
controller().params().branch = type;
|
||||
}
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "Bullet.h"
|
||||
#include "bufferparams.h"
|
||||
#include "language.h"
|
||||
#include "LColor.h"
|
||||
#include "lyxrc.h"
|
||||
#include "lyxtextclasslist.h"
|
||||
#include "tex-strings.h"
|
||||
@ -670,123 +669,122 @@ ButtonPolicy::SMInput FormDocument::input(FL_OBJECT * ob, long)
|
||||
}
|
||||
|
||||
|
||||
void FormDocument::rebuild_all_branches_browser()
|
||||
{
|
||||
typedef BranchList::const_iterator const_iterator;
|
||||
|
||||
fl_clear_browser(branch_->browser_all_branches);
|
||||
|
||||
const_iterator const begin = branchlist_.begin();
|
||||
const_iterator const end = branchlist_.end();
|
||||
for (const_iterator it = begin; it != end; ++it) {
|
||||
fl_addto_browser(branch_->browser_all_branches,
|
||||
it->getBranch().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FormDocument::rebuild_selected_branches_browser()
|
||||
{
|
||||
typedef BranchList::const_iterator const_iterator;
|
||||
|
||||
fl_clear_browser(branch_->browser_selection);
|
||||
|
||||
const_iterator const begin = branchlist_.begin();
|
||||
const_iterator const end = branchlist_.end();
|
||||
for (const_iterator it = begin; it != end; ++it) {
|
||||
if (it->getSelected())
|
||||
fl_addto_browser(branch_->browser_selection,
|
||||
it->getBranch().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
RGBColor get_current_color(FL_OBJECT * browser, BranchList const & branchlist)
|
||||
{
|
||||
BOOST_ASSERT(browser && browser->objclass == FL_BROWSER);
|
||||
|
||||
RGBColor color;
|
||||
|
||||
int const i = fl_get_browser(browser);
|
||||
string const branch_name = fl_get_browser_line(browser, i);
|
||||
Branch const * branch = branchlist.find(branch_name);
|
||||
if (!branch)
|
||||
return color;
|
||||
|
||||
string const x11hexname = branch->getColor();
|
||||
if (x11hexname[0] == '#') {
|
||||
color = RGBColor(x11hexname);
|
||||
} else{
|
||||
fl_getmcolor(FL_COL1, &color.r, &color.g, &color.b);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
void FormDocument::branch_input(FL_OBJECT * ob)
|
||||
{
|
||||
BufferParams & params = controller().params();
|
||||
std::vector<string> vec;
|
||||
|
||||
if (ob == branch_->button_add_branch) {
|
||||
string new_branch = fl_get_input(branch_->input_all_branches);
|
||||
if (!new_branch.empty()) {
|
||||
params.branchlist().add(new_branch);
|
||||
string const new_branch =
|
||||
getString(branch_->input_all_branches);
|
||||
|
||||
if (!new_branch.empty() && branchlist_.add(new_branch)) {
|
||||
|
||||
fl_set_input(branch_->input_all_branches, "");
|
||||
// Update branch list
|
||||
string const all_branches = params.branchlist().allBranches();
|
||||
fl_clear_browser(branch_->browser_all_branches);
|
||||
vec = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_all_branches,
|
||||
vec[i].c_str());
|
||||
}
|
||||
LColor::color c = static_cast<LColor::color>(lcolor.size());
|
||||
lcolor.fill(c, new_branch, lcolor.getX11Name(LColor::background));
|
||||
rebuild_all_branches_browser();
|
||||
}
|
||||
|
||||
} else if (ob == branch_->button_remove_branch) {
|
||||
unsigned i = fl_get_browser(branch_->browser_all_branches);
|
||||
string const current_branch =
|
||||
fl_get_browser_line(branch_->browser_all_branches, i);
|
||||
if (!current_branch.empty()) {
|
||||
params.branchlist().remove(current_branch);
|
||||
// Update branch list
|
||||
string const all_branches = params.branchlist().allBranches();
|
||||
fl_clear_browser(branch_->browser_all_branches);
|
||||
vec = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_all_branches,
|
||||
vec[i].c_str());
|
||||
}
|
||||
// Update selected-list...
|
||||
string const all_selected = params.branchlist().allSelected();
|
||||
fl_clear_browser(branch_->browser_selection);
|
||||
vec = getVectorFromString(all_selected, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_selection, vec[i].c_str());
|
||||
}
|
||||
if (!current_branch.empty() &&
|
||||
branchlist_.remove(current_branch)) {
|
||||
|
||||
rebuild_all_branches_browser();
|
||||
rebuild_selected_branches_browser();
|
||||
}
|
||||
} else if (ob == branch_->button_select) {
|
||||
unsigned i = fl_get_browser(branch_->browser_all_branches);
|
||||
|
||||
} else if (ob == branch_->button_select ||
|
||||
ob == branch_->button_deselect) {
|
||||
|
||||
bool const selected = ob == branch_->button_select;
|
||||
|
||||
int const i = fl_get_browser(branch_->browser_all_branches);
|
||||
string const current_branch =
|
||||
fl_get_browser_line(branch_->browser_all_branches, i);
|
||||
if (!current_branch.empty()) {
|
||||
fl_clear_browser(branch_->browser_selection);
|
||||
params.branchlist().setSelected(current_branch, true);
|
||||
string const all_selected = params.branchlist().allSelected();
|
||||
vec = getVectorFromString(all_selected, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_selection,
|
||||
vec[i].c_str());
|
||||
}
|
||||
}
|
||||
} else if (ob == branch_->button_deselect) {
|
||||
unsigned i = fl_get_browser(branch_->browser_selection);
|
||||
string const current_sel =
|
||||
fl_get_browser_line(branch_->browser_selection, i);
|
||||
if (!current_sel.empty()) {
|
||||
fl_clear_browser(branch_->browser_selection);
|
||||
params.branchlist().setSelected(current_sel, false);
|
||||
string const all_selected = params.branchlist().allSelected();
|
||||
vec = getVectorFromString(all_selected, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_selection,
|
||||
vec[i].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
Branch * branch = branchlist_.find(current_branch);
|
||||
|
||||
if (branch && branch->setSelected(selected))
|
||||
rebuild_selected_branches_browser();
|
||||
|
||||
} else if (ob == branch_->button_modify) {
|
||||
unsigned i = fl_get_browser(branch_->browser_all_branches);
|
||||
string const current_branch =
|
||||
fl_get_browser_line(branch_->browser_all_branches, i);
|
||||
|
||||
RGBColor before;
|
||||
string x11hexname = params.branchlist().getColor(current_branch);
|
||||
if (x11hexname[0] == '#') {
|
||||
before = RGBColor(x11hexname);
|
||||
} else{
|
||||
fl_getmcolor(FL_COL1, &before.r, &before.g, &before.b);
|
||||
}
|
||||
|
||||
RGBColor col = picker_->requestColor(before);
|
||||
if (before != col) {
|
||||
fl_mapcolor(GUI_COLOR_CHOICE, col.r, col.g, col.b);
|
||||
RGBColor const before =
|
||||
get_current_color(branch_->browser_all_branches,
|
||||
branchlist_);
|
||||
RGBColor const after = picker_->requestColor(before);
|
||||
if (before != after) {
|
||||
fl_mapcolor(GUI_COLOR_CHOICE,
|
||||
after.r, after.g, after.b);
|
||||
fl_redraw_object(branch_->button_color);
|
||||
// Figure out here how to stash the new colour into the
|
||||
// LyX colour database.
|
||||
|
||||
x11hexname = X11hexname(col);
|
||||
|
||||
// current_branch already in database
|
||||
LColor::color c = lcolor.getFromLyXName(current_branch);
|
||||
lcolor.setColor(current_branch, x11hexname);
|
||||
// Make sure that new colour is also displayed ;-)
|
||||
lyxColorHandler->getGCForeground(c);
|
||||
lyxColorHandler->updateColor(c);
|
||||
// what about system_lcolor?
|
||||
// Here set colour in BranchList:
|
||||
params.branchlist().setColor(current_branch, x11hexname);
|
||||
string const branch_name =
|
||||
getString(branch_->browser_all_branches);
|
||||
Branch * branch = branchlist_.find(branch_name);
|
||||
if (branch)
|
||||
branch->setColor(X11hexname(after));
|
||||
}
|
||||
|
||||
} else if (ob == branch_->browser_all_branches) {
|
||||
unsigned i = fl_get_browser(branch_->browser_all_branches);
|
||||
string const current_branch =
|
||||
fl_get_browser_line(branch_->browser_all_branches, i);
|
||||
// make button_color track selected branch:
|
||||
RGBColor rgb =
|
||||
get_current_color(branch_->browser_all_branches,
|
||||
branchlist_);
|
||||
|
||||
RGBColor rgb;
|
||||
string x11hexname = params.branchlist().getColor(current_branch);
|
||||
if (x11hexname[0] == '#') {
|
||||
rgb = RGBColor(x11hexname);
|
||||
} else {
|
||||
fl_getmcolor(FL_COL1, &rgb.r, &rgb.g, &rgb.b);
|
||||
}
|
||||
fl_mapcolor(GUI_COLOR_CHOICE, rgb.r, rgb.g, rgb.b);
|
||||
fl_redraw_object(branch_->button_color);
|
||||
}
|
||||
@ -798,8 +796,6 @@ void FormDocument::branch_input(FL_OBJECT * ob)
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
setEnabled(branch_->button_modify,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
|
||||
branchlist_ = params.branchlist();
|
||||
}
|
||||
|
||||
|
||||
@ -1029,11 +1025,7 @@ void FormDocument::bullets_apply(BufferParams & params)
|
||||
|
||||
void FormDocument::branch_apply(BufferParams & params)
|
||||
{
|
||||
BufferParams & prms = controller().params();
|
||||
if (branchlist_.empty())
|
||||
branchlist_ = prms.branchlist();
|
||||
params.branchlist() = branchlist_;
|
||||
branchlist_.clear();
|
||||
}
|
||||
|
||||
|
||||
@ -1307,39 +1299,28 @@ void FormDocument::branch_update(BufferParams const & params)
|
||||
if (!branch_.get())
|
||||
return;
|
||||
|
||||
string const all_branches = params.branchlist().allBranches();
|
||||
fl_clear_browser(branch_->browser_all_branches);
|
||||
string current_branch("none");
|
||||
branchlist_ = params.branchlist();
|
||||
|
||||
if (!all_branches.empty()) {
|
||||
std::vector<string> vec = getVectorFromString(all_branches, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_all_branches, vec[i].c_str());
|
||||
}
|
||||
fl_select_browser_line(branch_->browser_all_branches, 1);
|
||||
if (!vec.empty())
|
||||
current_branch =
|
||||
fl_get_browser_line(branch_->browser_all_branches, 1);
|
||||
else
|
||||
current_branch = "none";
|
||||
}
|
||||
rebuild_all_branches_browser();
|
||||
string const current_branch =
|
||||
fl_get_browser_maxline(branch_->browser_all_branches) == 0 ?
|
||||
"none" :
|
||||
fl_get_browser_line(branch_->browser_all_branches, 1);
|
||||
|
||||
// display proper selection...
|
||||
string const all_selected = params.branchlist().allSelected();
|
||||
fl_clear_browser(branch_->browser_selection);
|
||||
if (!all_selected.empty()) {
|
||||
std::vector<string> vec = getVectorFromString(all_selected, "|");
|
||||
for (unsigned i = 0; i < vec.size(); ++i) {
|
||||
fl_addto_browser(branch_->browser_selection, vec[i].c_str());
|
||||
}
|
||||
}
|
||||
rebuild_selected_branches_browser();
|
||||
|
||||
// display proper colour...
|
||||
RGBColor rgb;
|
||||
string x11hexname;
|
||||
if (current_branch == "none")
|
||||
x11hexname = "none";
|
||||
else
|
||||
x11hexname = params.branchlist().getColor(current_branch);
|
||||
else {
|
||||
Branch * branch = branchlist_.find(current_branch);
|
||||
if (branch)
|
||||
x11hexname = branch->getColor();
|
||||
}
|
||||
|
||||
if (x11hexname[0] == '#') {
|
||||
rgb = RGBColor(x11hexname);
|
||||
} else {
|
||||
|
@ -110,6 +110,9 @@ private:
|
||||
///
|
||||
void branch_apply(BufferParams &);
|
||||
|
||||
void rebuild_all_branches_browser();
|
||||
void rebuild_selected_branches_browser();
|
||||
|
||||
/// Real GUI implementation.
|
||||
boost::scoped_ptr<FD_document_paper> paper_;
|
||||
///
|
||||
|
@ -366,6 +366,7 @@ string const hexname(LColor_color col)
|
||||
|
||||
void update_color(LColor_color col)
|
||||
{
|
||||
lyxColorHandler->getGCForeground(col);
|
||||
lyxColorHandler->updateColor(col);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,12 @@
|
||||
2003-12-12 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* insetbranch.C (c-tor): takes an InsetBranchParams arg rather than
|
||||
a string.
|
||||
(InsetBranchParams): remove the branchlist hack.
|
||||
(isBranchSelected): new function, used to decide whether to
|
||||
print each output format. Also used by InsetList.
|
||||
(read, string2params): repair my own breakage ;-)
|
||||
|
||||
2003-12-14 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
|
||||
|
||||
* insetminipage.[Ch]: remove from repository.
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "buffer.h"
|
||||
#include "bufferparams.h"
|
||||
#include "BranchList.h"
|
||||
#include "BufferView.h"
|
||||
#include "dispatchresult.h"
|
||||
#include "funcrequest.h"
|
||||
@ -39,13 +40,10 @@ void InsetBranch::init()
|
||||
}
|
||||
|
||||
|
||||
InsetBranch::InsetBranch(BufferParams const & bp, string const & label)
|
||||
: InsetCollapsable(bp)
|
||||
InsetBranch::InsetBranch(BufferParams const & bp,
|
||||
InsetBranchParams const & params)
|
||||
: InsetCollapsable(bp), params_(params)
|
||||
{
|
||||
params_.branch = label;
|
||||
// Hack: stash the list of all allowable branch labels from this
|
||||
// buffer into inset's parm list as a "stowaway":
|
||||
params_.branchlist = bp.branchlist();
|
||||
init();
|
||||
}
|
||||
|
||||
@ -84,10 +82,7 @@ void InsetBranch::write(Buffer const & buf, ostream & os) const
|
||||
|
||||
void InsetBranch::read(Buffer const & buf, LyXLex & lex)
|
||||
{
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
params_.branch = lex.getString();
|
||||
}
|
||||
params_.read(lex);
|
||||
InsetCollapsable::read(buf, lex);
|
||||
setButtonLabel();
|
||||
}
|
||||
@ -152,44 +147,59 @@ InsetBranch::priv_dispatch(FuncRequest const & cmd,
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::latex(Buffer const & buf, ostream & os,
|
||||
OutputParams const & runparams) const
|
||||
namespace {
|
||||
|
||||
struct SameBranch {
|
||||
SameBranch(string const & branch_name) : bn(branch_name) {}
|
||||
bool operator()(Branch const & branch) const
|
||||
{ return bn == branch.getBranch(); }
|
||||
private:
|
||||
string bn;
|
||||
};
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
bool InsetBranch::isBranchSelected(BranchList const & branchlist) const
|
||||
{
|
||||
string const branch_sel = buf.params().branchlist().allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos)
|
||||
return inset.latex(buf, os, runparams);
|
||||
return 0;
|
||||
BranchList::const_iterator it = branchlist.begin();
|
||||
BranchList::const_iterator const end = branchlist.end();
|
||||
it = std::find_if(it, end, SameBranch(params_.branch));
|
||||
if (it == end)
|
||||
return false;
|
||||
return it->getSelected();
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::latex(Buffer const & buf, ostream & os,
|
||||
OutputParams const & runparams) const
|
||||
{
|
||||
return isBranchSelected(buf.params().branchlist()) ?
|
||||
inset.latex(buf, os, runparams) : 0;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::linuxdoc(Buffer const & buf, std::ostream & os,
|
||||
OutputParams const & runparams) const
|
||||
{
|
||||
string const branch_sel = buf.params().branchlist().allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos)
|
||||
return inset.linuxdoc(buf, os, runparams);
|
||||
return 0;
|
||||
return isBranchSelected(buf.params().branchlist()) ?
|
||||
inset.linuxdoc(buf, os, runparams) : 0;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::docbook(Buffer const & buf, std::ostream & os,
|
||||
OutputParams const & runparams) const
|
||||
{
|
||||
string const branch_sel = buf.params().branchlist().allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos)
|
||||
return inset.docbook(buf, os, runparams);
|
||||
return 0;
|
||||
return isBranchSelected(buf.params().branchlist()) ?
|
||||
inset.docbook(buf, os, runparams) : 0;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::plaintext(Buffer const & buf, std::ostream & os,
|
||||
OutputParams const & runparams) const
|
||||
OutputParams const & runparams) const
|
||||
{
|
||||
string const branch_sel = buf.params().branchlist().allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos) {
|
||||
return inset.plaintext(buf, os, runparams);
|
||||
}
|
||||
return 0;
|
||||
return isBranchSelected(buf.params().branchlist()) ?
|
||||
inset.plaintext(buf, os, runparams): 0;
|
||||
}
|
||||
|
||||
|
||||
@ -207,12 +217,9 @@ InsetBranchMailer::InsetBranchMailer(InsetBranch & inset)
|
||||
{}
|
||||
|
||||
|
||||
string const InsetBranchMailer::inset2string(Buffer const & buf) const
|
||||
string const InsetBranchMailer::inset2string(Buffer const &) const
|
||||
{
|
||||
InsetBranchParams params = inset_.params();
|
||||
params.branchlist = buf.params().branchlist();
|
||||
inset_.setParams(params);
|
||||
return params2string(params);
|
||||
return params2string(inset_.params());
|
||||
}
|
||||
|
||||
|
||||
@ -221,8 +228,6 @@ string const InsetBranchMailer::params2string(InsetBranchParams const & params)
|
||||
ostringstream data;
|
||||
data << name_ << ' ';
|
||||
params.write(data);
|
||||
// Add all_branches parameter to data:
|
||||
data << params.branchlist.allBranches() << "\n";
|
||||
return data.str();
|
||||
}
|
||||
|
||||
@ -243,33 +248,24 @@ void InsetBranchMailer::string2params(string const & in,
|
||||
if (name != name_)
|
||||
return print_mailer_error("InsetBranchMailer", in, 1, name_);
|
||||
|
||||
// This is part of the inset proper that is usually swallowed
|
||||
// by LyXText::readInset
|
||||
string id;
|
||||
lex >> id;
|
||||
if (!lex || id != "Branch")
|
||||
return print_mailer_error("InsetBranchMailer", in, 2, "Branch");
|
||||
|
||||
params.read(lex);
|
||||
// Process all_branches here:
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
params.branchlist.add(lex.getString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void InsetBranchParams::write(ostream & os) const
|
||||
{
|
||||
os << "Branch" << " " << branch << "\n";
|
||||
os << "Branch " << branch << '\n';
|
||||
}
|
||||
|
||||
|
||||
void InsetBranchParams::read(LyXLex & lex)
|
||||
{
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
string token = lex.getString();
|
||||
}
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
string token = lex.getString();
|
||||
}
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
branch = lex.getString();
|
||||
}
|
||||
lex >> branch;
|
||||
}
|
||||
|
@ -14,18 +14,20 @@
|
||||
|
||||
|
||||
#include "insetcollapsable.h"
|
||||
#include "BranchList.h"
|
||||
|
||||
struct InsetBranchParams {
|
||||
class BranchList;
|
||||
|
||||
|
||||
struct InsetBranchParams {
|
||||
explicit InsetBranchParams(std::string const & b = std::string())
|
||||
: branch(b) {}
|
||||
///
|
||||
void write(std::ostream & os) const;
|
||||
///
|
||||
void read(LyXLex & lex);
|
||||
///
|
||||
std::string branch;
|
||||
/// Hack -- MV
|
||||
BranchList branchlist;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/** The Branch inset for alternative, conditional output.
|
||||
@ -34,7 +36,7 @@
|
||||
class InsetBranch : public InsetCollapsable {
|
||||
public:
|
||||
///
|
||||
InsetBranch(BufferParams const &, std::string const &);
|
||||
InsetBranch(BufferParams const &, InsetBranchParams const &);
|
||||
/// Copy constructor
|
||||
InsetBranch(InsetBranch const &);
|
||||
///
|
||||
@ -71,6 +73,12 @@ public:
|
||||
InsetBranchParams const & params() const { return params_; }
|
||||
///
|
||||
void setParams(InsetBranchParams const & params) { params_ = params; }
|
||||
|
||||
/** \returns true if params_.branch is listed as 'selected' in
|
||||
\c branchlist.
|
||||
*/
|
||||
bool isBranchSelected(BranchList const & branchlist) const;
|
||||
|
||||
protected:
|
||||
///
|
||||
virtual
|
||||
|
@ -1404,7 +1404,8 @@ void LyXFunc::dispatch(FuncRequest const & func, bool verbose)
|
||||
(lyx_name == lcolor.getLyXName(LColor::graphicsbg) &&
|
||||
x11_name != lcolor.getX11Name(LColor::graphicsbg));
|
||||
|
||||
if (!lcolor.setColor(lyx_name, x11_name)) {
|
||||
LColor::color col = lcolor.getFromLyXName(lyx_name);
|
||||
if (!lcolor.setColor(col, x11_name)) {
|
||||
setErrorMessage(
|
||||
bformat(_("Set-color \"%1$s\" failed "
|
||||
"- color is undefined or "
|
||||
|
@ -763,7 +763,8 @@ int LyXRC::read(string const & filename)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!lcolor.setColor(lyx_name, x11_name)) {
|
||||
LColor::color col = lcolor.getFromLyXName(lyx_name);
|
||||
if (!lcolor.setColor(col, x11_name)) {
|
||||
lyxerr << "Bad lyxrc set_color for "
|
||||
<< lyx_name << endl;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user