mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-29 21:05:12 +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>
|
2003-08-14 John Levon <levon@movementarian.org>
|
||||||
|
|
||||||
* ui/stdmenus.ui: move Note up to the submenus section
|
* ui/stdmenus.ui: move Note up to the submenus section
|
||||||
|
@ -93,6 +93,7 @@ Menuset
|
|||||||
OptItem "Minipage Settings...|M" "inset-settings minipage"
|
OptItem "Minipage Settings...|M" "inset-settings minipage"
|
||||||
OptItem "Text Wrap Settings...|W" "inset-settings wrap"
|
OptItem "Text Wrap Settings...|W" "inset-settings wrap"
|
||||||
OptItem "Note Settings...|N" "inset-settings note"
|
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
|
# Hey, guess what's broken ? Surprise surprise, it's tabular stuff
|
||||||
# This is in the Table submenu instead for now.
|
# This is in the Table submenu instead for now.
|
||||||
# OptItem "Table Settings...|a" "inset-settings tabular"
|
# OptItem "Table Settings...|a" "inset-settings tabular"
|
||||||
@ -217,6 +218,8 @@ Menuset
|
|||||||
Submenu "Float|a" "insert_float"
|
Submenu "Float|a" "insert_float"
|
||||||
Submenu "Note|N" "insert_note"
|
Submenu "Note|N" "insert_note"
|
||||||
# YUCK
|
# YUCK
|
||||||
|
Submenu "Note|N" "insert_note"
|
||||||
|
Submenu "Branch|B" "branches"
|
||||||
Submenu "File|e" "insert_file"
|
Submenu "File|e" "insert_file"
|
||||||
Separator
|
Separator
|
||||||
Item "Citation Reference...|C" "dialog-show-new-inset citation"
|
Item "Citation Reference...|C" "dialog-show-new-inset citation"
|
||||||
@ -326,6 +329,10 @@ Menuset
|
|||||||
Item "Greyed Out|G" "note-insert Greyedout"
|
Item "Greyed Out|G" "note-insert Greyedout"
|
||||||
End
|
End
|
||||||
|
|
||||||
|
Menu "branches"
|
||||||
|
Branches
|
||||||
|
End
|
||||||
|
|
||||||
#
|
#
|
||||||
# DOCUMENT MENU
|
# DOCUMENT MENU
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
src/BranchList.h
|
||||||
src/BufferView.C
|
src/BufferView.C
|
||||||
src/BufferView_pimpl.C
|
src/BufferView_pimpl.C
|
||||||
src/Chktex.C
|
src/Chktex.C
|
||||||
@ -90,6 +91,7 @@ src/frontends/xforms/FormAboutlyx.C
|
|||||||
src/frontends/xforms/FormBase.C
|
src/frontends/xforms/FormBase.C
|
||||||
src/frontends/xforms/FormBibitem.C
|
src/frontends/xforms/FormBibitem.C
|
||||||
src/frontends/xforms/FormBibtex.C
|
src/frontends/xforms/FormBibtex.C
|
||||||
|
src/frontends/xforms/FormBranch.C
|
||||||
src/frontends/xforms/FormChanges.C
|
src/frontends/xforms/FormChanges.C
|
||||||
src/frontends/xforms/FormCharacter.C
|
src/frontends/xforms/FormCharacter.C
|
||||||
src/frontends/xforms/FormCitation.C
|
src/frontends/xforms/FormCitation.C
|
||||||
@ -138,6 +140,7 @@ src/gettext.h
|
|||||||
src/importer.C
|
src/importer.C
|
||||||
src/insets/inset.C
|
src/insets/inset.C
|
||||||
src/insets/insetbibtex.C
|
src/insets/insetbibtex.C
|
||||||
|
src/insets/insetbranch.C
|
||||||
src/insets/insetcaption.C
|
src/insets/insetcaption.C
|
||||||
src/insets/insetenv.C
|
src/insets/insetenv.C
|
||||||
src/insets/insetert.C
|
src/insets/insetert.C
|
||||||
@ -180,6 +183,7 @@ src/mathed/ref_inset.C
|
|||||||
src/paragraph.C
|
src/paragraph.C
|
||||||
src/paragraph_funcs.C
|
src/paragraph_funcs.C
|
||||||
src/rowpainter.C
|
src/rowpainter.C
|
||||||
|
src/support/path_defines.C
|
||||||
src/text.C
|
src/text.C
|
||||||
src/text2.C
|
src/text2.C
|
||||||
src/text3.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>
|
2003-08-15 Kayvan A. Sylvan <kayvan@sylvan.com>
|
||||||
|
|
||||||
* BufferView_pimpl.C: compile fix
|
* BufferView_pimpl.C: compile fix
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "InsetList.h"
|
#include "InsetList.h"
|
||||||
|
#include "BufferView.h"
|
||||||
|
#include "buffer.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#include "insets/updatableinset.h"
|
#include "insets/updatableinset.h"
|
||||||
|
#include "insets/insetbranch.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#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 decreasePosAfterPos(lyx::pos_type pos);
|
||||||
///
|
///
|
||||||
void deleteInsetsLyXText(BufferView * bv);
|
void deleteInsetsLyXText(BufferView * bv);
|
||||||
|
///
|
||||||
|
void InsetList::insetsOpenCloseBranch(BufferView * bv);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
List list;
|
List list;
|
||||||
|
107
src/LColor.C
107
src/LColor.C
@ -25,7 +25,7 @@ using std::endl;
|
|||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
struct ColorEntry {
|
struct ColorEntry {
|
||||||
LColor::color lcolor;
|
int lcolor;
|
||||||
char const * guiname;
|
char const * guiname;
|
||||||
char const * latexname;
|
char const * latexname;
|
||||||
char const * x11name;
|
char const * x11name;
|
||||||
@ -34,6 +34,11 @@ struct ColorEntry {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct TransformEntry {
|
||||||
|
char const * lyxname;
|
||||||
|
int ncolor;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct LColor::Pimpl {
|
struct LColor::Pimpl {
|
||||||
///
|
///
|
||||||
@ -51,17 +56,24 @@ struct LColor::Pimpl {
|
|||||||
/// initialise a color entry
|
/// initialise a color entry
|
||||||
void fill(ColorEntry const & entry)
|
void fill(ColorEntry const & entry)
|
||||||
{
|
{
|
||||||
information & in = infotab[entry.lcolor];
|
information in;
|
||||||
in.guiname = entry.guiname;
|
in.lyxname = string(entry.lyxname);
|
||||||
in.latexname = entry.latexname;
|
in.latexname = string(entry.latexname);
|
||||||
in.x11name = entry.x11name;
|
in.x11name = string(entry.x11name);
|
||||||
in.lyxname = entry.lyxname;
|
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
|
/// the table of color information
|
||||||
InfoTab infotab;
|
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()
|
LColor::~LColor()
|
||||||
{
|
{}
|
||||||
delete pimpl_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LColor::operator=(LColor const & c)
|
void LColor::operator=(LColor const & c)
|
||||||
{
|
{
|
||||||
LColor tmp(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
|
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
|
string const LColor::getX11Name(LColor::color c) const
|
||||||
{
|
{
|
||||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
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
|
string const LColor::getLaTeXName(LColor::color c) const
|
||||||
{
|
{
|
||||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
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
|
string const LColor::getLyXName(LColor::color c) const
|
||||||
{
|
{
|
||||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
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)
|
void LColor::setColor(LColor::color col, string const & x11name)
|
||||||
{
|
{
|
||||||
Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col);
|
Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col);
|
||||||
@ -219,7 +292,7 @@ bool LColor::setColor(string const & lyxname, string const & x11name)
|
|||||||
" redefined" << endl;
|
" redefined" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setColor (col, x11name);
|
setColor(col, x11name);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +303,7 @@ LColor::color LColor::getFromGUIName(string const & guiname) const
|
|||||||
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||||
for (; ici != end; ++ici) {
|
for (; ici != end; ++ici) {
|
||||||
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
||||||
return ici->first;
|
return static_cast<LColor::color>(ici->first);
|
||||||
}
|
}
|
||||||
return LColor::inherit;
|
return LColor::inherit;
|
||||||
}
|
}
|
||||||
@ -238,13 +311,7 @@ LColor::color LColor::getFromGUIName(string const & guiname) const
|
|||||||
|
|
||||||
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
||||||
{
|
{
|
||||||
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin();
|
return static_cast<LColor::color>(pimpl_->transform[lyxname]);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
22
src/LColor.h
22
src/LColor.h
@ -12,6 +12,7 @@
|
|||||||
#define LCOLOR_H
|
#define LCOLOR_H
|
||||||
|
|
||||||
#include "LString.h"
|
#include "LString.h"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This is a stateless class.
|
This is a stateless class.
|
||||||
@ -174,6 +175,7 @@ public:
|
|||||||
ignore
|
ignore
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
LColor();
|
LColor();
|
||||||
///
|
///
|
||||||
@ -182,6 +184,14 @@ public:
|
|||||||
~LColor();
|
~LColor();
|
||||||
///
|
///
|
||||||
void operator=(LColor const &);
|
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
|
/// set the given LyX color to the color defined by the X11 name given
|
||||||
void setColor(LColor::color col, string const & x11name);
|
void setColor(LColor::color col, string const & x11name);
|
||||||
/// set the given LyX color to the color defined by the X11 name given
|
/// set the given LyX color to the color defined by the X11 name given
|
||||||
@ -189,15 +199,25 @@ public:
|
|||||||
|
|
||||||
/// Get GUI name of color
|
/// Get GUI name of color
|
||||||
string const getGUIName(LColor::color c) const;
|
string const getGUIName(LColor::color c) const;
|
||||||
|
///
|
||||||
|
string const getGUIName(string const & s) const;
|
||||||
|
|
||||||
/// Get X11 name of color
|
/// Get X11 name of color
|
||||||
string const getX11Name(LColor::color c) const;
|
string const getX11Name(LColor::color c) const;
|
||||||
|
///
|
||||||
|
string const getX11Name(string const & s) const;
|
||||||
|
|
||||||
/// Get LaTeX name of color
|
/// Get LaTeX name of color
|
||||||
string const getLaTeXName(LColor::color c) const;
|
string const getLaTeXName(LColor::color c) const;
|
||||||
|
///
|
||||||
|
string const getLaTeXName(string const & s) const;
|
||||||
|
|
||||||
/// Get LyX name of color
|
/// Get LyX name of color
|
||||||
string const getLyXName(LColor::color c) const;
|
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
|
/// get the color from the GUI name
|
||||||
LColor::color getFromGUIName(string const & guiname) const;
|
LColor::color getFromGUIName(string const & guiname) const;
|
||||||
@ -207,7 +227,7 @@ private:
|
|||||||
///
|
///
|
||||||
struct Pimpl;
|
struct Pimpl;
|
||||||
///
|
///
|
||||||
Pimpl * pimpl_;
|
boost::scoped_ptr<Pimpl> pimpl_;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// the current color definitions
|
/// the current color definitions
|
||||||
|
@ -222,6 +222,7 @@ void LyXAction::init()
|
|||||||
{ LFUN_MENU_SEPARATOR, "menu-separator-insert", Noop },
|
{ LFUN_MENU_SEPARATOR, "menu-separator-insert", Noop },
|
||||||
{ LFUN_META_FAKE, "meta-prefix", NoBuffer },
|
{ LFUN_META_FAKE, "meta-prefix", NoBuffer },
|
||||||
{ LFUN_INSET_MINIPAGE, "minipage-insert", Noop },
|
{ LFUN_INSET_MINIPAGE, "minipage-insert", Noop },
|
||||||
|
{ LFUN_INSERT_BRANCH, "branch-insert", Noop },
|
||||||
{ LFUN_INSERT_NOTE, "note-insert", Noop },
|
{ LFUN_INSERT_NOTE, "note-insert", Noop },
|
||||||
{ LFUN_GOTONOTE, "note-next", ReadOnly },
|
{ LFUN_GOTONOTE, "note-next", ReadOnly },
|
||||||
{ LFUN_INSET_TOGGLE, "inset-toggle", ReadOnly },
|
{ LFUN_INSET_TOGGLE, "inset-toggle", ReadOnly },
|
||||||
|
@ -60,6 +60,8 @@ lyx_SOURCES = \
|
|||||||
BufferView_pimpl.h \
|
BufferView_pimpl.h \
|
||||||
Bullet.C \
|
Bullet.C \
|
||||||
Bullet.h \
|
Bullet.h \
|
||||||
|
BranchList.C \
|
||||||
|
BranchList.h \
|
||||||
Chktex.C \
|
Chktex.C \
|
||||||
Chktex.h \
|
Chktex.h \
|
||||||
CutAndPaste.C \
|
CutAndPaste.C \
|
||||||
|
@ -69,6 +69,7 @@ MenuItem::MenuItem(Kind kind, string const & label,
|
|||||||
case FloatListInsert:
|
case FloatListInsert:
|
||||||
case FloatInsert:
|
case FloatInsert:
|
||||||
case PasteRecent:
|
case PasteRecent:
|
||||||
|
case Branches:
|
||||||
break;
|
break;
|
||||||
case Command:
|
case Command:
|
||||||
action_ = lyxaction.LookupFunc(command);
|
action_ = lyxaction.LookupFunc(command);
|
||||||
@ -189,6 +190,7 @@ Menu & Menu::read(LyXLex & lex)
|
|||||||
{
|
{
|
||||||
enum Menutags {
|
enum Menutags {
|
||||||
md_item = 1,
|
md_item = 1,
|
||||||
|
md_branches,
|
||||||
md_documents,
|
md_documents,
|
||||||
md_endmenu,
|
md_endmenu,
|
||||||
md_exportformats,
|
md_exportformats,
|
||||||
@ -208,6 +210,7 @@ Menu & Menu::read(LyXLex & lex)
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct keyword_item menutags[md_last - 1] = {
|
struct keyword_item menutags[md_last - 1] = {
|
||||||
|
{ "branches", md_branches },
|
||||||
{ "documents", md_documents },
|
{ "documents", md_documents },
|
||||||
{ "end", md_endmenu },
|
{ "end", md_endmenu },
|
||||||
{ "exportformats", md_exportformats },
|
{ "exportformats", md_exportformats },
|
||||||
@ -293,6 +296,10 @@ Menu & Menu::read(LyXLex & lex)
|
|||||||
add(MenuItem(MenuItem::PasteRecent));
|
add(MenuItem(MenuItem::PasteRecent));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case md_branches:
|
||||||
|
add(MenuItem(MenuItem::Branches));
|
||||||
|
break;
|
||||||
|
|
||||||
case md_optsubmenu:
|
case md_optsubmenu:
|
||||||
optional = true;
|
optional = true;
|
||||||
// fallback to md_submenu
|
// 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
|
} // namespace anon
|
||||||
|
|
||||||
|
|
||||||
@ -671,6 +697,10 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
|
|||||||
expandPasteRecent(tomenu, view);
|
expandPasteRecent(tomenu, view);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MenuItem::Branches:
|
||||||
|
expandBranches(tomenu, view);
|
||||||
|
break;
|
||||||
|
|
||||||
case MenuItem::Toc:
|
case MenuItem::Toc:
|
||||||
expandToc(tomenu, view);
|
expandToc(tomenu, view);
|
||||||
break;
|
break;
|
||||||
|
@ -65,7 +65,9 @@ public:
|
|||||||
FloatInsert,
|
FloatInsert,
|
||||||
/** This is the list of selections that can
|
/** This is the list of selections that can
|
||||||
be pasted. */
|
be pasted. */
|
||||||
PasteRecent
|
PasteRecent,
|
||||||
|
/** Available branches in document */
|
||||||
|
Branches
|
||||||
};
|
};
|
||||||
/// Create a Command type MenuItem
|
/// Create a Command type MenuItem
|
||||||
MenuItem(Kind kind,
|
MenuItem(Kind kind,
|
||||||
@ -196,7 +198,7 @@ public:
|
|||||||
/// Expands some special entries of the menu
|
/// Expands some special entries of the menu
|
||||||
/** The entries with the following kind are expanded to a
|
/** The entries with the following kind are expanded to a
|
||||||
sequence of Command MenuItems: Lastfiles, Documents,
|
sequence of Command MenuItems: Lastfiles, Documents,
|
||||||
ViewFormats, ExportFormats, UpdateFormats
|
ViewFormats, ExportFormats, UpdateFormats, Branches
|
||||||
*/
|
*/
|
||||||
void expand(Menu const & frommenu, Menu & tomenu,
|
void expand(Menu const & frommenu, Menu & tomenu,
|
||||||
LyXView const *) const;
|
LyXView const *) const;
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include "author.h"
|
#include "author.h"
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
|
||||||
|
#include "LColor.h"
|
||||||
|
|
||||||
#include "support/lyxalgo.h" // for lyx::count
|
#include "support/lyxalgo.h" // for lyx::count
|
||||||
#include "support/lyxlib.h"
|
#include "support/lyxlib.h"
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
@ -192,6 +194,31 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
|
|||||||
} else if (token == "\\tracking_changes") {
|
} else if (token == "\\tracking_changes") {
|
||||||
lex.nextToken();
|
lex.nextToken();
|
||||||
tracking_changes = lex.getInteger();
|
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") {
|
} else if (token == "\\author") {
|
||||||
lex.nextToken();
|
lex.nextToken();
|
||||||
istringstream ss(STRCONV(lex.getString()));
|
istringstream ss(STRCONV(lex.getString()));
|
||||||
@ -380,6 +407,17 @@ void BufferParams::writeFile(ostream & os) const
|
|||||||
<< "\n\\use_numerical_citations " << use_numerical_citations
|
<< "\n\\use_numerical_citations " << use_numerical_citations
|
||||||
<< "\n\\paperorientation " << string_orientation[orientation]
|
<< "\n\\paperorientation " << string_orientation[orientation]
|
||||||
<< '\n';
|
<< '\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())
|
if (!paperwidth.empty())
|
||||||
os << "\\paperwidth "
|
os << "\\paperwidth "
|
||||||
<< VSpace(paperwidth).asLyXCommand() << '\n';
|
<< VSpace(paperwidth).asLyXCommand() << '\n';
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "texrow.h"
|
#include "texrow.h"
|
||||||
#include "author.h"
|
#include "author.h"
|
||||||
#include "paper.h"
|
#include "paper.h"
|
||||||
|
#include "BranchList.h"
|
||||||
|
|
||||||
#include "insets/insetquotes.h"
|
#include "insets/insetquotes.h"
|
||||||
|
|
||||||
@ -134,6 +135,8 @@ public:
|
|||||||
int tocdepth;
|
int tocdepth;
|
||||||
///
|
///
|
||||||
Language const * language;
|
Language const * language;
|
||||||
|
/// BranchList:
|
||||||
|
BranchList branchlist;
|
||||||
///
|
///
|
||||||
string inputenc;
|
string inputenc;
|
||||||
///
|
///
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "insets/insetmarginal.h"
|
#include "insets/insetmarginal.h"
|
||||||
#include "insets/insetminipage.h"
|
#include "insets/insetminipage.h"
|
||||||
#include "insets/insetnote.h"
|
#include "insets/insetnote.h"
|
||||||
|
#include "insets/insetbranch.h"
|
||||||
#include "insets/insetoptarg.h"
|
#include "insets/insetoptarg.h"
|
||||||
#include "insets/insetref.h"
|
#include "insets/insetref.h"
|
||||||
#include "insets/insetspace.h"
|
#include "insets/insetspace.h"
|
||||||
@ -77,6 +78,14 @@ InsetOld * createInset(FuncRequest const & cmd)
|
|||||||
arg = "Note";
|
arg = "Note";
|
||||||
return new InsetNote(params, arg);
|
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:
|
case LFUN_INSET_ERT:
|
||||||
return new InsetERT(params);
|
return new InsetERT(params);
|
||||||
|
|
||||||
@ -357,6 +366,8 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
|
|||||||
} else if (tmptok == "Note" || tmptok == "Comment"
|
} else if (tmptok == "Note" || tmptok == "Comment"
|
||||||
|| tmptok == "Greyedout") {
|
|| tmptok == "Greyedout") {
|
||||||
inset = new InsetNote(buf.params, tmptok);
|
inset = new InsetNote(buf.params, tmptok);
|
||||||
|
} else if (tmptok == "Branch") {
|
||||||
|
inset = new InsetBranch(buf.params, tmptok);
|
||||||
} else if (tmptok == "Include") {
|
} else if (tmptok == "Include") {
|
||||||
InsetCommandParams p("Include");
|
InsetCommandParams p("Include");
|
||||||
inset = new InsetInclude(p, buf);
|
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>
|
2003-08-15 André Pönitz <poenitz@gmx.net>
|
||||||
|
|
||||||
* ControlErrorList.C:
|
* 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();
|
buffer()->markDirty();
|
||||||
|
|
||||||
lv_.message(_("Document settings applied"));
|
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 \
|
ControlBibtex.h \
|
||||||
ControlButtons.C \
|
ControlButtons.C \
|
||||||
ControlButtons.h \
|
ControlButtons.h \
|
||||||
|
ControlBranch.C \
|
||||||
|
ControlBranch.h \
|
||||||
ControlCharacter.C \
|
ControlCharacter.C \
|
||||||
ControlCharacter.h \
|
ControlCharacter.h \
|
||||||
ControlChanges.C \
|
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>
|
2003-08-12 Michael Schmitt <michael.schmitt@teststep.org>
|
||||||
|
|
||||||
* FormMathsMatrix.C: rename "Center" to "Middle"
|
* FormMathsMatrix.C: rename "Center" to "Middle"
|
||||||
|
@ -44,6 +44,7 @@ namespace {
|
|||||||
|
|
||||||
|
|
||||||
LyXColorHandler::LyXColorHandler()
|
LyXColorHandler::LyXColorHandler()
|
||||||
|
: colorGCcache(LColor::ignore + 1)
|
||||||
{
|
{
|
||||||
display = fl_get_display();
|
display = fl_get_display();
|
||||||
drawable = XCreatePixmap(display,
|
drawable = XCreatePixmap(display,
|
||||||
@ -52,7 +53,7 @@ LyXColorHandler::LyXColorHandler()
|
|||||||
|
|
||||||
colormap = fl_state[fl_get_vclass()].colormap;
|
colormap = fl_state[fl_get_vclass()].colormap;
|
||||||
// Clear the GC cache
|
// Clear the GC cache
|
||||||
for (int i = 0; i <= LColor::ignore; ++i) {
|
for (int i = 0; i < colorGCcache.size(); ++i) {
|
||||||
colorGCcache[i] = 0;
|
colorGCcache[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,7 +62,7 @@ LyXColorHandler::LyXColorHandler()
|
|||||||
LyXColorHandler::~LyXColorHandler()
|
LyXColorHandler::~LyXColorHandler()
|
||||||
{
|
{
|
||||||
// Release all the registered GCs
|
// 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) {
|
if (colorGCcache[i] != 0) {
|
||||||
XFreeGC(display, colorGCcache[i]);
|
XFreeGC(display, colorGCcache[i]);
|
||||||
}
|
}
|
||||||
@ -82,40 +83,28 @@ unsigned long LyXColorHandler::colorPixel(LColor::color c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Gets GC according to color
|
GC LyXColorHandler::getGCForeground(string const & s)
|
||||||
// Uses caching
|
|
||||||
GC LyXColorHandler::getGCForeground(LColor::color c)
|
|
||||||
{
|
{
|
||||||
if (colorGCcache[c] != 0)
|
|
||||||
return colorGCcache[c];
|
|
||||||
|
|
||||||
XColor xcol;
|
XColor xcol;
|
||||||
XColor ccol;
|
XColor ccol;
|
||||||
string const s = lcolor.getX11Name(c);
|
|
||||||
XGCValues val;
|
XGCValues val;
|
||||||
|
|
||||||
// Look up the RGB values for the color, and an approximate
|
// Look up the RGB values for the color, and an approximate
|
||||||
// color that we can hope to get on this display.
|
// color that we can hope to get on this display.
|
||||||
if (XLookupColor(display, colormap, s.c_str(), &xcol, &ccol) == 0) {
|
if (XLookupColor(display, colormap, s.c_str(), &xcol, &ccol) == 0) {
|
||||||
lyxerr << bformat(
|
lyxerr << bformat(
|
||||||
_("LyX: Unknown X11 color %1$s for %2$s\n"
|
_("LyX: Unknown X11 color %1$s\n"
|
||||||
" Using black instead, sorry!"),
|
" Using black instead, sorry!"),
|
||||||
s, lcolor.getGUIName(c)) << endl;
|
s) << endl;
|
||||||
unsigned long bla = BlackPixel(display,
|
unsigned long bla = BlackPixel(display,
|
||||||
DefaultScreen(display));
|
DefaultScreen(display));
|
||||||
val.foreground = bla;
|
val.foreground = bla;
|
||||||
// Try the exact RGB values first, then the approximate.
|
// Try the exact RGB values first, then the approximate.
|
||||||
} else if (XAllocColor(display, colormap, &xcol) != 0) {
|
} else if (XAllocColor(display, colormap, &xcol) != 0) {
|
||||||
if (lyxerr.debugging(Debug::GUI)) {
|
if (lyxerr.debugging(Debug::GUI)) {
|
||||||
lyxerr << bformat(_("LyX: X11 color %1$s allocated for %2$s"),
|
lyxerr << bformat(_("LyX: X11 color %1$s allocated"),
|
||||||
s, lcolor.getGUIName(c)) << endl;
|
s) << endl;
|
||||||
}
|
}
|
||||||
val.foreground = xcol.pixel;
|
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 {
|
} else {
|
||||||
// Here we are traversing the current colormap to find
|
// Here we are traversing the current colormap to find
|
||||||
// the color closest to the one we want.
|
// the color closest to the one we want.
|
||||||
@ -155,8 +144,8 @@ GC LyXColorHandler::getGCForeground(LColor::color c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lyxerr << bformat(
|
lyxerr << bformat(
|
||||||
_("LyX: Couldn't allocate '%1$s' for %2$s with (r,g,b)=%3$s.\n"),
|
_("LyX: Couldn't allocate '%1$s' with (r,g,b)=%3$s.\n"),
|
||||||
s, lcolor.getGUIName(c), tostr(xcol));
|
s, tostr(xcol));
|
||||||
|
|
||||||
lyxerr << bformat(
|
lyxerr << bformat(
|
||||||
_(" Using closest allocated color with (r,g,b)=%1$s instead.\n"
|
_(" Using closest allocated color with (r,g,b)=%1$s instead.\n"
|
||||||
@ -165,12 +154,35 @@ GC LyXColorHandler::getGCForeground(LColor::color c)
|
|||||||
|
|
||||||
val.foreground = cmap[closest_pixel].pixel;
|
val.foreground = cmap[closest_pixel].pixel;
|
||||||
}
|
}
|
||||||
|
|
||||||
val.function = GXcopy;
|
val.function = GXcopy;
|
||||||
return colorGCcache[c] = XCreateGC(display, drawable,
|
return XCreateGC(display, drawable,
|
||||||
GCForeground | GCFunction, &val);
|
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
|
// Gets GC for line
|
||||||
GC LyXColorHandler::getGCLinepars(Painter::line_style ls,
|
GC LyXColorHandler::getGCLinepars(Painter::line_style ls,
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "frontends/Painter.h"
|
#include "frontends/Painter.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
// This is only included to provide stuff for the non-public sections
|
// This is only included to provide stuff for the non-public sections
|
||||||
@ -49,7 +50,9 @@ private:
|
|||||||
///
|
///
|
||||||
Colormap colormap;
|
Colormap colormap;
|
||||||
///
|
///
|
||||||
GC colorGCcache[LColor::ignore + 1];
|
std::vector<GC> colorGCcache;
|
||||||
|
///
|
||||||
|
GC getGCForeground(string const & s);
|
||||||
///
|
///
|
||||||
typedef std::map<int, GC> LineGCCache;
|
typedef std::map<int, GC> LineGCCache;
|
||||||
///
|
///
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "ControlAboutlyx.h"
|
#include "ControlAboutlyx.h"
|
||||||
#include "ControlBibtex.h"
|
#include "ControlBibtex.h"
|
||||||
|
#include "ControlBranch.h"
|
||||||
#include "ControlChanges.h"
|
#include "ControlChanges.h"
|
||||||
#include "ControlCharacter.h"
|
#include "ControlCharacter.h"
|
||||||
#include "ControlCitation.h"
|
#include "ControlCitation.h"
|
||||||
@ -44,6 +45,7 @@
|
|||||||
#include "FormAboutlyx.h"
|
#include "FormAboutlyx.h"
|
||||||
#include "FormBibitem.h"
|
#include "FormBibitem.h"
|
||||||
#include "FormBibtex.h"
|
#include "FormBibtex.h"
|
||||||
|
#include "FormBranch.h"
|
||||||
#include "FormChanges.h"
|
#include "FormChanges.h"
|
||||||
#include "FormCharacter.h"
|
#include "FormCharacter.h"
|
||||||
#include "FormCitation.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",
|
"character", "citation", "error", "errorlist" , "ert", "external", "file",
|
||||||
"float", "graphics", "include", "index", "label", "latexlog", "mathpanel",
|
"float", "graphics", "include", "index", "label", "latexlog", "mathpanel",
|
||||||
"mathaccents", "matharrows", "mathoperators", "mathrelations", "mathgreek",
|
"mathaccents", "matharrows", "mathoperators", "mathrelations", "mathgreek",
|
||||||
@ -411,6 +413,10 @@ Dialog * Dialogs::build(string const & name)
|
|||||||
dialog->setController(new ControlNote(*dialog));
|
dialog->setController(new ControlNote(*dialog));
|
||||||
dialog->setView(new FormNote(*dialog));
|
dialog->setView(new FormNote(*dialog));
|
||||||
dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
|
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") {
|
} else if (name == "paragraph") {
|
||||||
dialog->setController(new ControlParagraph(*dialog));
|
dialog->setController(new ControlParagraph(*dialog));
|
||||||
dialog->setView(new FormParagraph(*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 Jürgen Vigna
|
||||||
* \author Rob Lahaye
|
* \author Rob Lahaye
|
||||||
|
* \author Martin Vermeer
|
||||||
|
* \author Juergen Spitzmueller
|
||||||
*
|
*
|
||||||
* Full author contact details are available in file CREDITS
|
* Full author contact details are available in file CREDITS
|
||||||
*/
|
*/
|
||||||
@ -17,17 +19,23 @@
|
|||||||
#include "xformsBC.h"
|
#include "xformsBC.h"
|
||||||
#include "ButtonController.h"
|
#include "ButtonController.h"
|
||||||
|
|
||||||
|
#include "FormColorpicker.h"
|
||||||
|
#include "LColor.h"
|
||||||
|
#include "Lsstream.h"
|
||||||
#include "bmtable.h"
|
#include "bmtable.h"
|
||||||
#include "checkedwidgets.h"
|
#include "checkedwidgets.h"
|
||||||
|
#include "Tooltips.h"
|
||||||
#include "input_validators.h" // fl_unsigned_float_filter
|
#include "input_validators.h" // fl_unsigned_float_filter
|
||||||
#include "xforms_helpers.h"
|
#include "xforms_helpers.h"
|
||||||
|
|
||||||
|
#include "bufferparams.h"
|
||||||
#include "CutAndPaste.h"
|
#include "CutAndPaste.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "lyxrc.h"
|
#include "lyxrc.h"
|
||||||
#include "lyxtextclasslist.h"
|
#include "lyxtextclasslist.h"
|
||||||
#include "tex-strings.h"
|
#include "tex-strings.h"
|
||||||
|
#include "ColorHandler.h"
|
||||||
|
|
||||||
#include "controllers/frnt_lang.h"
|
#include "controllers/frnt_lang.h"
|
||||||
#include "controllers/helper_funcs.h"
|
#include "controllers/helper_funcs.h"
|
||||||
@ -43,12 +51,15 @@
|
|||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
using namespace lyx::support;
|
using namespace lyx::support;
|
||||||
|
|
||||||
using std::bind2nd;
|
using std::bind2nd;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
using std::setw;
|
||||||
|
using std::setfill;
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -59,6 +70,7 @@ bool const scalableTabfolders = false;
|
|||||||
bool const scalableTabfolders = true;
|
bool const scalableTabfolders = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
} // namespace anon
|
} // namespace anon
|
||||||
|
|
||||||
|
|
||||||
@ -343,6 +355,46 @@ void FormDocument::build()
|
|||||||
fl_set_bmtable_pixmap_file(bullets_->bmtable_panel, 6, 6,
|
fl_set_bmtable_pixmap_file(bullets_->bmtable_panel, 6, 6,
|
||||||
bmtablefile.c_str());
|
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.
|
// Enable the tabfolder to be rescaled correctly.
|
||||||
if (scalableTabfolders)
|
if (scalableTabfolders)
|
||||||
fl_set_tabfolder_autofit(dialog_->tabfolder, FL_FIT);
|
fl_set_tabfolder_autofit(dialog_->tabfolder, FL_FIT);
|
||||||
@ -366,6 +418,9 @@ void FormDocument::build()
|
|||||||
fl_deactivate_object(fbullet);
|
fl_deactivate_object(fbullet);
|
||||||
fl_set_object_lcol(fbullet, FL_INACTIVE);
|
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);
|
language_apply(params);
|
||||||
options_apply(params);
|
options_apply(params);
|
||||||
bullets_apply(params);
|
bullets_apply(params);
|
||||||
|
branch_apply(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -395,6 +451,7 @@ void FormDocument::update()
|
|||||||
language_update(params);
|
language_update(params);
|
||||||
options_update(params);
|
options_update(params);
|
||||||
bullets_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,
|
setEnabled(options_->choice_citation_format,
|
||||||
fl_get_button(options_->check_use_natbib));
|
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) {
|
} else if (ob == dialog_->button_save_defaults) {
|
||||||
apply();
|
apply();
|
||||||
controller().saveAsDefault();
|
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 FormDocument::class_apply(BufferParams ¶ms)
|
||||||
{
|
{
|
||||||
bool redo = false;
|
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)
|
void FormDocument::UpdateClassParams(BufferParams const & params)
|
||||||
{
|
{
|
||||||
// These are the params that have to be updated on any class change
|
// 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()
|
void FormDocument::checkReadOnly()
|
||||||
{
|
{
|
||||||
if (bc().readOnly(controller().bufferIsReadonly())) {
|
if (bc().readOnly(controller().bufferIsReadonly())) {
|
||||||
|
@ -17,18 +17,32 @@
|
|||||||
|
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
|
#include "lyx_forms.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class ControlDocument;
|
class ControlDocument;
|
||||||
|
|
||||||
class BufferParams;
|
class BufferParams;
|
||||||
|
|
||||||
|
class FormColorpicker;
|
||||||
|
|
||||||
struct FD_document;
|
struct FD_document;
|
||||||
struct FD_document_paper;
|
struct FD_document_paper;
|
||||||
struct FD_document_class;
|
struct FD_document_class;
|
||||||
struct FD_document_language;
|
struct FD_document_language;
|
||||||
struct FD_document_options;
|
struct FD_document_options;
|
||||||
struct FD_document_bullet;
|
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.
|
/** This class provides an XForms implementation of the FormDocument dialog.
|
||||||
* The table-layout-form here changes values for latex-tabulars
|
* The table-layout-form here changes values for latex-tabulars
|
||||||
@ -49,6 +63,8 @@ private:
|
|||||||
/// Apply from dialog
|
/// Apply from dialog
|
||||||
virtual void apply();
|
virtual void apply();
|
||||||
|
|
||||||
|
///
|
||||||
|
void branch_input(FL_OBJECT *);
|
||||||
///
|
///
|
||||||
void ChoiceBulletSize(FL_OBJECT * ob, long);
|
void ChoiceBulletSize(FL_OBJECT * ob, long);
|
||||||
///
|
///
|
||||||
@ -78,6 +94,8 @@ private:
|
|||||||
void options_update(BufferParams const &);
|
void options_update(BufferParams const &);
|
||||||
///
|
///
|
||||||
void bullets_update(BufferParams const &);
|
void bullets_update(BufferParams const &);
|
||||||
|
///
|
||||||
|
void branch_update(BufferParams const &);
|
||||||
|
|
||||||
///
|
///
|
||||||
void paper_apply(BufferParams &);
|
void paper_apply(BufferParams &);
|
||||||
@ -89,6 +107,8 @@ private:
|
|||||||
bool options_apply(BufferParams &);
|
bool options_apply(BufferParams &);
|
||||||
///
|
///
|
||||||
void bullets_apply(BufferParams &);
|
void bullets_apply(BufferParams &);
|
||||||
|
///
|
||||||
|
void branch_apply(BufferParams &);
|
||||||
|
|
||||||
/// Real GUI implementation.
|
/// Real GUI implementation.
|
||||||
boost::scoped_ptr<FD_document_paper> paper_;
|
boost::scoped_ptr<FD_document_paper> paper_;
|
||||||
@ -101,6 +121,10 @@ private:
|
|||||||
///
|
///
|
||||||
boost::scoped_ptr<FD_document_bullet> bullets_;
|
boost::scoped_ptr<FD_document_bullet> bullets_;
|
||||||
///
|
///
|
||||||
|
boost::scoped_ptr<FD_document_branch> branch_;
|
||||||
|
///
|
||||||
|
boost::scoped_ptr<FormColorpicker> picker_;
|
||||||
|
///
|
||||||
int ActCell;
|
int ActCell;
|
||||||
///
|
///
|
||||||
int Confirmed;
|
int Confirmed;
|
||||||
@ -112,6 +136,8 @@ private:
|
|||||||
FL_OBJECT * fbullet;
|
FL_OBJECT * fbullet;
|
||||||
///
|
///
|
||||||
std::vector<string> lang_;
|
std::vector<string> lang_;
|
||||||
|
/// Contains all legal branches for this doc
|
||||||
|
BranchList branchlist_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -74,6 +74,8 @@ libxforms_la_SOURCES = \
|
|||||||
FormBibtex.h \
|
FormBibtex.h \
|
||||||
FormBrowser.C \
|
FormBrowser.C \
|
||||||
FormBrowser.h \
|
FormBrowser.h \
|
||||||
|
FormBranch.C \
|
||||||
|
FormBranch.h \
|
||||||
FormChanges.C \
|
FormChanges.C \
|
||||||
FormChanges.h \
|
FormChanges.h \
|
||||||
FormCharacter.C \
|
FormCharacter.C \
|
||||||
|
@ -13,6 +13,7 @@ SRCS = form_aboutlyx.fd \
|
|||||||
form_bibitem.fd \
|
form_bibitem.fd \
|
||||||
form_bibtex.fd \
|
form_bibtex.fd \
|
||||||
form_browser.fd \
|
form_browser.fd \
|
||||||
|
form_branch.fd \
|
||||||
form_changes.fd \
|
form_changes.fd \
|
||||||
form_character.fd \
|
form_character.fd \
|
||||||
form_citation.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
|
Internal Form Definition File
|
||||||
(do not change)
|
(do not change)
|
||||||
|
|
||||||
Number of forms: 6
|
Number of forms: 7
|
||||||
Unit of measure: FL_COORD_PIXEL
|
Unit of measure: FL_COORD_PIXEL
|
||||||
SnapGrid: 5
|
SnapGrid: 5
|
||||||
|
|
||||||
@ -178,13 +178,13 @@ argument: 0
|
|||||||
=============== FORM ===============
|
=============== FORM ===============
|
||||||
Name: form_document_paper
|
Name: form_document_paper
|
||||||
Width: 395
|
Width: 395
|
||||||
Height: 310
|
Height: 320
|
||||||
Number of Objects: 29
|
Number of Objects: 29
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
class: FL_BOX
|
class: FL_BOX
|
||||||
type: FLAT_BOX
|
type: FLAT_BOX
|
||||||
box: 0 0 395 310
|
box: 0 0 395 320
|
||||||
boxtype: FL_FLAT_BOX
|
boxtype: FL_FLAT_BOX
|
||||||
colors: FL_COL1 FL_COL1
|
colors: FL_COL1 FL_COL1
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -247,7 +247,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Width:|#W
|
label: Width:|#W
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_custom_width
|
name: input_custom_width
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -265,7 +265,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_custom_width_units
|
name: choice_custom_width_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -283,7 +283,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Height:|#H
|
label: Height:|#H
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_custom_height
|
name: input_custom_height
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -301,7 +301,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_custom_height_units
|
name: choice_custom_height_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -328,7 +328,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -400,7 +400,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_LABELFRAME
|
class: FL_LABELFRAME
|
||||||
type: ENGRAVED_FRAME
|
type: ENGRAVED_FRAME
|
||||||
box: 5 130 385 175
|
box: 5 130 385 185
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_BLACK FL_COL1
|
colors: FL_BLACK FL_COL1
|
||||||
alignment: FL_ALIGN_TOP_LEFT
|
alignment: FL_ALIGN_TOP_LEFT
|
||||||
@ -463,7 +463,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Top:|#T
|
label: Top:|#T
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_top_margin
|
name: input_top_margin
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -481,7 +481,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_top_margin_units
|
name: choice_top_margin_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -499,7 +499,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Bottom:|#B
|
label: Bottom:|#B
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_bottom_margin
|
name: input_bottom_margin
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -517,7 +517,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_bottom_margin_units
|
name: choice_bottom_margin_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -526,7 +526,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_INPUT
|
class: FL_INPUT
|
||||||
type: NORMAL_INPUT
|
type: NORMAL_INPUT
|
||||||
box: 75 240 50 25
|
box: 75 250 50 25
|
||||||
boxtype: FL_DOWN_BOX
|
boxtype: FL_DOWN_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -535,7 +535,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Inner:|#I
|
label: Inner:|#I
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_inner_margin
|
name: input_inner_margin
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -544,7 +544,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHOICE
|
class: FL_CHOICE
|
||||||
type: NORMAL_CHOICE
|
type: NORMAL_CHOICE
|
||||||
box: 125 240 50 25
|
box: 125 250 50 25
|
||||||
boxtype: FL_FRAME_BOX
|
boxtype: FL_FRAME_BOX
|
||||||
colors: FL_COL1 FL_BLACK
|
colors: FL_COL1 FL_BLACK
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -553,7 +553,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_inner_margin_units
|
name: choice_inner_margin_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -562,7 +562,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_INPUT
|
class: FL_INPUT
|
||||||
type: NORMAL_INPUT
|
type: NORMAL_INPUT
|
||||||
box: 75 270 50 25
|
box: 75 280 50 25
|
||||||
boxtype: FL_DOWN_BOX
|
boxtype: FL_DOWN_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -571,7 +571,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Outer:|#u
|
label: Outer:|#u
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_outer_margin
|
name: input_outer_margin
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -580,7 +580,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHOICE
|
class: FL_CHOICE
|
||||||
type: NORMAL_CHOICE
|
type: NORMAL_CHOICE
|
||||||
box: 125 270 50 25
|
box: 125 280 50 25
|
||||||
boxtype: FL_FRAME_BOX
|
boxtype: FL_FRAME_BOX
|
||||||
colors: FL_COL1 FL_BLACK
|
colors: FL_COL1 FL_BLACK
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -589,7 +589,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_outer_margin_units
|
name: choice_outer_margin_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -607,7 +607,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Headheight:|#H
|
label: Headheight:|#H
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_head_height
|
name: input_head_height
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -625,7 +625,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_head_height_units
|
name: choice_head_height_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -643,7 +643,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Headsep:|#d
|
label: Headsep:|#d
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_head_sep
|
name: input_head_sep
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -661,7 +661,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_head_sep_units
|
name: choice_head_sep_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -679,7 +679,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Footskip:|#F
|
label: Footskip:|#F
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_foot_skip
|
name: input_foot_skip
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -697,7 +697,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_foot_skip_units
|
name: choice_foot_skip_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -865,7 +865,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Spacing:|#g
|
label: Spacing:|#g
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_spacing
|
name: choice_spacing
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -883,7 +883,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Extra Options:|#X
|
label: Extra Options:|#X
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_extra
|
name: input_extra
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -901,7 +901,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_skip
|
name: input_skip
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -919,7 +919,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Default Skip:|#u
|
label: Default Skip:|#u
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_skip
|
name: choice_skip
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -928,7 +928,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1000,7 +1000,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1072,7 +1072,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1154,7 +1154,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_spacing
|
name: input_spacing
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -1172,7 +1172,7 @@ size: FL_DEFAULT_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label:
|
label:
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: choice_skip_units
|
name: choice_skip_units
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -1259,7 +1259,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1349,13 +1349,13 @@ argument: 0
|
|||||||
=============== FORM ===============
|
=============== FORM ===============
|
||||||
Name: form_document_options
|
Name: form_document_options
|
||||||
Width: 395
|
Width: 395
|
||||||
Height: 310
|
Height: 325
|
||||||
Number of Objects: 8
|
Number of Objects: 8
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
class: FL_BOX
|
class: FL_BOX
|
||||||
type: FLAT_BOX
|
type: FLAT_BOX
|
||||||
box: 0 0 395 310
|
box: 0 0 395 325
|
||||||
boxtype: FL_FLAT_BOX
|
boxtype: FL_FLAT_BOX
|
||||||
colors: FL_COL1 FL_COL1
|
colors: FL_COL1 FL_COL1
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1373,7 +1373,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_INPUT
|
class: FL_INPUT
|
||||||
type: NORMAL_INPUT
|
type: NORMAL_INPUT
|
||||||
box: 185 20 120 25
|
box: 185 15 120 25
|
||||||
boxtype: FL_DOWN_BOX
|
boxtype: FL_DOWN_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1382,7 +1382,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: Float Placement:|#L
|
label: Float Placement:|#L
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_float_placement
|
name: input_float_placement
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -1391,7 +1391,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_COUNTER
|
class: FL_COUNTER
|
||||||
type: SIMPLE_COUNTER
|
type: SIMPLE_COUNTER
|
||||||
box: 185 60 80 25
|
box: 185 55 80 25
|
||||||
boxtype: FL_UP_BOX
|
boxtype: FL_UP_BOX
|
||||||
colors: FL_COL1 FL_BLUE
|
colors: FL_COL1 FL_BLUE
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1413,7 +1413,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_COUNTER
|
class: FL_COUNTER
|
||||||
type: SIMPLE_COUNTER
|
type: SIMPLE_COUNTER
|
||||||
box: 185 100 80 25
|
box: 185 90 80 25
|
||||||
boxtype: FL_UP_BOX
|
boxtype: FL_UP_BOX
|
||||||
colors: FL_COL1 FL_BLUE
|
colors: FL_COL1 FL_BLUE
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1435,7 +1435,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHOICE
|
class: FL_CHOICE
|
||||||
type: NORMAL_CHOICE
|
type: NORMAL_CHOICE
|
||||||
box: 185 140 140 25
|
box: 185 130 140 25
|
||||||
boxtype: FL_FRAME_BOX
|
boxtype: FL_FRAME_BOX
|
||||||
colors: FL_COL1 FL_BLACK
|
colors: FL_COL1 FL_BLACK
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1453,10 +1453,10 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHECKBUTTON
|
class: FL_CHECKBUTTON
|
||||||
type: PUSH_BUTTON
|
type: PUSH_BUTTON
|
||||||
box: 185 225 25 25
|
box: 185 220 140 25
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_YELLOW
|
colors: FL_COL1 FL_YELLOW
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_CENTER
|
||||||
style: FL_NORMAL_STYLE
|
style: FL_NORMAL_STYLE
|
||||||
size: FL_NORMAL_SIZE
|
size: FL_NORMAL_SIZE
|
||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
@ -1471,7 +1471,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHOICE
|
class: FL_CHOICE
|
||||||
type: NORMAL_CHOICE
|
type: NORMAL_CHOICE
|
||||||
box: 185 265 140 25
|
box: 185 260 140 25
|
||||||
boxtype: FL_FRAME_BOX
|
boxtype: FL_FRAME_BOX
|
||||||
colors: FL_COL1 FL_BLACK
|
colors: FL_COL1 FL_BLACK
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1489,7 +1489,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_CHOICE
|
class: FL_CHOICE
|
||||||
type: NORMAL_CHOICE
|
type: NORMAL_CHOICE
|
||||||
box: 185 185 140 25
|
box: 185 170 140 25
|
||||||
boxtype: FL_FRAME_BOX
|
boxtype: FL_FRAME_BOX
|
||||||
colors: FL_COL1 FL_BLACK
|
colors: FL_COL1 FL_BLACK
|
||||||
alignment: FL_ALIGN_LEFT
|
alignment: FL_ALIGN_LEFT
|
||||||
@ -1594,7 +1594,7 @@ size: FL_NORMAL_SIZE
|
|||||||
lcol: FL_BLACK
|
lcol: FL_BLACK
|
||||||
label: LaTeX:|#L
|
label: LaTeX:|#L
|
||||||
shortcut:
|
shortcut:
|
||||||
resize: FL_RESIZE_ALL
|
resize: FL_RESIZE_X
|
||||||
gravity: FL_NoGravity FL_NoGravity
|
gravity: FL_NoGravity FL_NoGravity
|
||||||
name: input_latex
|
name: input_latex
|
||||||
callback: C_FormBaseInputCB
|
callback: C_FormBaseInputCB
|
||||||
@ -1603,7 +1603,7 @@ argument: 0
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1712,7 +1712,7 @@ argument:
|
|||||||
--------------------
|
--------------------
|
||||||
class: FL_BEGIN_GROUP
|
class: FL_BEGIN_GROUP
|
||||||
type: 0
|
type: 0
|
||||||
box: 0 10 10 0
|
box: 0 0 0 0
|
||||||
boxtype: FL_NO_BOX
|
boxtype: FL_NO_BOX
|
||||||
colors: FL_COL1 FL_MCOL
|
colors: FL_COL1 FL_MCOL
|
||||||
alignment: FL_ALIGN_CENTER
|
alignment: FL_ALIGN_CENTER
|
||||||
@ -1854,5 +1854,191 @@ name:
|
|||||||
callback:
|
callback:
|
||||||
argument:
|
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
|
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>
|
2003-08-15 André Pönitz <poenitz@gmx.net>
|
||||||
|
|
||||||
* insettext.[Ch]: adjust after rowlist split
|
* insettext.[Ch]: adjust after rowlist split
|
||||||
|
@ -25,6 +25,8 @@ libinsets_la_SOURCES = \
|
|||||||
insetbibitem.h \
|
insetbibitem.h \
|
||||||
insetbibtex.C \
|
insetbibtex.C \
|
||||||
insetbibtex.h \
|
insetbibtex.h \
|
||||||
|
insetbranch.C \
|
||||||
|
insetbranch.h \
|
||||||
insetcaption.C \
|
insetcaption.C \
|
||||||
insetcaption.h \
|
insetcaption.h \
|
||||||
insetcite.C \
|
insetcite.C \
|
||||||
|
@ -51,7 +51,7 @@ public:
|
|||||||
in a cleaner way. */
|
in a cleaner way. */
|
||||||
enum Code {
|
enum Code {
|
||||||
///
|
///
|
||||||
NO_CODE,
|
NO_CODE, // 0
|
||||||
///
|
///
|
||||||
TOC_CODE, // do these insets really need a code? (ale)
|
TOC_CODE, // do these insets really need a code? (ale)
|
||||||
///
|
///
|
||||||
@ -59,9 +59,9 @@ public:
|
|||||||
///
|
///
|
||||||
MARK_CODE,
|
MARK_CODE,
|
||||||
///
|
///
|
||||||
REF_CODE, // 5
|
REF_CODE,
|
||||||
///
|
///
|
||||||
URL_CODE,
|
URL_CODE, // 5
|
||||||
///
|
///
|
||||||
HTMLURL_CODE,
|
HTMLURL_CODE,
|
||||||
///
|
///
|
||||||
@ -69,9 +69,9 @@ public:
|
|||||||
///
|
///
|
||||||
ENDING_CODE,
|
ENDING_CODE,
|
||||||
///
|
///
|
||||||
LABEL_CODE, // 10
|
LABEL_CODE,
|
||||||
///
|
///
|
||||||
NOTE_CODE,
|
NOTE_CODE, // 10
|
||||||
///
|
///
|
||||||
ACCENT_CODE,
|
ACCENT_CODE,
|
||||||
///
|
///
|
||||||
@ -79,9 +79,9 @@ public:
|
|||||||
///
|
///
|
||||||
INDEX_CODE,
|
INDEX_CODE,
|
||||||
///
|
///
|
||||||
INCLUDE_CODE, // 15
|
INCLUDE_CODE,
|
||||||
///
|
///
|
||||||
GRAPHICS_CODE,
|
GRAPHICS_CODE, // 15
|
||||||
///
|
///
|
||||||
BIBITEM_CODE,
|
BIBITEM_CODE,
|
||||||
///
|
///
|
||||||
@ -89,9 +89,9 @@ public:
|
|||||||
///
|
///
|
||||||
TEXT_CODE,
|
TEXT_CODE,
|
||||||
///
|
///
|
||||||
ERT_CODE, // 20
|
ERT_CODE,
|
||||||
///
|
///
|
||||||
FOOT_CODE,
|
FOOT_CODE, // 20
|
||||||
///
|
///
|
||||||
MARGIN_CODE,
|
MARGIN_CODE,
|
||||||
///
|
///
|
||||||
@ -101,9 +101,9 @@ public:
|
|||||||
///
|
///
|
||||||
MINIPAGE_CODE,
|
MINIPAGE_CODE,
|
||||||
///
|
///
|
||||||
SPACE_CODE,
|
SPACE_CODE, // 25
|
||||||
///
|
///
|
||||||
SPECIALCHAR_CODE, // 25
|
SPECIALCHAR_CODE,
|
||||||
///
|
///
|
||||||
TABULAR_CODE,
|
TABULAR_CODE,
|
||||||
///
|
///
|
||||||
@ -125,13 +125,15 @@ public:
|
|||||||
///
|
///
|
||||||
INDEX_PRINT_CODE,
|
INDEX_PRINT_CODE,
|
||||||
///
|
///
|
||||||
OPTARG_CODE,
|
OPTARG_CODE, // 35
|
||||||
///
|
///
|
||||||
ENVIRONMENT_CODE,
|
ENVIRONMENT_CODE,
|
||||||
///
|
///
|
||||||
HFILL_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,6 +321,7 @@ enum kb_action {
|
|||||||
LFUN_PARAGRAPH_UPDATE,
|
LFUN_PARAGRAPH_UPDATE,
|
||||||
LFUN_EXTERNAL_EDIT,
|
LFUN_EXTERNAL_EDIT,
|
||||||
// 245
|
// 245
|
||||||
|
LFUN_INSERT_BRANCH,
|
||||||
|
|
||||||
LFUN_LASTACTION // end of the table
|
LFUN_LASTACTION // end of the table
|
||||||
};
|
};
|
||||||
|
@ -505,6 +505,9 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & ev) const
|
|||||||
case InsetOld::NOTE_CODE:
|
case InsetOld::NOTE_CODE:
|
||||||
disable = ev.argument != "note";
|
disable = ev.argument != "note";
|
||||||
break;
|
break;
|
||||||
|
case InsetOld::BRANCH_CODE:
|
||||||
|
disable = ev.argument != "branch";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -633,6 +636,11 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & ev) const
|
|||||||
case LFUN_INSERT_NOTE:
|
case LFUN_INSERT_NOTE:
|
||||||
code = InsetOld::NOTE_CODE;
|
code = InsetOld::NOTE_CODE;
|
||||||
break;
|
break;
|
||||||
|
case LFUN_INSERT_BRANCH:
|
||||||
|
code = InsetOld::BRANCH_CODE;
|
||||||
|
if (buf->params.branchlist.empty())
|
||||||
|
disable = true;
|
||||||
|
break;
|
||||||
case LFUN_INSERT_LABEL:
|
case LFUN_INSERT_LABEL:
|
||||||
code = InsetOld::LABEL_CODE;
|
code = InsetOld::LABEL_CODE;
|
||||||
break;
|
break;
|
||||||
|
@ -1494,6 +1494,7 @@ InsetOld::RESULT LyXText::dispatch(FuncRequest const & cmd)
|
|||||||
case LFUN_INSET_CAPTION:
|
case LFUN_INSET_CAPTION:
|
||||||
#endif
|
#endif
|
||||||
case LFUN_INSERT_NOTE:
|
case LFUN_INSERT_NOTE:
|
||||||
|
case LFUN_INSERT_BRANCH:
|
||||||
case LFUN_INSERT_BIBITEM:
|
case LFUN_INSERT_BIBITEM:
|
||||||
case LFUN_INSET_ERT:
|
case LFUN_INSET_ERT:
|
||||||
case LFUN_INSET_FLOAT:
|
case LFUN_INSET_FLOAT:
|
||||||
|
Loading…
Reference in New Issue
Block a user