mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 03:11:59 +00:00
The 'Branches' mega-patch.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7560 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
0bbad21ca0
commit
fd6cd728a3
@ -1,3 +1,19 @@
|
||||
|
||||
2003-08-17 Martin Vermeer <martin.vermeer@hut.fi>
|
||||
|
||||
* ui/stdmenus.ui: implements the 'branch inset'
|
||||
idea. This allows the output of various versions of a document
|
||||
from a single source version, selectively outputing or suppressing
|
||||
output of parts of the text.
|
||||
This implementation contains a 'branch list editor' in a separate
|
||||
tab of the document settings dialog. Branches are user definable
|
||||
and have a "display colour" to distinguish them on-screen.
|
||||
|
||||
ColorHandler was somewhat cleaned up.
|
||||
(1) make possible a dynamically growing LColor list by allowing
|
||||
the graphic context cache to grow along (vector);
|
||||
(2) eliminate an IMHO unnecessary step in colour allocation.
|
||||
|
||||
2003-08-14 John Levon <levon@movementarian.org>
|
||||
|
||||
* ui/stdmenus.ui: move Note up to the submenus section
|
||||
|
@ -93,6 +93,7 @@ Menuset
|
||||
OptItem "Minipage Settings...|M" "inset-settings minipage"
|
||||
OptItem "Text Wrap Settings...|W" "inset-settings wrap"
|
||||
OptItem "Note Settings...|N" "inset-settings note"
|
||||
OptItem "Branch Settings...|B" "inset-settings branch"
|
||||
# Hey, guess what's broken ? Surprise surprise, it's tabular stuff
|
||||
# This is in the Table submenu instead for now.
|
||||
# OptItem "Table Settings...|a" "inset-settings tabular"
|
||||
@ -217,6 +218,8 @@ Menuset
|
||||
Submenu "Float|a" "insert_float"
|
||||
Submenu "Note|N" "insert_note"
|
||||
# YUCK
|
||||
Submenu "Note|N" "insert_note"
|
||||
Submenu "Branch|B" "branches"
|
||||
Submenu "File|e" "insert_file"
|
||||
Separator
|
||||
Item "Citation Reference...|C" "dialog-show-new-inset citation"
|
||||
@ -326,6 +329,10 @@ Menuset
|
||||
Item "Greyed Out|G" "note-insert Greyedout"
|
||||
End
|
||||
|
||||
Menu "branches"
|
||||
Branches
|
||||
End
|
||||
|
||||
#
|
||||
# DOCUMENT MENU
|
||||
#
|
||||
|
@ -1,3 +1,4 @@
|
||||
src/BranchList.h
|
||||
src/BufferView.C
|
||||
src/BufferView_pimpl.C
|
||||
src/Chktex.C
|
||||
@ -90,6 +91,7 @@ src/frontends/xforms/FormAboutlyx.C
|
||||
src/frontends/xforms/FormBase.C
|
||||
src/frontends/xforms/FormBibitem.C
|
||||
src/frontends/xforms/FormBibtex.C
|
||||
src/frontends/xforms/FormBranch.C
|
||||
src/frontends/xforms/FormChanges.C
|
||||
src/frontends/xforms/FormCharacter.C
|
||||
src/frontends/xforms/FormCitation.C
|
||||
@ -138,6 +140,7 @@ src/gettext.h
|
||||
src/importer.C
|
||||
src/insets/inset.C
|
||||
src/insets/insetbibtex.C
|
||||
src/insets/insetbranch.C
|
||||
src/insets/insetcaption.C
|
||||
src/insets/insetenv.C
|
||||
src/insets/insetert.C
|
||||
@ -180,6 +183,7 @@ src/mathed/ref_inset.C
|
||||
src/paragraph.C
|
||||
src/paragraph_funcs.C
|
||||
src/rowpainter.C
|
||||
src/support/path_defines.C
|
||||
src/text.C
|
||||
src/text2.C
|
||||
src/text3.C
|
||||
|
202
src/BranchList.C
Normal file
202
src/BranchList.C
Normal file
@ -0,0 +1,202 @@
|
||||
/**
|
||||
* \file BranchList.C
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include "BranchList.h"
|
||||
#include "support/LAssert.h"
|
||||
|
||||
#include <functional>
|
||||
|
||||
using std::bind2nd;
|
||||
using std::remove_if;
|
||||
using std::binary_function;
|
||||
using namespace lyx::support;
|
||||
|
||||
|
||||
string const Branch::getBranch() const
|
||||
{
|
||||
return branch_;
|
||||
}
|
||||
|
||||
|
||||
void Branch::setBranch(string const & s)
|
||||
{
|
||||
branch_ = s;
|
||||
}
|
||||
|
||||
|
||||
bool Branch::getSelected() const
|
||||
{
|
||||
return selected_;
|
||||
}
|
||||
|
||||
|
||||
void Branch::setSelected(bool b)
|
||||
{
|
||||
selected_ = b;
|
||||
}
|
||||
|
||||
|
||||
string const Branch::getColor() const
|
||||
{
|
||||
return color_;
|
||||
}
|
||||
|
||||
|
||||
void Branch::setColor(string const & c)
|
||||
{
|
||||
color_ = c;
|
||||
}
|
||||
|
||||
|
||||
void BranchList::clear()
|
||||
{
|
||||
list.clear();
|
||||
}
|
||||
|
||||
|
||||
string BranchList::getColor(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->getColor();
|
||||
}
|
||||
}
|
||||
Assert(false); // Always
|
||||
return string(); // never gets here
|
||||
}
|
||||
|
||||
|
||||
|
||||
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.find(it->getBranch(), 0) != string::npos) {
|
||||
it->setColor(val);
|
||||
return;
|
||||
}
|
||||
}
|
||||
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.find(it->getBranch(), 0) != string::npos)
|
||||
it->setSelected(val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BranchList::add(string const & s)
|
||||
{
|
||||
string::size_type i = 0;
|
||||
while (true) {
|
||||
string::size_type const j = s.find_first_of(separator(), i);
|
||||
string name;
|
||||
if (j == string::npos)
|
||||
name = s.substr(i);
|
||||
else
|
||||
name = s.substr(i, j - i);
|
||||
// Is this name already in the list?
|
||||
List::const_iterator it = list.begin();
|
||||
List::const_iterator end = list.end();
|
||||
bool already = false;
|
||||
for (; it != end; ++it) {
|
||||
if (it->getBranch() == name) {
|
||||
already = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!already) {
|
||||
Branch br;
|
||||
br.setBranch(name);
|
||||
br.setSelected(false);
|
||||
br.setColor("none");
|
||||
list.push_back(br);
|
||||
}
|
||||
if (j == string::npos)
|
||||
break;
|
||||
i = j + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
struct match : public binary_function<Branch, string, bool> {
|
||||
bool operator()(Branch const & br, string const & s) const {
|
||||
return (br.getBranch() == s);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace anon.
|
||||
|
||||
|
||||
void BranchList::remove(string const & s)
|
||||
{
|
||||
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_;
|
||||
}
|
106
src/BranchList.h
Normal file
106
src/BranchList.h
Normal file
@ -0,0 +1,106 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \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
|
||||
*
|
||||
*
|
||||
* \class Branch
|
||||
*
|
||||
* A class describing a 'branch', i.e., a named alternative for
|
||||
* selectively outputting some parts of a document while suppressing
|
||||
* 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
|
||||
* queried.
|
||||
*
|
||||
* \class BranchList
|
||||
*
|
||||
* A class containing a vector of all defined branches within a
|
||||
* document. 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 "LString.h"
|
||||
#include <list>
|
||||
|
||||
class Branch {
|
||||
public:
|
||||
///
|
||||
string const getBranch() const;
|
||||
///
|
||||
void setBranch(string const &);
|
||||
///
|
||||
bool getSelected() const;
|
||||
///
|
||||
void setSelected(bool);
|
||||
///
|
||||
string const getColor() const;
|
||||
///
|
||||
void setColor(string const &);
|
||||
|
||||
|
||||
private:
|
||||
///
|
||||
string branch_;
|
||||
///
|
||||
bool selected_;
|
||||
///
|
||||
string color_;
|
||||
};
|
||||
|
||||
|
||||
class BranchList {
|
||||
public:
|
||||
///
|
||||
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(); };
|
||||
///
|
||||
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;
|
||||
///
|
||||
string const separator() const;
|
||||
|
||||
private:
|
||||
///
|
||||
List list;
|
||||
///
|
||||
string separator_;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,4 +1,29 @@
|
||||
|
||||
2003-08-17 Martin Vermeer <martin.vermeer@hut.fi>
|
||||
|
||||
* src/BranchList.[Ch]:
|
||||
* src/InsetList.[Ch]:
|
||||
* src/LColor.[Ch]:
|
||||
* src/LyXAction.C:
|
||||
* src/Makefile.am:
|
||||
* src/MenuBackend.[Ch]:
|
||||
* src/bufferparams.[Ch]:
|
||||
* src/factory.C:
|
||||
* src/lfuns.h:
|
||||
* src/lyxfunc.C:
|
||||
* src/text3.C: implements the 'branch inset'
|
||||
idea. This allows the output of various versions of a document
|
||||
from a single source version, selectively outputing or suppressing
|
||||
output of parts of the text.
|
||||
This implementation contains a 'branch list editor' in a separate
|
||||
tab of the document settings dialog. Branches are user definable
|
||||
and have a "display colour" to distinguish them on-screen.
|
||||
|
||||
ColorHandler was somewhat cleaned up.
|
||||
(1) make possible a dynamically growing LColor list by allowing
|
||||
the graphic context cache to grow along (vector);
|
||||
(2) eliminate an IMHO unnecessary step in colour allocation.
|
||||
|
||||
2003-08-15 Kayvan A. Sylvan <kayvan@sylvan.com>
|
||||
|
||||
* BufferView_pimpl.C: compile fix
|
||||
|
@ -1,9 +1,12 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "InsetList.h"
|
||||
#include "BufferView.h"
|
||||
#include "buffer.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "insets/updatableinset.h"
|
||||
#include "insets/insetbranch.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@ -176,3 +179,23 @@ void InsetList::deleteInsetsLyXText(BufferView * bv)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void InsetList::insetsOpenCloseBranch(BufferView * bv)
|
||||
{
|
||||
BufferParams bp = bv->buffer()->params;
|
||||
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 (bp.branchlist.selected(inset->params().branch)) {
|
||||
inset->open(bv);
|
||||
} else {
|
||||
inset->close(bv);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -54,6 +54,9 @@ public:
|
||||
void decreasePosAfterPos(lyx::pos_type pos);
|
||||
///
|
||||
void deleteInsetsLyXText(BufferView * bv);
|
||||
///
|
||||
void InsetList::insetsOpenCloseBranch(BufferView * bv);
|
||||
|
||||
private:
|
||||
///
|
||||
List list;
|
||||
|
107
src/LColor.C
107
src/LColor.C
@ -25,7 +25,7 @@ using std::endl;
|
||||
namespace {
|
||||
|
||||
struct ColorEntry {
|
||||
LColor::color lcolor;
|
||||
int lcolor;
|
||||
char const * guiname;
|
||||
char const * latexname;
|
||||
char const * x11name;
|
||||
@ -34,6 +34,11 @@ struct ColorEntry {
|
||||
|
||||
}
|
||||
|
||||
struct TransformEntry {
|
||||
char const * lyxname;
|
||||
int ncolor;
|
||||
};
|
||||
|
||||
|
||||
struct LColor::Pimpl {
|
||||
///
|
||||
@ -51,17 +56,24 @@ struct LColor::Pimpl {
|
||||
/// initialise a color entry
|
||||
void fill(ColorEntry const & entry)
|
||||
{
|
||||
information & in = infotab[entry.lcolor];
|
||||
in.guiname = entry.guiname;
|
||||
in.latexname = entry.latexname;
|
||||
in.x11name = entry.x11name;
|
||||
in.lyxname = entry.lyxname;
|
||||
information in;
|
||||
in.lyxname = string(entry.lyxname);
|
||||
in.latexname = string(entry.latexname);
|
||||
in.x11name = string(entry.x11name);
|
||||
in.guiname = string(entry.guiname);
|
||||
infotab[entry.lcolor] = in;
|
||||
transform[string(entry.lyxname)] = int(entry.lcolor);
|
||||
}
|
||||
|
||||
///
|
||||
typedef std::map<LColor::color, information> InfoTab;
|
||||
typedef std::map<int, information> InfoTab;
|
||||
/// the table of color information
|
||||
InfoTab infotab;
|
||||
|
||||
typedef std::map<string, int> Transform;
|
||||
/// the transform between colour name string and integer code.
|
||||
Transform transform;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -143,18 +155,31 @@ LColor::LColor(LColor const & c)
|
||||
|
||||
|
||||
LColor::~LColor()
|
||||
{
|
||||
delete pimpl_;
|
||||
}
|
||||
{}
|
||||
|
||||
|
||||
void LColor::operator=(LColor const & c)
|
||||
{
|
||||
LColor tmp(c);
|
||||
std::swap(pimpl_, tmp.pimpl_);
|
||||
boost::swap(pimpl_, tmp.pimpl_);
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
{
|
||||
@ -165,6 +190,19 @@ string const LColor::getGUIName(LColor::color c) const
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
return "none";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getX11Name(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
@ -178,6 +216,22 @@ string const LColor::getX11Name(LColor::color c) const
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getLaTeXName(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
@ -187,6 +241,19 @@ string const LColor::getLaTeXName(LColor::color c) const
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
return "black";
|
||||
}
|
||||
|
||||
|
||||
string const LColor::getLyXName(LColor::color c) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||
@ -196,6 +263,12 @@ string const LColor::getLyXName(LColor::color c) const
|
||||
}
|
||||
|
||||
|
||||
size_t LColor::size() const
|
||||
{
|
||||
return pimpl_->infotab.size();
|
||||
}
|
||||
|
||||
|
||||
void LColor::setColor(LColor::color col, string const & x11name)
|
||||
{
|
||||
Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col);
|
||||
@ -219,7 +292,7 @@ bool LColor::setColor(string const & lyxname, string const & x11name)
|
||||
" redefined" << endl;
|
||||
return false;
|
||||
}
|
||||
setColor (col, x11name);
|
||||
setColor(col, x11name);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -230,7 +303,7 @@ LColor::color LColor::getFromGUIName(string const & guiname) const
|
||||
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||
for (; ici != end; ++ici) {
|
||||
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
||||
return ici->first;
|
||||
return static_cast<LColor::color>(ici->first);
|
||||
}
|
||||
return LColor::inherit;
|
||||
}
|
||||
@ -238,13 +311,7 @@ LColor::color LColor::getFromGUIName(string const & guiname) const
|
||||
|
||||
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
||||
{
|
||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin();
|
||||
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||
for (; ici != end; ++ici) {
|
||||
if (!compare_ascii_no_case(ici->second.lyxname, lyxname))
|
||||
return ici->first;
|
||||
}
|
||||
return LColor::inherit;
|
||||
return static_cast<LColor::color>(pimpl_->transform[lyxname]);
|
||||
}
|
||||
|
||||
|
||||
|
22
src/LColor.h
22
src/LColor.h
@ -12,6 +12,7 @@
|
||||
#define LCOLOR_H
|
||||
|
||||
#include "LString.h"
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
/**
|
||||
This is a stateless class.
|
||||
@ -174,6 +175,7 @@ public:
|
||||
ignore
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
LColor();
|
||||
///
|
||||
@ -182,6 +184,14 @@ public:
|
||||
~LColor();
|
||||
///
|
||||
void operator=(LColor const &);
|
||||
|
||||
///
|
||||
void LColor::fill(LColor::color c,
|
||||
string const & lyxname,
|
||||
string const & x11name = string(),
|
||||
string const & latexname = string(),
|
||||
string const & guiname = string());
|
||||
|
||||
/// set the given LyX color to the color defined by the X11 name given
|
||||
void setColor(LColor::color col, string const & x11name);
|
||||
/// set the given LyX color to the color defined by the X11 name given
|
||||
@ -189,15 +199,25 @@ public:
|
||||
|
||||
/// Get GUI name of color
|
||||
string const getGUIName(LColor::color c) const;
|
||||
///
|
||||
string const getGUIName(string const & s) const;
|
||||
|
||||
/// Get X11 name of color
|
||||
string const getX11Name(LColor::color c) const;
|
||||
///
|
||||
string const getX11Name(string const & s) const;
|
||||
|
||||
/// Get LaTeX name of color
|
||||
string const getLaTeXName(LColor::color c) const;
|
||||
///
|
||||
string const getLaTeXName(string const & s) const;
|
||||
|
||||
/// Get LyX name of color
|
||||
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
|
||||
LColor::color getFromGUIName(string const & guiname) const;
|
||||
@ -207,7 +227,7 @@ private:
|
||||
///
|
||||
struct Pimpl;
|
||||
///
|
||||
Pimpl * pimpl_;
|
||||
boost::scoped_ptr<Pimpl> pimpl_;
|
||||
};
|
||||
|
||||
/// the current color definitions
|
||||
|
@ -222,6 +222,7 @@ void LyXAction::init()
|
||||
{ LFUN_MENU_SEPARATOR, "menu-separator-insert", Noop },
|
||||
{ LFUN_META_FAKE, "meta-prefix", NoBuffer },
|
||||
{ LFUN_INSET_MINIPAGE, "minipage-insert", Noop },
|
||||
{ LFUN_INSERT_BRANCH, "branch-insert", Noop },
|
||||
{ LFUN_INSERT_NOTE, "note-insert", Noop },
|
||||
{ LFUN_GOTONOTE, "note-next", ReadOnly },
|
||||
{ LFUN_INSET_TOGGLE, "inset-toggle", ReadOnly },
|
||||
|
@ -60,6 +60,8 @@ lyx_SOURCES = \
|
||||
BufferView_pimpl.h \
|
||||
Bullet.C \
|
||||
Bullet.h \
|
||||
BranchList.C \
|
||||
BranchList.h \
|
||||
Chktex.C \
|
||||
Chktex.h \
|
||||
CutAndPaste.C \
|
||||
|
@ -69,6 +69,7 @@ MenuItem::MenuItem(Kind kind, string const & label,
|
||||
case FloatListInsert:
|
||||
case FloatInsert:
|
||||
case PasteRecent:
|
||||
case Branches:
|
||||
break;
|
||||
case Command:
|
||||
action_ = lyxaction.LookupFunc(command);
|
||||
@ -189,6 +190,7 @@ Menu & Menu::read(LyXLex & lex)
|
||||
{
|
||||
enum Menutags {
|
||||
md_item = 1,
|
||||
md_branches,
|
||||
md_documents,
|
||||
md_endmenu,
|
||||
md_exportformats,
|
||||
@ -208,6 +210,7 @@ Menu & Menu::read(LyXLex & lex)
|
||||
};
|
||||
|
||||
struct keyword_item menutags[md_last - 1] = {
|
||||
{ "branches", md_branches },
|
||||
{ "documents", md_documents },
|
||||
{ "end", md_endmenu },
|
||||
{ "exportformats", md_exportformats },
|
||||
@ -293,6 +296,10 @@ Menu & Menu::read(LyXLex & lex)
|
||||
add(MenuItem(MenuItem::PasteRecent));
|
||||
break;
|
||||
|
||||
case md_branches:
|
||||
add(MenuItem(MenuItem::Branches));
|
||||
break;
|
||||
|
||||
case md_optsubmenu:
|
||||
optional = true;
|
||||
// fallback to md_submenu
|
||||
@ -635,6 +642,25 @@ void expandPasteRecent(Menu & tomenu, LyXView const * view)
|
||||
}
|
||||
|
||||
|
||||
void expandBranches(Menu & tomenu, LyXView const * view)
|
||||
{
|
||||
BufferParams const & params = view->buffer()->params;
|
||||
|
||||
std::list<Branch>::const_iterator cit = params.branchlist.begin();
|
||||
std::list<Branch>::const_iterator end = params.branchlist.end();
|
||||
|
||||
for (int ii = 1; cit != end; ++cit, ++ii) {
|
||||
string label = cit->getBranch();
|
||||
int const action = lyxaction.
|
||||
getPseudoAction(LFUN_INSERT_BRANCH,
|
||||
(cit->getBranch()));
|
||||
if (ii < 10)
|
||||
label = tostr(ii) + ". " + label + "|" + tostr(ii);
|
||||
tomenu.add(MenuItem(MenuItem::Command, label, action), view);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
@ -671,6 +697,10 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
|
||||
expandPasteRecent(tomenu, view);
|
||||
break;
|
||||
|
||||
case MenuItem::Branches:
|
||||
expandBranches(tomenu, view);
|
||||
break;
|
||||
|
||||
case MenuItem::Toc:
|
||||
expandToc(tomenu, view);
|
||||
break;
|
||||
|
@ -65,7 +65,9 @@ public:
|
||||
FloatInsert,
|
||||
/** This is the list of selections that can
|
||||
be pasted. */
|
||||
PasteRecent
|
||||
PasteRecent,
|
||||
/** Available branches in document */
|
||||
Branches
|
||||
};
|
||||
/// Create a Command type MenuItem
|
||||
MenuItem(Kind kind,
|
||||
@ -196,7 +198,7 @@ public:
|
||||
/// Expands some special entries of the menu
|
||||
/** The entries with the following kind are expanded to a
|
||||
sequence of Command MenuItems: Lastfiles, Documents,
|
||||
ViewFormats, ExportFormats, UpdateFormats
|
||||
ViewFormats, ExportFormats, UpdateFormats, Branches
|
||||
*/
|
||||
void expand(Menu const & frommenu, Menu & tomenu,
|
||||
LyXView const *) const;
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include "author.h"
|
||||
#include "gettext.h"
|
||||
|
||||
#include "LColor.h"
|
||||
|
||||
#include "support/lyxalgo.h" // for lyx::count
|
||||
#include "support/lyxlib.h"
|
||||
#include "support/lstrings.h"
|
||||
@ -192,6 +194,31 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
|
||||
} else if (token == "\\tracking_changes") {
|
||||
lex.nextToken();
|
||||
tracking_changes = lex.getInteger();
|
||||
} else if (token == "\\branch") {
|
||||
lex.nextToken();
|
||||
string branch = lex.getString();
|
||||
branchlist.add(branch);
|
||||
while (true) {
|
||||
lex.nextToken();
|
||||
string const tok = lex.getString();
|
||||
if (tok == "\\end_branch")
|
||||
break;
|
||||
if (tok == "\\selected") {
|
||||
lex.nextToken();
|
||||
branchlist.setSelected(branch, lex.getInteger());
|
||||
}
|
||||
// not yet operational
|
||||
if (tok == "\\color") {
|
||||
lex.nextToken();
|
||||
string color = lex.getString();
|
||||
branchlist.setColor(branch, color);
|
||||
// Update also the LColor table:
|
||||
if (color == "none")
|
||||
color = lcolor.getX11Name(LColor::background);
|
||||
lcolor.fill(static_cast<LColor::color>(lcolor.size()),
|
||||
branch, color);
|
||||
}
|
||||
}
|
||||
} else if (token == "\\author") {
|
||||
lex.nextToken();
|
||||
istringstream ss(STRCONV(lex.getString()));
|
||||
@ -380,6 +407,17 @@ void BufferParams::writeFile(ostream & os) const
|
||||
<< "\n\\use_numerical_citations " << use_numerical_citations
|
||||
<< "\n\\paperorientation " << string_orientation[orientation]
|
||||
<< '\n';
|
||||
|
||||
std::list<Branch>::const_iterator it = branchlist.begin();
|
||||
std::list<Branch>::const_iterator end = branchlist.end();
|
||||
for (; it != end; ++it) {
|
||||
os << "\\branch " << it->getBranch()
|
||||
<< "\n\\selected " << it->getSelected()
|
||||
<< "\n\\color " << it->getColor()
|
||||
<< "\n\\end_branch"
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
if (!paperwidth.empty())
|
||||
os << "\\paperwidth "
|
||||
<< VSpace(paperwidth).asLyXCommand() << '\n';
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "texrow.h"
|
||||
#include "author.h"
|
||||
#include "paper.h"
|
||||
#include "BranchList.h"
|
||||
|
||||
#include "insets/insetquotes.h"
|
||||
|
||||
@ -134,6 +135,8 @@ public:
|
||||
int tocdepth;
|
||||
///
|
||||
Language const * language;
|
||||
/// BranchList:
|
||||
BranchList branchlist;
|
||||
///
|
||||
string inputenc;
|
||||
///
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "insets/insetmarginal.h"
|
||||
#include "insets/insetminipage.h"
|
||||
#include "insets/insetnote.h"
|
||||
#include "insets/insetbranch.h"
|
||||
#include "insets/insetoptarg.h"
|
||||
#include "insets/insetref.h"
|
||||
#include "insets/insetspace.h"
|
||||
@ -77,6 +78,14 @@ InsetOld * createInset(FuncRequest const & cmd)
|
||||
arg = "Note";
|
||||
return new InsetNote(params, arg);
|
||||
}
|
||||
case LFUN_INSERT_BRANCH:
|
||||
{
|
||||
string arg = cmd.getArg(0);
|
||||
if (arg.empty())
|
||||
arg = "none";
|
||||
return new InsetBranch(params, arg);
|
||||
}
|
||||
|
||||
case LFUN_INSET_ERT:
|
||||
return new InsetERT(params);
|
||||
|
||||
@ -357,6 +366,8 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
|
||||
} else if (tmptok == "Note" || tmptok == "Comment"
|
||||
|| tmptok == "Greyedout") {
|
||||
inset = new InsetNote(buf.params, tmptok);
|
||||
} else if (tmptok == "Branch") {
|
||||
inset = new InsetBranch(buf.params, tmptok);
|
||||
} else if (tmptok == "Include") {
|
||||
InsetCommandParams p("Include");
|
||||
inset = new InsetInclude(p, buf);
|
||||
|
@ -1,4 +1,21 @@
|
||||
|
||||
2003-08-16 Martin Vermeer <martin.vermeer@hut.fi>
|
||||
|
||||
* ControlBranch.[Ch]:
|
||||
* ControlDocument.C:
|
||||
* Makefile.am: implements the 'branch
|
||||
inset' idea. This allows the output of various versions of a
|
||||
document from a single source version, selectively outputing or
|
||||
suppressing output of parts of the text.
|
||||
This implementation contains a 'branch list editor' in a separate
|
||||
tab of the document settings dialog. Branches are user definable
|
||||
and have a "display colour" to distinguish them on-screen.
|
||||
|
||||
ColorHandler was somewhat cleaned up.
|
||||
(1) make possible a dynamically growing LColor list by allowing
|
||||
the graphic context cache to grow along (vector);
|
||||
(2) eliminate an IMHO unnecessary step in colour allocation.
|
||||
|
||||
2003-08-15 André Pönitz <poenitz@gmx.net>
|
||||
|
||||
* ControlErrorList.C:
|
||||
|
44
src/frontends/controllers/ControlBranch.C
Normal file
44
src/frontends/controllers/ControlBranch.C
Normal file
@ -0,0 +1,44 @@
|
||||
/**
|
||||
* \file ControlBranch.C
|
||||
* This file is part of LyX, the document processor.
|
||||
* Licence details can be found in the file COPYING.
|
||||
*
|
||||
* \author Angus Leeming
|
||||
* \author Martin Vermeer
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "ControlBranch.h"
|
||||
#include "funcrequest.h"
|
||||
#include "insets/insetbranch.h"
|
||||
#include "debug.h"
|
||||
|
||||
ControlBranch::ControlBranch(Dialog & parent)
|
||||
: Dialog::Controller(parent)
|
||||
{}
|
||||
|
||||
|
||||
bool ControlBranch::initialiseParams(string const & data)
|
||||
{
|
||||
InsetBranchParams params;
|
||||
InsetBranchMailer::string2params(data, params);
|
||||
params_.reset(new InsetBranchParams(params));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void ControlBranch::clearParams()
|
||||
{
|
||||
params_.reset();
|
||||
}
|
||||
|
||||
void ControlBranch::dispatchParams()
|
||||
{
|
||||
string const lfun = InsetBranchMailer::params2string(string("branch"), params());
|
||||
kernel().dispatch(FuncRequest(LFUN_INSET_APPLY, lfun));
|
||||
}
|
||||
|
44
src/frontends/controllers/ControlBranch.h
Normal file
44
src/frontends/controllers/ControlBranch.h
Normal file
@ -0,0 +1,44 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file ControlBranch.h
|
||||
* This file is part of LyX, the document processor.
|
||||
* Licence details can be found in the file COPYING.
|
||||
*
|
||||
* \author Angus Leeming
|
||||
* \author Martin Vermeer
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
|
||||
#ifndef CONTROLBRANCH_H
|
||||
#define CONTROLBRANCH_H
|
||||
|
||||
|
||||
#include "Dialog.h"
|
||||
#include "debug.h"
|
||||
|
||||
class InsetBranchParams;
|
||||
|
||||
class ControlBranch : public Dialog::Controller {
|
||||
public:
|
||||
///
|
||||
ControlBranch(Dialog &);
|
||||
///
|
||||
virtual bool initialiseParams(string const & data);
|
||||
///
|
||||
virtual void clearParams();
|
||||
///
|
||||
virtual void dispatchParams();
|
||||
///
|
||||
virtual bool isBufferDependent() const { return true; }
|
||||
///
|
||||
InsetBranchParams & params() { return *params_.get(); }
|
||||
///
|
||||
InsetBranchParams const & params() const { return *params_.get(); }
|
||||
///
|
||||
private:
|
||||
///
|
||||
boost::scoped_ptr<InsetBranchParams> params_;
|
||||
};
|
||||
|
||||
#endif // CONTROLBRANCH_H
|
@ -82,6 +82,14 @@ void ControlDocument::apply()
|
||||
buffer()->markDirty();
|
||||
|
||||
lv_.message(_("Document settings applied"));
|
||||
|
||||
// Open insets of selected branches, close deselected ones
|
||||
// Currently only top-level insets in buffer handled (bug).
|
||||
ParIterator pit = buffer()->par_iterator_begin();
|
||||
ParIterator pend = buffer()->par_iterator_end();
|
||||
for (; pit != pend; ++pit) {
|
||||
pit->insetlist.insetsOpenCloseBranch(bufferview());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,6 +31,8 @@ libcontrollers_la_SOURCES= \
|
||||
ControlBibtex.h \
|
||||
ControlButtons.C \
|
||||
ControlButtons.h \
|
||||
ControlBranch.C \
|
||||
ControlBranch.h \
|
||||
ControlCharacter.C \
|
||||
ControlCharacter.h \
|
||||
ControlChanges.C \
|
||||
|
@ -1,3 +1,25 @@
|
||||
2003-08-17 Martin Vermeer <martin.vermeer@hut.fi>
|
||||
|
||||
* ColorHandler.[Ch]:
|
||||
* Dialogs.C:
|
||||
* FormBranch.[Ch]:
|
||||
* FormDocument.[Ch]:
|
||||
* Makefile.am:
|
||||
* forms/Makefile.am:
|
||||
* forms/form_branch.fd:
|
||||
* forms/form_document.fd: implements the
|
||||
'branch inset' idea. This allows the output of various versions of
|
||||
a document from a single source version, selectively outputing or
|
||||
suppressing output of parts of the text.
|
||||
This implementation contains a 'branch list editor' in a separate
|
||||
tab of the document settings dialog. Branches are user definable
|
||||
and have a "display colour" to distinguish them on-screen.
|
||||
|
||||
ColorHandler was somewhat cleaned up.
|
||||
(1) make possible a dynamically growing LColor list by allowing
|
||||
the graphic context cache to grow along (vector);
|
||||
(2) eliminate an IMHO unnecessary step in colour allocation.
|
||||
|
||||
2003-08-12 Michael Schmitt <michael.schmitt@teststep.org>
|
||||
|
||||
* FormMathsMatrix.C: rename "Center" to "Middle"
|
||||
|
@ -44,6 +44,7 @@ namespace {
|
||||
|
||||
|
||||
LyXColorHandler::LyXColorHandler()
|
||||
: colorGCcache(LColor::ignore + 1)
|
||||
{
|
||||
display = fl_get_display();
|
||||
drawable = XCreatePixmap(display,
|
||||
@ -52,7 +53,7 @@ LyXColorHandler::LyXColorHandler()
|
||||
|
||||
colormap = fl_state[fl_get_vclass()].colormap;
|
||||
// Clear the GC cache
|
||||
for (int i = 0; i <= LColor::ignore; ++i) {
|
||||
for (int i = 0; i < colorGCcache.size(); ++i) {
|
||||
colorGCcache[i] = 0;
|
||||
}
|
||||
}
|
||||
@ -61,7 +62,7 @@ LyXColorHandler::LyXColorHandler()
|
||||
LyXColorHandler::~LyXColorHandler()
|
||||
{
|
||||
// Release all the registered GCs
|
||||
for (int i = 0; i <= LColor::ignore; ++i) {
|
||||
for (unsigned i = 0; i < colorGCcache.size(); ++i) {
|
||||
if (colorGCcache[i] != 0) {
|
||||
XFreeGC(display, colorGCcache[i]);
|
||||
}
|
||||
@ -82,40 +83,28 @@ unsigned long LyXColorHandler::colorPixel(LColor::color c)
|
||||
}
|
||||
|
||||
|
||||
// Gets GC according to color
|
||||
// Uses caching
|
||||
GC LyXColorHandler::getGCForeground(LColor::color c)
|
||||
GC LyXColorHandler::getGCForeground(string const & s)
|
||||
{
|
||||
if (colorGCcache[c] != 0)
|
||||
return colorGCcache[c];
|
||||
|
||||
XColor xcol;
|
||||
XColor ccol;
|
||||
string const s = lcolor.getX11Name(c);
|
||||
XGCValues val;
|
||||
|
||||
// Look up the RGB values for the color, and an approximate
|
||||
// color that we can hope to get on this display.
|
||||
if (XLookupColor(display, colormap, s.c_str(), &xcol, &ccol) == 0) {
|
||||
lyxerr << bformat(
|
||||
_("LyX: Unknown X11 color %1$s for %2$s\n"
|
||||
_("LyX: Unknown X11 color %1$s\n"
|
||||
" Using black instead, sorry!"),
|
||||
s, lcolor.getGUIName(c)) << endl;
|
||||
s) << endl;
|
||||
unsigned long bla = BlackPixel(display,
|
||||
DefaultScreen(display));
|
||||
val.foreground = bla;
|
||||
// Try the exact RGB values first, then the approximate.
|
||||
} else if (XAllocColor(display, colormap, &xcol) != 0) {
|
||||
if (lyxerr.debugging(Debug::GUI)) {
|
||||
lyxerr << bformat(_("LyX: X11 color %1$s allocated for %2$s"),
|
||||
s, lcolor.getGUIName(c)) << endl;
|
||||
lyxerr << bformat(_("LyX: X11 color %1$s allocated"),
|
||||
s) << endl;
|
||||
}
|
||||
val.foreground = xcol.pixel;
|
||||
} else if (XAllocColor(display, colormap, &ccol)) {
|
||||
lyxerr << bformat(
|
||||
_("LyX: Using approximated X11 color %1$s allocated for %2$s"),
|
||||
s, lcolor.getGUIName(c)) << endl;
|
||||
val.foreground = xcol.pixel;
|
||||
} else {
|
||||
// Here we are traversing the current colormap to find
|
||||
// the color closest to the one we want.
|
||||
@ -155,8 +144,8 @@ GC LyXColorHandler::getGCForeground(LColor::color c)
|
||||
}
|
||||
|
||||
lyxerr << bformat(
|
||||
_("LyX: Couldn't allocate '%1$s' for %2$s with (r,g,b)=%3$s.\n"),
|
||||
s, lcolor.getGUIName(c), tostr(xcol));
|
||||
_("LyX: Couldn't allocate '%1$s' with (r,g,b)=%3$s.\n"),
|
||||
s, tostr(xcol));
|
||||
|
||||
lyxerr << bformat(
|
||||
_(" Using closest allocated color with (r,g,b)=%1$s instead.\n"
|
||||
@ -165,11 +154,34 @@ GC LyXColorHandler::getGCForeground(LColor::color c)
|
||||
|
||||
val.foreground = cmap[closest_pixel].pixel;
|
||||
}
|
||||
|
||||
val.function = GXcopy;
|
||||
return colorGCcache[c] = XCreateGC(display, drawable,
|
||||
return XCreateGC(display, drawable,
|
||||
GCForeground | GCFunction, &val);
|
||||
}
|
||||
|
||||
// Gets GC according to color
|
||||
// Uses caching
|
||||
GC LyXColorHandler::getGCForeground(LColor::color c)
|
||||
{
|
||||
if (static_cast<unsigned>(c) >= colorGCcache.size()) {
|
||||
colorGCcache.resize(c + 1, 0);
|
||||
}
|
||||
|
||||
if (colorGCcache[c] != 0) {
|
||||
return colorGCcache[c];
|
||||
}
|
||||
XColor xcol;
|
||||
XColor ccol;
|
||||
string const s = lcolor.getX11Name(c);
|
||||
// Look up the RGB values for the color, and an approximate
|
||||
// color that we can hope to get on this display.
|
||||
if (XLookupColor(display, colormap, s.c_str(), &xcol, &ccol) == 0) {
|
||||
lyxerr << bformat(
|
||||
_("LyX: Unknown X11 color %1$s for %2$s\n"),
|
||||
s, lcolor.getGUIName(c)) << endl;
|
||||
}
|
||||
return colorGCcache[c] = getGCForeground(s);
|
||||
}
|
||||
|
||||
|
||||
// Gets GC for line
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "frontends/Painter.h"
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
// This is only included to provide stuff for the non-public sections
|
||||
@ -48,8 +49,10 @@ private:
|
||||
Display * display;
|
||||
///
|
||||
Colormap colormap;
|
||||
///
|
||||
std::vector<GC> colorGCcache;
|
||||
///
|
||||
GC colorGCcache[LColor::ignore + 1];
|
||||
GC getGCForeground(string const & s);
|
||||
///
|
||||
typedef std::map<int, GC> LineGCCache;
|
||||
///
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "ControlAboutlyx.h"
|
||||
#include "ControlBibtex.h"
|
||||
#include "ControlBranch.h"
|
||||
#include "ControlChanges.h"
|
||||
#include "ControlCharacter.h"
|
||||
#include "ControlCitation.h"
|
||||
@ -44,6 +45,7 @@
|
||||
#include "FormAboutlyx.h"
|
||||
#include "FormBibitem.h"
|
||||
#include "FormBibtex.h"
|
||||
#include "FormBranch.h"
|
||||
#include "FormChanges.h"
|
||||
#include "FormCharacter.h"
|
||||
#include "FormCitation.h"
|
||||
@ -110,7 +112,7 @@ FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
|
||||
}
|
||||
|
||||
|
||||
char const * const dialognames[] = { "aboutlyx", "bibitem", "bibtex", "changes",
|
||||
char const * const dialognames[] = { "aboutlyx", "bibitem", "bibtex", "branch", "changes",
|
||||
"character", "citation", "error", "errorlist" , "ert", "external", "file",
|
||||
"float", "graphics", "include", "index", "label", "latexlog", "mathpanel",
|
||||
"mathaccents", "matharrows", "mathoperators", "mathrelations", "mathgreek",
|
||||
@ -411,6 +413,10 @@ Dialog * Dialogs::build(string const & name)
|
||||
dialog->setController(new ControlNote(*dialog));
|
||||
dialog->setView(new FormNote(*dialog));
|
||||
dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
|
||||
} else if (name == "branch") {
|
||||
dialog->setController(new ControlBranch(*dialog));
|
||||
dialog->setView(new FormBranch(*dialog));
|
||||
dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
|
||||
} else if (name == "paragraph") {
|
||||
dialog->setController(new ControlParagraph(*dialog));
|
||||
dialog->setView(new FormParagraph(*dialog));
|
||||
|
63
src/frontends/xforms/FormBranch.C
Normal file
63
src/frontends/xforms/FormBranch.C
Normal file
@ -0,0 +1,63 @@
|
||||
/**
|
||||
* \file FormBranch.C
|
||||
* 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
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "xformsBC.h"
|
||||
#include "ControlBranch.h"
|
||||
#include "FormBranch.h"
|
||||
#include "forms/form_branch.h"
|
||||
#include "xforms_helpers.h" // formatted
|
||||
#include "lyx_forms.h"
|
||||
#include "insets/insetbranch.h"
|
||||
#include "debug.h"
|
||||
|
||||
typedef FormController<ControlBranch, FormView<FD_branch> > base_class;
|
||||
|
||||
FormBranch::FormBranch(Dialog & parent)
|
||||
: base_class(parent, _("Branch"))
|
||||
{}
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
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());
|
||||
|
||||
string branch(controller().params().branch);
|
||||
if (all_branches.find(branch) != string::npos && branch != "none")
|
||||
fl_set_choice_text(dialog_->choice_branch, branch.c_str());
|
||||
}
|
||||
|
||||
|
||||
void FormBranch::apply()
|
||||
{
|
||||
string const type = fl_get_choice_text(dialog_->choice_branch);
|
||||
|
||||
controller().params().branch = type;
|
||||
}
|
||||
|
37
src/frontends/xforms/FormBranch.h
Normal file
37
src/frontends/xforms/FormBranch.h
Normal file
@ -0,0 +1,37 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file FormBranch.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 FORMBRANCH_H
|
||||
#define FORMBRANCH_H
|
||||
|
||||
|
||||
#include "FormDialogView.h"
|
||||
|
||||
|
||||
class ControlBranch;
|
||||
struct FD_branch;
|
||||
|
||||
/** This class provides an XForms implementation of the Branch Dialog.
|
||||
*/
|
||||
class FormBranch : public FormController<ControlBranch, FormView<FD_branch> > {
|
||||
public:
|
||||
/// Constructor
|
||||
FormBranch(Dialog &);
|
||||
private:
|
||||
///
|
||||
virtual void apply();
|
||||
/// Build the dialog
|
||||
virtual void build();
|
||||
/// Update dialog before showing it
|
||||
virtual void update();
|
||||
};
|
||||
|
||||
#endif // FORMBRANCH_H
|
@ -5,6 +5,8 @@
|
||||
*
|
||||
* \author Jürgen Vigna
|
||||
* \author Rob Lahaye
|
||||
* \author Martin Vermeer
|
||||
* \author Juergen Spitzmueller
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
@ -17,17 +19,23 @@
|
||||
#include "xformsBC.h"
|
||||
#include "ButtonController.h"
|
||||
|
||||
#include "FormColorpicker.h"
|
||||
#include "LColor.h"
|
||||
#include "Lsstream.h"
|
||||
#include "bmtable.h"
|
||||
#include "checkedwidgets.h"
|
||||
#include "Tooltips.h"
|
||||
#include "input_validators.h" // fl_unsigned_float_filter
|
||||
#include "xforms_helpers.h"
|
||||
|
||||
#include "bufferparams.h"
|
||||
#include "CutAndPaste.h"
|
||||
#include "debug.h"
|
||||
#include "language.h"
|
||||
#include "lyxrc.h"
|
||||
#include "lyxtextclasslist.h"
|
||||
#include "tex-strings.h"
|
||||
#include "ColorHandler.h"
|
||||
|
||||
#include "controllers/frnt_lang.h"
|
||||
#include "controllers/helper_funcs.h"
|
||||
@ -43,12 +51,15 @@
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
#include <functional>
|
||||
#include <iomanip>
|
||||
|
||||
using namespace lyx::support;
|
||||
|
||||
using std::bind2nd;
|
||||
using std::vector;
|
||||
using std::endl;
|
||||
using std::setw;
|
||||
using std::setfill;
|
||||
|
||||
|
||||
namespace {
|
||||
@ -59,6 +70,7 @@ bool const scalableTabfolders = false;
|
||||
bool const scalableTabfolders = true;
|
||||
#endif
|
||||
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
@ -343,6 +355,46 @@ void FormDocument::build()
|
||||
fl_set_bmtable_pixmap_file(bullets_->bmtable_panel, 6, 6,
|
||||
bmtablefile.c_str());
|
||||
|
||||
picker_.reset(new FormColorpicker);
|
||||
|
||||
// the document branches form
|
||||
branch_.reset(build_document_branch(this));
|
||||
|
||||
fl_set_object_color(branch_->button_color,
|
||||
GUI_COLOR_CHOICE, GUI_COLOR_CHOICE);
|
||||
|
||||
bcview().addReadOnly(branch_->input_all_branches);
|
||||
bcview().addReadOnly(branch_->button_add_branch);
|
||||
bcview().addReadOnly(branch_->button_remove_branch);
|
||||
bcview().addReadOnly(branch_->button_select);
|
||||
bcview().addReadOnly(branch_->button_deselect);
|
||||
bcview().addReadOnly(branch_->button_modify);
|
||||
bcview().addReadOnly(branch_->browser_all_branches);
|
||||
|
||||
// set up the tooltips for branches form
|
||||
string str = _("Enter the name of a new branch.");
|
||||
tooltips().init(branch_->input_all_branches, str);
|
||||
str = _("Add a new branch to the document.");
|
||||
tooltips().init(branch_->button_add_branch, str);
|
||||
str = _("Remove the selected branch from the document.");
|
||||
tooltips().init(branch_->button_remove_branch, str);
|
||||
str = _("Activate the selected branch for output.");
|
||||
tooltips().init(branch_->button_select, str);
|
||||
str = _("Deactivate the selected activated branch.");
|
||||
tooltips().init(branch_->button_deselect, str);
|
||||
str = _("Available branches for this document.");
|
||||
tooltips().init(branch_->browser_all_branches, str);
|
||||
str = _("Activated branches. Content will occur in the document\'s output");
|
||||
tooltips().init(branch_->browser_selection, str);
|
||||
str = _("Modify background color of branch inset");
|
||||
tooltips().init(branch_->button_modify, str);
|
||||
str = _("Background color of branch inset");
|
||||
tooltips().init(branch_->button_color, str);
|
||||
|
||||
// Handle middle mouse paint:
|
||||
setPrehandler(branch_->input_all_branches);
|
||||
fl_set_input_return(branch_->input_all_branches, FL_RETURN_CHANGED);
|
||||
|
||||
// Enable the tabfolder to be rescaled correctly.
|
||||
if (scalableTabfolders)
|
||||
fl_set_tabfolder_autofit(dialog_->tabfolder, FL_FIT);
|
||||
@ -366,6 +418,9 @@ void FormDocument::build()
|
||||
fl_deactivate_object(fbullet);
|
||||
fl_set_object_lcol(fbullet, FL_INACTIVE);
|
||||
}
|
||||
|
||||
fl_addto_tabfolder(dialog_->tabfolder,_("Branches").c_str(),
|
||||
branch_->form);
|
||||
}
|
||||
|
||||
|
||||
@ -378,6 +433,7 @@ void FormDocument::apply()
|
||||
language_apply(params);
|
||||
options_apply(params);
|
||||
bullets_apply(params);
|
||||
branch_apply(params);
|
||||
}
|
||||
|
||||
|
||||
@ -395,6 +451,7 @@ void FormDocument::update()
|
||||
language_update(params);
|
||||
options_update(params);
|
||||
bullets_update(params);
|
||||
branch_update(params);
|
||||
}
|
||||
|
||||
|
||||
@ -456,6 +513,15 @@ ButtonPolicy::SMInput FormDocument::input(FL_OBJECT * ob, long)
|
||||
setEnabled(options_->choice_citation_format,
|
||||
fl_get_button(options_->check_use_natbib));
|
||||
|
||||
} else if (ob == branch_->browser_all_branches ||
|
||||
ob == branch_->browser_selection ||
|
||||
ob == branch_->button_add_branch ||
|
||||
ob == branch_->button_remove_branch ||
|
||||
ob == branch_->button_modify ||
|
||||
ob == branch_->button_select ||
|
||||
ob == branch_->button_deselect ||
|
||||
ob == branch_->button_deselect) {
|
||||
branch_input(ob);
|
||||
} else if (ob == dialog_->button_save_defaults) {
|
||||
apply();
|
||||
controller().saveAsDefault();
|
||||
@ -606,6 +672,139 @@ ButtonPolicy::SMInput FormDocument::input(FL_OBJECT * ob, long)
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
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));
|
||||
}
|
||||
|
||||
} 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());
|
||||
}
|
||||
}
|
||||
} else if (ob == branch_->button_select) {
|
||||
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()) {
|
||||
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());
|
||||
}
|
||||
}
|
||||
} 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);
|
||||
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);
|
||||
}
|
||||
} 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;
|
||||
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);
|
||||
}
|
||||
setEnabled(branch_->button_select,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
setEnabled(branch_->button_deselect,
|
||||
(fl_get_browser(branch_->browser_selection) > 0));
|
||||
setEnabled(branch_->button_remove_branch,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
setEnabled(branch_->button_modify,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
|
||||
branchlist_ = params.branchlist;
|
||||
}
|
||||
|
||||
|
||||
bool FormDocument::class_apply(BufferParams ¶ms)
|
||||
{
|
||||
bool redo = false;
|
||||
@ -830,6 +1029,16 @@ 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();
|
||||
}
|
||||
|
||||
|
||||
void FormDocument::UpdateClassParams(BufferParams const & params)
|
||||
{
|
||||
// These are the params that have to be updated on any class change
|
||||
@ -1094,6 +1303,56 @@ void FormDocument::bullets_update(BufferParams const & params)
|
||||
}
|
||||
|
||||
|
||||
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");
|
||||
|
||||
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);
|
||||
current_branch =
|
||||
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());
|
||||
}
|
||||
}
|
||||
// display proper colour...
|
||||
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);
|
||||
|
||||
setEnabled(branch_->button_select,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
setEnabled(branch_->button_deselect,
|
||||
(fl_get_browser(branch_->browser_selection) > 0));
|
||||
setEnabled(branch_->button_remove_branch,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
setEnabled(branch_->button_modify,
|
||||
(fl_get_browser(branch_->browser_all_branches) > 0));
|
||||
}
|
||||
|
||||
|
||||
void FormDocument::checkReadOnly()
|
||||
{
|
||||
if (bc().readOnly(controller().bufferIsReadonly())) {
|
||||
|
@ -17,18 +17,32 @@
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
#include "lyx_forms.h"
|
||||
#include <vector>
|
||||
|
||||
class ControlDocument;
|
||||
|
||||
class BufferParams;
|
||||
|
||||
class FormColorpicker;
|
||||
|
||||
struct FD_document;
|
||||
struct FD_document_paper;
|
||||
struct FD_document_class;
|
||||
struct FD_document_language;
|
||||
struct FD_document_options;
|
||||
struct FD_document_bullet;
|
||||
struct FD_document_branch;
|
||||
|
||||
namespace {
|
||||
|
||||
enum GuiColors {
|
||||
GUI_COLOR_CHOICE = FL_FREE_COL15
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** This class provides an XForms implementation of the FormDocument dialog.
|
||||
* The table-layout-form here changes values for latex-tabulars
|
||||
@ -49,6 +63,8 @@ private:
|
||||
/// Apply from dialog
|
||||
virtual void apply();
|
||||
|
||||
///
|
||||
void branch_input(FL_OBJECT *);
|
||||
///
|
||||
void ChoiceBulletSize(FL_OBJECT * ob, long);
|
||||
///
|
||||
@ -78,6 +94,8 @@ private:
|
||||
void options_update(BufferParams const &);
|
||||
///
|
||||
void bullets_update(BufferParams const &);
|
||||
///
|
||||
void branch_update(BufferParams const &);
|
||||
|
||||
///
|
||||
void paper_apply(BufferParams &);
|
||||
@ -89,6 +107,8 @@ private:
|
||||
bool options_apply(BufferParams &);
|
||||
///
|
||||
void bullets_apply(BufferParams &);
|
||||
///
|
||||
void branch_apply(BufferParams &);
|
||||
|
||||
/// Real GUI implementation.
|
||||
boost::scoped_ptr<FD_document_paper> paper_;
|
||||
@ -101,6 +121,10 @@ private:
|
||||
///
|
||||
boost::scoped_ptr<FD_document_bullet> bullets_;
|
||||
///
|
||||
boost::scoped_ptr<FD_document_branch> branch_;
|
||||
///
|
||||
boost::scoped_ptr<FormColorpicker> picker_;
|
||||
///
|
||||
int ActCell;
|
||||
///
|
||||
int Confirmed;
|
||||
@ -112,6 +136,8 @@ private:
|
||||
FL_OBJECT * fbullet;
|
||||
///
|
||||
std::vector<string> lang_;
|
||||
/// Contains all legal branches for this doc
|
||||
BranchList branchlist_;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -74,6 +74,8 @@ libxforms_la_SOURCES = \
|
||||
FormBibtex.h \
|
||||
FormBrowser.C \
|
||||
FormBrowser.h \
|
||||
FormBranch.C \
|
||||
FormBranch.h \
|
||||
FormChanges.C \
|
||||
FormChanges.h \
|
||||
FormCharacter.C \
|
||||
|
@ -13,6 +13,7 @@ SRCS = form_aboutlyx.fd \
|
||||
form_bibitem.fd \
|
||||
form_bibtex.fd \
|
||||
form_browser.fd \
|
||||
form_branch.fd \
|
||||
form_changes.fd \
|
||||
form_character.fd \
|
||||
form_citation.fd \
|
||||
|
107
src/frontends/xforms/forms/form_branch.fd
Normal file
107
src/frontends/xforms/forms/form_branch.fd
Normal file
@ -0,0 +1,107 @@
|
||||
Magic: 13000
|
||||
|
||||
Internal Form Definition File
|
||||
(do not change)
|
||||
|
||||
Number of forms: 1
|
||||
Unit of measure: FL_COORD_PIXEL
|
||||
SnapGrid: 7
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_branch
|
||||
Width: 407
|
||||
Height: 113
|
||||
Number of Objects: 5
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: UP_BOX
|
||||
box: 0 0 407 113
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 154 21 217 28
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Branch:|#B
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_branch
|
||||
callback: C_FormDialogView_InputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: RETURN_BUTTON
|
||||
box: 49 70 84 28
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: OK
|
||||
shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_ok
|
||||
callback: C_FormDialogView_OKCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: RETURN_BUTTON
|
||||
box: 154 70 98 28
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Apply|#A
|
||||
shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_apply
|
||||
callback: C_FormDialogView_ApplyCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: RETURN_BUTTON
|
||||
box: 266 70 105 28
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Cancel|^[
|
||||
shortcut: ^M
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_cancel
|
||||
callback: C_FormDialogView_CancelCB
|
||||
argument: 0
|
||||
|
||||
==============================
|
||||
create_the_forms
|
@ -3,7 +3,7 @@ Magic: 13000
|
||||
Internal Form Definition File
|
||||
(do not change)
|
||||
|
||||
Number of forms: 6
|
||||
Number of forms: 7
|
||||
Unit of measure: FL_COORD_PIXEL
|
||||
SnapGrid: 5
|
||||
|
||||
@ -178,13 +178,13 @@ argument: 0
|
||||
=============== FORM ===============
|
||||
Name: form_document_paper
|
||||
Width: 395
|
||||
Height: 310
|
||||
Height: 320
|
||||
Number of Objects: 29
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 395 310
|
||||
box: 0 0 395 320
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -247,7 +247,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Width:|#W
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_custom_width
|
||||
callback: C_FormBaseInputCB
|
||||
@ -265,7 +265,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_custom_width_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -283,7 +283,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Height:|#H
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_custom_height
|
||||
callback: C_FormBaseInputCB
|
||||
@ -301,7 +301,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_custom_height_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -328,7 +328,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -400,7 +400,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_LABELFRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 5 130 385 175
|
||||
box: 5 130 385 185
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_BLACK FL_COL1
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
@ -463,7 +463,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Top:|#T
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_top_margin
|
||||
callback: C_FormBaseInputCB
|
||||
@ -481,7 +481,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_top_margin_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -499,7 +499,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Bottom:|#B
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_bottom_margin
|
||||
callback: C_FormBaseInputCB
|
||||
@ -517,7 +517,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_bottom_margin_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -526,7 +526,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 75 240 50 25
|
||||
box: 75 250 50 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -535,7 +535,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Inner:|#I
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_inner_margin
|
||||
callback: C_FormBaseInputCB
|
||||
@ -544,7 +544,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 125 240 50 25
|
||||
box: 125 250 50 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -553,7 +553,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_inner_margin_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -562,7 +562,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 75 270 50 25
|
||||
box: 75 280 50 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -571,7 +571,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Outer:|#u
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_outer_margin
|
||||
callback: C_FormBaseInputCB
|
||||
@ -580,7 +580,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 125 270 50 25
|
||||
box: 125 280 50 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -589,7 +589,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_outer_margin_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -607,7 +607,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Headheight:|#H
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_head_height
|
||||
callback: C_FormBaseInputCB
|
||||
@ -625,7 +625,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_head_height_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -643,7 +643,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Headsep:|#d
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_head_sep
|
||||
callback: C_FormBaseInputCB
|
||||
@ -661,7 +661,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_head_sep_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -679,7 +679,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Footskip:|#F
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_foot_skip
|
||||
callback: C_FormBaseInputCB
|
||||
@ -697,7 +697,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_foot_skip_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -865,7 +865,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Spacing:|#g
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_spacing
|
||||
callback: C_FormBaseInputCB
|
||||
@ -883,7 +883,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Extra Options:|#X
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_extra
|
||||
callback: C_FormBaseInputCB
|
||||
@ -901,7 +901,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_skip
|
||||
callback: C_FormBaseInputCB
|
||||
@ -919,7 +919,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Default Skip:|#u
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_skip
|
||||
callback: C_FormBaseInputCB
|
||||
@ -928,7 +928,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1000,7 +1000,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1072,7 +1072,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1154,7 +1154,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_spacing
|
||||
callback: C_FormBaseInputCB
|
||||
@ -1172,7 +1172,7 @@ size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: choice_skip_units
|
||||
callback: C_FormBaseInputCB
|
||||
@ -1259,7 +1259,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1349,13 +1349,13 @@ argument: 0
|
||||
=============== FORM ===============
|
||||
Name: form_document_options
|
||||
Width: 395
|
||||
Height: 310
|
||||
Height: 325
|
||||
Number of Objects: 8
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 395 310
|
||||
box: 0 0 395 325
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1373,7 +1373,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 185 20 120 25
|
||||
box: 185 15 120 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1382,7 +1382,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Float Placement:|#L
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_float_placement
|
||||
callback: C_FormBaseInputCB
|
||||
@ -1391,7 +1391,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_COUNTER
|
||||
type: SIMPLE_COUNTER
|
||||
box: 185 60 80 25
|
||||
box: 185 55 80 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_BLUE
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1413,7 +1413,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_COUNTER
|
||||
type: SIMPLE_COUNTER
|
||||
box: 185 100 80 25
|
||||
box: 185 90 80 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_BLUE
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1435,7 +1435,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 185 140 140 25
|
||||
box: 185 130 140 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1453,10 +1453,10 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: PUSH_BUTTON
|
||||
box: 185 225 25 25
|
||||
box: 185 220 140 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_LEFT
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
@ -1471,7 +1471,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 185 265 140 25
|
||||
box: 185 260 140 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1489,7 +1489,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 185 185 140 25
|
||||
box: 185 170 140 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1594,7 +1594,7 @@ size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: LaTeX:|#L
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
resize: FL_RESIZE_X
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_latex
|
||||
callback: C_FormBaseInputCB
|
||||
@ -1603,7 +1603,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1712,7 +1712,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_BEGIN_GROUP
|
||||
type: 0
|
||||
box: 0 10 10 0
|
||||
box: 0 0 0 0
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1854,5 +1854,191 @@ name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_document_branch
|
||||
Width: 395
|
||||
Height: 325
|
||||
Number of Objects: 10
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: UP_BOX
|
||||
box: 0 0 395 325
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 15 30 150 30
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: New Branch:|#N
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: input_all_branches
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 175 30 100 30
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Add|#d
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_add_branch
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 15 230 100 30
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Remove|#e
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_remove_branch
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BROWSER
|
||||
type: HOLD_BROWSER
|
||||
box: 15 90 150 125
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Available Branches:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: browser_all_branches
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BROWSER
|
||||
type: HOLD_BROWSER
|
||||
box: 220 90 155 125
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Activated Branches:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: browser_selection
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 175 95 35 35
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: @5->
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_select
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 175 135 35 35
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: @9+
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_deselect
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 165 275 55 30
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_WHITE FL_COL1
|
||||
alignment: FL_ALIGN_LEFT
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Display Background:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_color
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 230 275 85 30
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Modify
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: button_modify
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
==============================
|
||||
create_the_forms
|
||||
|
@ -1,3 +1,21 @@
|
||||
|
||||
2003-08-17 Martin Vermeer <martin.vermeer@hut.fi>
|
||||
|
||||
* Makefile.am:
|
||||
* inset.h:
|
||||
* insetbranch.[Ch]: implements the 'branch inset'
|
||||
idea. This allows the output of various versions of a document
|
||||
from a single source version, selectively outputing or suppressing
|
||||
output of parts of the text.
|
||||
This implementation contains a 'branch list editor' in a separate
|
||||
tab of the document settings dialog. Branches are user definable
|
||||
and have a "display colour" to distinguish them on-screen.
|
||||
|
||||
ColorHandler was somewhat cleaned up.
|
||||
(1) make possible a dynamically growing LColor list by allowing
|
||||
the graphic context cache to grow along (vector);
|
||||
(2) eliminate an IMHO unnecessary step in colour allocation.
|
||||
|
||||
2003-08-15 André Pönitz <poenitz@gmx.net>
|
||||
|
||||
* insettext.[Ch]: adjust after rowlist split
|
||||
|
@ -25,6 +25,8 @@ libinsets_la_SOURCES = \
|
||||
insetbibitem.h \
|
||||
insetbibtex.C \
|
||||
insetbibtex.h \
|
||||
insetbranch.C \
|
||||
insetbranch.h \
|
||||
insetcaption.C \
|
||||
insetcaption.h \
|
||||
insetcite.C \
|
||||
|
@ -51,7 +51,7 @@ public:
|
||||
in a cleaner way. */
|
||||
enum Code {
|
||||
///
|
||||
NO_CODE,
|
||||
NO_CODE, // 0
|
||||
///
|
||||
TOC_CODE, // do these insets really need a code? (ale)
|
||||
///
|
||||
@ -59,9 +59,9 @@ public:
|
||||
///
|
||||
MARK_CODE,
|
||||
///
|
||||
REF_CODE, // 5
|
||||
REF_CODE,
|
||||
///
|
||||
URL_CODE,
|
||||
URL_CODE, // 5
|
||||
///
|
||||
HTMLURL_CODE,
|
||||
///
|
||||
@ -69,9 +69,9 @@ public:
|
||||
///
|
||||
ENDING_CODE,
|
||||
///
|
||||
LABEL_CODE, // 10
|
||||
LABEL_CODE,
|
||||
///
|
||||
NOTE_CODE,
|
||||
NOTE_CODE, // 10
|
||||
///
|
||||
ACCENT_CODE,
|
||||
///
|
||||
@ -79,9 +79,9 @@ public:
|
||||
///
|
||||
INDEX_CODE,
|
||||
///
|
||||
INCLUDE_CODE, // 15
|
||||
INCLUDE_CODE,
|
||||
///
|
||||
GRAPHICS_CODE,
|
||||
GRAPHICS_CODE, // 15
|
||||
///
|
||||
BIBITEM_CODE,
|
||||
///
|
||||
@ -89,9 +89,9 @@ public:
|
||||
///
|
||||
TEXT_CODE,
|
||||
///
|
||||
ERT_CODE, // 20
|
||||
ERT_CODE,
|
||||
///
|
||||
FOOT_CODE,
|
||||
FOOT_CODE, // 20
|
||||
///
|
||||
MARGIN_CODE,
|
||||
///
|
||||
@ -101,9 +101,9 @@ public:
|
||||
///
|
||||
MINIPAGE_CODE,
|
||||
///
|
||||
SPACE_CODE,
|
||||
SPACE_CODE, // 25
|
||||
///
|
||||
SPECIALCHAR_CODE, // 25
|
||||
SPECIALCHAR_CODE,
|
||||
///
|
||||
TABULAR_CODE,
|
||||
///
|
||||
@ -125,13 +125,15 @@ public:
|
||||
///
|
||||
INDEX_PRINT_CODE,
|
||||
///
|
||||
OPTARG_CODE,
|
||||
OPTARG_CODE, // 35
|
||||
///
|
||||
ENVIRONMENT_CODE,
|
||||
///
|
||||
HFILL_CODE,
|
||||
///
|
||||
NEWLINE_CODE
|
||||
NEWLINE_CODE,
|
||||
///
|
||||
BRANCH_CODE
|
||||
};
|
||||
|
||||
///
|
||||
|
277
src/insets/insetbranch.C
Normal file
277
src/insets/insetbranch.C
Normal file
@ -0,0 +1,277 @@
|
||||
/**
|
||||
* \file insetbranch.C
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "Lsstream.h"
|
||||
|
||||
#include "insetbranch.h"
|
||||
#include "gettext.h"
|
||||
#include "lyxfont.h"
|
||||
#include "language.h"
|
||||
#include "buffer.h"
|
||||
#include "BufferView.h"
|
||||
#include "LaTeXFeatures.h"
|
||||
#include "latexrunparams.h"
|
||||
#include "lyxlex.h"
|
||||
#include "lyxtext.h"
|
||||
#include "insets/insettext.h"
|
||||
#include "support/LOstream.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "debug.h"
|
||||
|
||||
using std::ostream;
|
||||
using std::auto_ptr;
|
||||
|
||||
void InsetBranch::init()
|
||||
{
|
||||
setInsetName("Branch");
|
||||
setButtonLabel();
|
||||
}
|
||||
|
||||
|
||||
InsetBranch::InsetBranch(BufferParams const & bp, string const & label)
|
||||
: InsetCollapsable(bp)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
InsetBranch::InsetBranch(InsetBranch const & in)
|
||||
: InsetCollapsable(in), params_(in.params_)
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
InsetBranch::~InsetBranch()
|
||||
{
|
||||
InsetBranchMailer mailer("branch", *this);
|
||||
mailer.hideDialog();
|
||||
}
|
||||
|
||||
|
||||
auto_ptr<InsetBase> InsetBranch::clone() const
|
||||
{
|
||||
return auto_ptr<InsetBase>(new InsetBranch(*this));
|
||||
}
|
||||
|
||||
|
||||
string const InsetBranch::editMessage() const
|
||||
{
|
||||
return _("Opened Branch Inset");
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::write(Buffer const * buf, ostream & os) const
|
||||
{
|
||||
params_.write(os);
|
||||
InsetCollapsable::write(buf, os);
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::read(Buffer const * buf, LyXLex & lex)
|
||||
{
|
||||
if (lex.isOK()) {
|
||||
lex.next();
|
||||
params_.branch = lex.getString();
|
||||
}
|
||||
InsetCollapsable::read(buf, lex);
|
||||
setButtonLabel();
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::setButtonLabel()
|
||||
{
|
||||
LyXFont font(LyXFont::ALL_SANE);
|
||||
font.decSize();
|
||||
font.decSize();
|
||||
|
||||
setLabel(params_.branch);
|
||||
font.setColor(LColor::foreground);
|
||||
string const color = params_.branchlist.getColor(params_.branch);
|
||||
if (!color.empty()) {
|
||||
setBackgroundColor(lcolor.getFromLyXName(params_.branch));
|
||||
} else
|
||||
setBackgroundColor(LColor::background);
|
||||
setLabelFont(font);
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
InsetCollapsable::metrics(mi, dim);
|
||||
dim_ = dim;
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::draw(PainterInfo & pi, int x, int y) const
|
||||
{
|
||||
InsetCollapsable::draw(pi, x, y);
|
||||
}
|
||||
|
||||
|
||||
bool InsetBranch::showInsetDialog(BufferView * bv) const
|
||||
{
|
||||
InsetBranchMailer("branch", const_cast<InsetBranch &>(*this)).showDialog(bv);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
dispatch_result InsetBranch::localDispatch(FuncRequest const & cmd)
|
||||
{
|
||||
BufferView * bv = cmd.view();
|
||||
switch (cmd.action) {
|
||||
case LFUN_INSET_MODIFY:
|
||||
{
|
||||
InsetBranchParams params;
|
||||
InsetBranchMailer::string2params(cmd.argument, params);
|
||||
params_.branch = params.branch;
|
||||
setButtonLabel();
|
||||
bv->updateInset();
|
||||
return DISPATCHED;
|
||||
}
|
||||
case LFUN_INSET_EDIT:
|
||||
if (cmd.button() != mouse_button::button3)
|
||||
return InsetCollapsable::localDispatch(cmd);
|
||||
return UNDISPATCHED;
|
||||
case LFUN_INSET_DIALOG_UPDATE:
|
||||
InsetBranchMailer("branch", *this).updateDialog(bv);
|
||||
return DISPATCHED;
|
||||
case LFUN_MOUSE_RELEASE:
|
||||
if (cmd.button() == mouse_button::button3 && hitButton(cmd)) {
|
||||
InsetBranchMailer("branch", *this).showDialog(bv);
|
||||
return DISPATCHED;
|
||||
}
|
||||
// fallthrough:
|
||||
default:
|
||||
return InsetCollapsable::localDispatch(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int InsetBranch::latex(Buffer const * buf, ostream & os,
|
||||
LatexRunParams const & runparams) 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;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::linuxdoc(Buffer const *, std::ostream &) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::docbook(Buffer const * buf, std::ostream & os, bool mixcont) const
|
||||
{
|
||||
// untested - MV
|
||||
string const branch_sel = buf->params.branchlist.allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos)
|
||||
return inset.docbook(buf, os, mixcont);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int InsetBranch::ascii(Buffer const * buf, std::ostream & os, int ll) const
|
||||
{
|
||||
string const branch_sel = buf->params.branchlist.allSelected();
|
||||
if (branch_sel.find(params_.branch, 0) != string::npos) {
|
||||
return inset.ascii(buf, os, ll);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void InsetBranch::validate(LaTeXFeatures & features) const
|
||||
{
|
||||
inset.validate(features);
|
||||
}
|
||||
|
||||
|
||||
|
||||
InsetBranchMailer::InsetBranchMailer(string const & name,
|
||||
InsetBranch & inset)
|
||||
: name_(name), inset_(inset)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
string const InsetBranchMailer::inset2string(Buffer const & buf) const
|
||||
{
|
||||
InsetBranchParams params = inset_.params();
|
||||
params.branchlist = buf.params.branchlist;
|
||||
inset_.setParams(params);
|
||||
return params2string(name_, params);
|
||||
}
|
||||
|
||||
|
||||
string const InsetBranchMailer::params2string(string const & name,
|
||||
InsetBranchParams const & params)
|
||||
{
|
||||
ostringstream data;
|
||||
data << name << ' ';
|
||||
params.write(data);
|
||||
// Add all_branches parameter to data:
|
||||
data << params.branchlist.allBranches() << "\n";
|
||||
return STRCONV(data.str());
|
||||
}
|
||||
|
||||
|
||||
void InsetBranchMailer::string2params(string const & in,
|
||||
InsetBranchParams & params)
|
||||
{
|
||||
params = InsetBranchParams();
|
||||
|
||||
if (in.empty())
|
||||
return;
|
||||
|
||||
istringstream data(STRCONV(in));
|
||||
LyXLex lex(0,0);
|
||||
lex.setStream(data);
|
||||
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";
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
115
src/insets/insetbranch.h
Normal file
115
src/insets/insetbranch.h
Normal file
@ -0,0 +1,115 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file insetbranch.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 INSETBRANCH_H
|
||||
#define INSETBRANCH_H
|
||||
|
||||
|
||||
#include "insetcollapsable.h"
|
||||
#include "BranchList.h"
|
||||
|
||||
struct InsetBranchParams {
|
||||
///
|
||||
void write(std::ostream & os) const;
|
||||
///
|
||||
void read(LyXLex & lex);
|
||||
///
|
||||
string branch;
|
||||
/// Hack -- MV
|
||||
BranchList branchlist;
|
||||
};
|
||||
|
||||
|
||||
/** The Branch inset for alternative, conditional output.
|
||||
|
||||
*/
|
||||
class InsetBranch : public InsetCollapsable {
|
||||
public:
|
||||
///
|
||||
|
||||
|
||||
InsetBranch(BufferParams const &, string const &);
|
||||
/// Copy constructor
|
||||
InsetBranch(InsetBranch const &);
|
||||
///
|
||||
~InsetBranch();
|
||||
///
|
||||
virtual std::auto_ptr<InsetBase> clone() const;
|
||||
///
|
||||
string const editMessage() const;
|
||||
///
|
||||
InsetOld::Code lyxCode() const { return InsetOld::BRANCH_CODE; }
|
||||
///
|
||||
void write(Buffer const *, std::ostream &) const;
|
||||
///
|
||||
void read(Buffer const * buf, LyXLex & lex);
|
||||
///
|
||||
void setButtonLabel();
|
||||
///
|
||||
void metrics(MetricsInfo & mi, Dimension & dim) const;
|
||||
///
|
||||
void draw(PainterInfo & pi, int x, int y) const;
|
||||
///
|
||||
bool showInsetDialog(BufferView *) const;
|
||||
///
|
||||
dispatch_result localDispatch(FuncRequest const &);
|
||||
///
|
||||
int latex(Buffer const *, std::ostream &,
|
||||
LatexRunParams const &) const;
|
||||
///
|
||||
int linuxdoc(Buffer const *, std::ostream &) const;
|
||||
///
|
||||
int docbook(Buffer const *, std::ostream &, bool) const;
|
||||
///
|
||||
int ascii(Buffer const *, std::ostream &, int) const;
|
||||
///
|
||||
void validate(LaTeXFeatures &) const;
|
||||
///
|
||||
InsetBranchParams const & params() const { return params_; }
|
||||
///
|
||||
void setParams(InsetBranchParams const & params) { params_ = params; }
|
||||
|
||||
private:
|
||||
friend class InsetBranchParams;
|
||||
|
||||
/// used by the constructors
|
||||
void init();
|
||||
///
|
||||
InsetBranchParams params_;
|
||||
};
|
||||
|
||||
#include "mailinset.h"
|
||||
|
||||
class InsetBranchMailer : public MailInset {
|
||||
public:
|
||||
///
|
||||
InsetBranchMailer(string const & name, InsetBranch & inset);
|
||||
///
|
||||
virtual InsetBase & inset() const { return inset_; }
|
||||
///
|
||||
virtual string const & name() const { return name_; }
|
||||
///
|
||||
virtual string const inset2string(Buffer const &) const;
|
||||
///
|
||||
static string const params2string(string const &, InsetBranchParams const &);
|
||||
///
|
||||
static void string2params(string const &, InsetBranchParams &);
|
||||
|
||||
private:
|
||||
///
|
||||
string const name_;
|
||||
///
|
||||
InsetBranch & inset_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -321,7 +321,8 @@ enum kb_action {
|
||||
LFUN_PARAGRAPH_UPDATE,
|
||||
LFUN_EXTERNAL_EDIT,
|
||||
// 245
|
||||
|
||||
LFUN_INSERT_BRANCH,
|
||||
|
||||
LFUN_LASTACTION // end of the table
|
||||
};
|
||||
|
||||
|
@ -505,6 +505,9 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & ev) const
|
||||
case InsetOld::NOTE_CODE:
|
||||
disable = ev.argument != "note";
|
||||
break;
|
||||
case InsetOld::BRANCH_CODE:
|
||||
disable = ev.argument != "branch";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -633,6 +636,11 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & ev) const
|
||||
case LFUN_INSERT_NOTE:
|
||||
code = InsetOld::NOTE_CODE;
|
||||
break;
|
||||
case LFUN_INSERT_BRANCH:
|
||||
code = InsetOld::BRANCH_CODE;
|
||||
if (buf->params.branchlist.empty())
|
||||
disable = true;
|
||||
break;
|
||||
case LFUN_INSERT_LABEL:
|
||||
code = InsetOld::LABEL_CODE;
|
||||
break;
|
||||
|
@ -1494,6 +1494,7 @@ InsetOld::RESULT LyXText::dispatch(FuncRequest const & cmd)
|
||||
case LFUN_INSET_CAPTION:
|
||||
#endif
|
||||
case LFUN_INSERT_NOTE:
|
||||
case LFUN_INSERT_BRANCH:
|
||||
case LFUN_INSERT_BIBITEM:
|
||||
case LFUN_INSET_ERT:
|
||||
case LFUN_INSET_FLOAT:
|
||||
|
Loading…
Reference in New Issue
Block a user