Remove TextClassPtr without losing the type safety it provided.

See these threads:
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg136112.html
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg136062.html
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg135997.html
for some background.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23299 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2008-02-28 01:42:02 +00:00
parent 768cfbb308
commit d8a6b5bfd0
54 changed files with 223 additions and 250 deletions

View File

@ -113,7 +113,6 @@ src_header_files = Split('''
TexRow.h
Text.h
TextClass.h
TextClassPtr.h
TextMetrics.h
Thesaurus.h
TocBackend.h

View File

@ -522,7 +522,7 @@ int Buffer::readHeader(Lexer & lex)
s, -1, 0, 0));
}
params().makeTextClass();
params().makeDocumentClass();
return unknown_tokens;
}
@ -1186,19 +1186,19 @@ void Buffer::writeLaTeXSource(odocstream & os,
bool Buffer::isLatex() const
{
return params().textClass().outputType() == LATEX;
return params().documentClass().outputType() == LATEX;
}
bool Buffer::isLiterate() const
{
return params().textClass().outputType() == LITERATE;
return params().documentClass().outputType() == LITERATE;
}
bool Buffer::isDocBook() const
{
return params().textClass().outputType() == DOCBOOK;
return params().documentClass().outputType() == DOCBOOK;
}
@ -1229,7 +1229,7 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
d->texrow.reset();
TextClass const & tclass = params().textClass();
DocumentClass const & tclass = params().documentClass();
string const top_element = tclass.latexname();
if (!only_body) {
@ -1284,7 +1284,7 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
<< " file was created by LyX " << lyx_version
<< "\n See http://www.lyx.org/ for more information -->\n";
params().textClass().counters().reset();
params().documentClass().counters().reset();
loadChildDocuments();
@ -2535,7 +2535,7 @@ vector<Format const *> Buffer::exportableFormats(bool only_viewable) const
vector<string> Buffer::backends() const
{
vector<string> v;
if (params().textClass().isTeXClassAvailable()) {
if (params().documentClass().isTeXClassAvailable()) {
v.push_back(bufferFormat());
// FIXME: Don't hardcode format names here, but use a flag
if (v.back() == "latex")

View File

@ -315,7 +315,7 @@ BufferParams::BufferParams()
: pimpl_(new Impl)
{
setBaseClass(defaultBaseclass());
makeTextClass();
makeDocumentClass();
paragraph_separation = PARSEP_INDENT;
quotes_language = InsetQuotes::EnglishQ;
fontsize = "default";
@ -483,7 +483,7 @@ string const BufferParams::readToken(Lexer & lex, string const & token,
// FIXME: this warning will be given even if there exists a local .cls
// file. Even worse, the .lyx file can not be compiled or exported
// because the textclass is marked as unavilable.
if (!textClass().isTeXClassAvailable()) {
if (!documentClass().isTeXClassAvailable()) {
docstring const msg =
bformat(_("The layout file requested by this document,\n"
"%1$s.layout,\n"
@ -820,7 +820,7 @@ void BufferParams::writeFile(ostream & os) const
void BufferParams::validate(LaTeXFeatures & features) const
{
features.require(textClass().requires());
features.require(documentClass().requires());
if (outputChanges) {
bool dvipost = LaTeXFeatures::isAvailable("dvipost");
@ -862,7 +862,7 @@ void BufferParams::validate(LaTeXFeatures & features) const
// AMS Style is at document level
if (use_amsmath == package_on
|| textClass().provides("amsmath"))
|| documentClass().provides("amsmath"))
features.require("amsmath");
if (use_esint == package_on)
features.require("esint");
@ -903,7 +903,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
{
os << "\\documentclass";
TextClass const & tclass = textClass();
DocumentClass const & tclass = documentClass();
ostringstream clsoptions; // the document class options.
@ -1244,7 +1244,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
// hyperref, see
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129680.html
if (language->lang() == "japanese-plain" &&
!textClass().provides("japanese")) {
!documentClass().provides("japanese")) {
//load babel in case it was not loaded due to an empty language list
if (language_options.str().empty())
lyxpreamble += "\\usepackage{babel}\n";
@ -1262,7 +1262,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
// use hyperref explicitely when it is required
if (features.isRequired("hyperref")) {
odocstringstream oss;
pdfoptions().writeLaTeX(oss, textClass().provides("hyperref"));
pdfoptions().writeLaTeX(oss, documentClass().provides("hyperref"));
lyxpreamble += oss.str();
}
@ -1371,19 +1371,20 @@ bool BufferParams::hasClassDefaults() const
}
TextClass const & BufferParams::textClass() const
DocumentClass const & BufferParams::documentClass() const
{
return *textClass_;
return *doc_class_;
}
TextClassPtr BufferParams::textClassPtr() const {
return textClass_;
DocumentClass * BufferParams::documentClassPtr() const {
return doc_class_;
}
void BufferParams::setTextClass(TextClassPtr tc) {
textClass_ = tc;
void BufferParams::setDocumentClass(DocumentClass const * const tc) {
// evil, but this function is evil
doc_class_ = const_cast<DocumentClass *>(tc);
}
@ -1408,9 +1409,9 @@ BaseClassIndex BufferParams::baseClass() const
}
void BufferParams::makeTextClass()
void BufferParams::makeDocumentClass()
{
textClass_ = TextClassBundle::get().newClass(baseclasslist[baseClass()]);
doc_class_ = &(DocumentClassBundle::get().newClass(baseclasslist[baseClass()]));
//FIXME It might be worth loading the children's modules here,
//just as we load their bibliographies and such, instead of just
@ -1427,7 +1428,7 @@ void BufferParams::makeTextClass()
"probably need to reconfigure LyX.\n"), from_utf8(modName));
frontend::Alert::warning(_("Module not available"),
msg + _("Some layouts may not be available."));
lyxerr << "BufferParams::makeTextClass(): Module " <<
lyxerr << "BufferParams::makeDocumentClass(): Module " <<
modName << " requested but not found in module list." <<
endl;
continue;
@ -1440,7 +1441,7 @@ void BufferParams::makeTextClass()
frontend::Alert::warning(_("Package not available"), msg);
}
FileName layout_file = libFileSearch("layouts", lm->getFilename());
if (!textClass_->read(layout_file, TextClass::MODULE)) {
if (!doc_class_->read(layout_file, TextClass::MODULE)) {
docstring const msg =
bformat(_("Error reading module %1$s\n"), from_utf8(modName));
frontend::Alert::warning(_("Read Error"), msg);
@ -1479,7 +1480,7 @@ void BufferParams::clearLayoutModules()
Font const BufferParams::getFont() const
{
FontInfo f = textClass().defaultfont();
FontInfo f = documentClass().defaultfont();
if (fontsDefaultFamily == "rmdefault")
f.setFamily(ROMAN_FAMILY);
else if (fontsDefaultFamily == "sfdefault")
@ -1929,7 +1930,7 @@ biblio::CiteEngine BufferParams::getEngine() const
{
// FIXME the class should provide the numerical/
// authoryear choice
if (textClass().provides("natbib")
if (documentClass().provides("natbib")
&& cite_engine_ != biblio::ENGINE_NATBIB_NUMERICAL)
return biblio::ENGINE_NATBIB_AUTHORYEAR;
return cite_engine_;

View File

@ -18,7 +18,6 @@
#include "Font.h"
#include "BiblioInfo.h"
#include "paper.h"
#include "TextClassPtr.h"
#include "insets/InsetQuotes.h"
@ -36,6 +35,7 @@ class AuthorList;
class BaseClassIndex;
class BranchList;
class Bullet;
class DocumentClass;
class Encoding;
class Language;
class Lexer;
@ -109,27 +109,27 @@ public:
///Get the LyX TextClass (that is, the layout file) this document is using.
BaseClassIndex baseClass() const;
/// Set the LyX TextClass (that is, the layout file) this document is using.
/// NOTE: This does not call makeTextClass() to update the local TextClass.
/// That needs to be done manually.
/// NOTE: This does not call makeDocumentClass() to update the local
/// DocumentClass. That needs to be done manually.
bool setBaseClass(BaseClassIndex);
/// Adds the module information to the baseClass information to
/// create our local TextClass.
void makeTextClass();
/// Returns the TextClass currently in use: the BaseClass as modified
/// create our local DocumentClass.
void makeDocumentClass();
/// Returns the DocumentClass currently in use: the BaseClass as modified
/// by modules.
TextClass const & textClass() const;
/// Returns a pointer to the TextClass currently in use: the BaseClass
/// as modified by modules. (See \file TextClassPtr.h for the typedef.)
TextClassPtr textClassPtr() const;
DocumentClass const & documentClass() const;
/// \return A pointer to the DocumentClass currently in use: the BaseClass
/// as modified by modules.
DocumentClass * documentClassPtr() const;
/// This bypasses the baseClass and sets the textClass directly.
/// Should be called with care and would be better not being here,
/// but it seems to be needed by CutAndPaste::putClipboard().
void setTextClass(TextClassPtr);
void setDocumentClass(DocumentClass const * const);
/// List of modules in use
std::vector<std::string> const & getModules() const;
/// Add a module to the list of modules in use.
/// Returns true if module was successfully added.
/// The makeClass variable signals whether to call makeTextClass. This
/// The makeClass variable signals whether to call makeDocumentClass. This
/// need not be done if we know this isn't the final time through, or if
/// the BufferParams do not represent the parameters for an actual buffer
/// (as in GuiDocument).
@ -327,8 +327,8 @@ private:
/// for use with natbib
biblio::CiteEngine cite_engine_;
/// the possibly modular TextClass actually in use
TextClassPtr textClass_;
///
DocumentClass * doc_class_;
///
typedef std::vector<std::string> LayoutModuleList;
///

View File

@ -1887,7 +1887,7 @@ void BufferView::insertLyXFile(FileName const & fname)
el = buf.errorList("Parse");
buffer_.undo().recordUndo(d->cursor_);
cap::pasteParagraphList(d->cursor_, buf.paragraphs(),
buf.params().textClassPtr(), el);
buf.params().documentClassPtr(), el);
res = _("Document %1$s inserted.");
} else {
res = _("Could not insert document %1$s");

View File

@ -70,7 +70,7 @@ namespace {
typedef pair<pit_type, int> PitPosPair;
typedef limited_stack<pair<ParagraphList, TextClassPtr> > CutStack;
typedef limited_stack<pair<ParagraphList, DocumentClass const *> > CutStack;
CutStack theCuts(10);
// persistent selection, cleared until the next selection
@ -106,7 +106,7 @@ bool checkPastePossible(int index)
pair<PitPosPair, pit_type>
pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
TextClassPtr textclass, ErrorList & errorlist)
DocumentClass const * const docclass, ErrorList & errorlist)
{
Buffer const & buffer = cur.buffer();
pit_type pit = cur.pit();
@ -120,7 +120,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
// Make a copy of the CaP paragraphs.
ParagraphList insertion = parlist;
TextClassPtr const tc = buffer.params().textClassPtr();
DocumentClass const * const tc = buffer.params().documentClassPtr();
// Now remove all out of the pars which is NOT allowed in the
// new environment and set also another font if that is required.
@ -148,7 +148,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
// supposed to be the default, not just if it is forced
if (cur.inset().useEmptyLayout()) {
LayoutPtr const layout =
buffer.params().textClass().emptyLayout();
buffer.params().documentClass().emptyLayout();
ParagraphList::iterator const end = insertion.end();
for (ParagraphList::iterator par = insertion.begin();
par != end; ++par)
@ -162,7 +162,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
// since we store pointers to insets at some places and we don't
// want to invalidate them.
insertion.swap(in.paragraphs());
cap::switchBetweenClasses(textclass, tc, in, errorlist);
cap::switchBetweenClasses(docclass, tc, in, errorlist);
insertion.swap(in.paragraphs());
ParagraphList::iterator tmpbuf = insertion.begin();
@ -317,15 +317,15 @@ PitPosPair eraseSelectionHelper(BufferParams const & params,
}
void putClipboard(ParagraphList const & paragraphs, TextClassPtr textclass,
docstring const & plaintext)
void putClipboard(ParagraphList const & paragraphs,
DocumentClass const * const docclass, docstring const & plaintext)
{
// For some strange reason gcc 3.2 and 3.3 do not accept
// Buffer buffer(string(), false);
Buffer buffer("", false);
buffer.setUnnamed(true);
buffer.paragraphs() = paragraphs;
buffer.params().setTextClass(textclass);
buffer.params().setDocumentClass(docclass);
ostringstream lyx;
if (buffer.write(lyx))
theClipboard().put(lyx.str(), plaintext);
@ -336,7 +336,7 @@ void putClipboard(ParagraphList const & paragraphs, TextClassPtr textclass,
void copySelectionHelper(Buffer const & buf, ParagraphList & pars,
pit_type startpit, pit_type endpit,
int start, int end, TextClassPtr tc, CutStack & cutstack)
int start, int end, DocumentClass const * const dc, CutStack & cutstack)
{
BOOST_ASSERT(0 <= start && start <= pars[startpit].size());
BOOST_ASSERT(0 <= end && end <= pars[endpit].size());
@ -372,7 +372,8 @@ void copySelectionHelper(Buffer const & buf, ParagraphList & pars,
// do not copy text (also nested in insets) which is marked as deleted
acceptChanges(copy_pars, buf.params());
cutstack.push(make_pair(copy_pars, tc));
DocumentClass * d = const_cast<DocumentClass *>(dc);
cutstack.push(make_pair(copy_pars, d));
}
} // namespace anon
@ -392,8 +393,8 @@ docstring grabAndEraseSelection(Cursor & cur)
}
void switchBetweenClasses(TextClassPtr const & oldone,
TextClassPtr const & newone, InsetText & in, ErrorList & errorlist)
void switchBetweenClasses(DocumentClass const * const oldone,
DocumentClass const * const newone, InsetText & in, ErrorList & errorlist)
{
errorlist.clear();
@ -401,8 +402,8 @@ void switchBetweenClasses(TextClassPtr const & oldone,
if (oldone == newone)
return;
TextClass const & oldtc = *oldone;
TextClass const & newtc = *newone;
DocumentClass const & oldtc = *oldone;
DocumentClass const & newtc = *newone;
// layouts
ParIterator end = par_iterator_end(in);
@ -410,7 +411,9 @@ void switchBetweenClasses(TextClassPtr const & oldone,
docstring const name = it->layout()->name();
bool hasLayout = newtc.hasLayout(name);
if (hasLayout)
if (in.useEmptyLayout())
it->setLayout(newtc.emptyLayout());
else if (hasLayout)
it->setLayout(newtc[name]);
else
it->setLayout(newtc.defaultLayout());
@ -518,7 +521,7 @@ void cutSelection(Cursor & cur, bool doclear, bool realcut)
text->paragraphs(),
begpit, endpit,
cur.selBegin().pos(), endpos,
bp.textClassPtr(), theCuts);
bp.documentClassPtr(), theCuts);
// Stuff what we got on the clipboard.
// Even if there is no selection.
putClipboard(theCuts[0].first, theCuts[0].second,
@ -602,7 +605,7 @@ void copySelectionToStack(Cursor & cur, CutStack & cutstack)
copySelectionHelper(cur.buffer(), pars, par, cur.selEnd().pit(),
pos, cur.selEnd().pos(),
cur.buffer().params().textClassPtr(), cutstack);
cur.buffer().params().documentClassPtr(), cutstack);
dirtyTabularStack(false);
}
@ -611,10 +614,11 @@ void copySelectionToStack(Cursor & cur, CutStack & cutstack)
ParagraphList pars;
Paragraph par;
BufferParams const & bp = cur.buffer().params();
par.setLayout(bp.textClass().defaultLayout());
// FIXME This should be the empty layout...right?
par.setLayout(bp.documentClass().emptyLayout());
par.insert(0, grabSelection(cur), Font(), Change(Change::UNCHANGED));
pars.push_back(par);
cutstack.push(make_pair(pars, bp.textClassPtr()));
cutstack.push(make_pair(pars, bp.documentClassPtr()));
}
}
@ -638,10 +642,10 @@ void copySelection(Cursor & cur, docstring const & plaintext)
ParagraphList pars;
Paragraph par;
BufferParams const & bp = cur.buffer().params();
par.setLayout(bp.textClass().defaultLayout());
par.setLayout(bp.documentClass().emptyLayout());
par.insert(0, plaintext, Font(), Change(Change::UNCHANGED));
pars.push_back(par);
theCuts.push(make_pair(pars, bp.textClassPtr()));
theCuts.push(make_pair(pars, bp.documentClassPtr()));
} else {
copySelectionToStack(cur, theCuts);
}
@ -692,7 +696,7 @@ docstring selection(size_t sel_index)
void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
TextClassPtr textclass, ErrorList & errorList)
DocumentClass const * const docclass, ErrorList & errorList)
{
if (cur.inTexted()) {
Text * text = cur.text();
@ -702,7 +706,7 @@ void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
PitPosPair ppp;
boost::tie(ppp, endpit) =
pasteSelectionHelper(cur, parlist, textclass, errorList);
pasteSelectionHelper(cur, parlist, docclass, errorList);
updateLabels(cur.buffer());
cur.clearSelection();
text->setCursor(cur, ppp.first, ppp.second);
@ -745,7 +749,7 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs)
if (buffer.readString(lyx)) {
cur.recordUndo();
pasteParagraphList(cur, buffer.paragraphs(),
buffer.params().textClassPtr(), errorList);
buffer.params().documentClassPtr(), errorList);
cur.setSelection();
return;
}

View File

@ -14,8 +14,6 @@
#ifndef CUTANDPASTE_H
#define CUTANDPASTE_H
#include "TextClassPtr.h"
#include "support/docstring.h"
#include "frontends/Clipboard.h"
@ -26,6 +24,7 @@ using lyx::frontend::Clipboard;
namespace lyx {
class DocumentClass;
class ErrorList;
class InsetText;
class Cursor;
@ -100,15 +99,15 @@ void pasteFromStack(Cursor & cur, ErrorList & errorList, size_t sel_index);
/// Paste the paragraph list \p parlist at the position given by \p cur.
/// Does not handle undo. Does only work in text, not mathed.
void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
TextClassPtr textclass, ErrorList & errorList);
DocumentClass const * const textclass, ErrorList & errorList);
/** Needed to switch between different classes. This works
* for a list of paragraphs beginning with the specified par.
* It changes layouts and character styles.
*/
void switchBetweenClasses(TextClassPtr const & c1,
TextClassPtr const & c2, InsetText & in, ErrorList &);
void switchBetweenClasses(DocumentClass const * const c1,
DocumentClass const * const c2, InsetText & in, ErrorList &);
/// Get the current selection as a string. Does not change the selection.
/// Does only work if the whole selection is in mathed.

View File

@ -375,7 +375,7 @@ void LaTeXFeatures::useLayout(docstring const & layoutname)
return;
}
TextClass const & tclass = params_.textClass();
DocumentClass const & tclass = params_.documentClass();
if (tclass.hasLayout(layoutname)) {
// Is this layout already in usedLayouts?
if (find(usedLayouts_.begin(), usedLayouts_.end(), layoutname)
@ -409,7 +409,7 @@ bool LaTeXFeatures::isRequired(string const & name) const
bool LaTeXFeatures::mustProvide(string const & name) const
{
return isRequired(name) && !params_.textClass().provides(name);
return isRequired(name) && !params_.documentClass().provides(name);
}
@ -439,7 +439,7 @@ void LaTeXFeatures::useFloat(string const & name)
// We only need float.sty if we use non builtin floats, or if we
// use the "H" modifier. This includes modified table and
// figure floats. (Lgb)
Floating const & fl = params_.textClass().floats().getType(name);
Floating const & fl = params_.documentClass().floats().getType(name);
if (!fl.type().empty() && !fl.builtin()) {
require("float");
}
@ -555,7 +555,7 @@ int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
string const LaTeXFeatures::getPackages() const
{
ostringstream packages;
TextClass const & tclass = params_.textClass();
DocumentClass const & tclass = params_.documentClass();
// FIXME: currently, we can only load packages and macros known
// to LyX.
@ -828,7 +828,7 @@ string const LaTeXFeatures::getBabelOptions() const
docstring const LaTeXFeatures::getTClassPreamble() const
{
// the text class specific preamble
TextClass const & tclass = params_.textClass();
DocumentClass const & tclass = params_.documentClass();
odocstringstream tcpreamble;
tcpreamble << tclass.preamble();
@ -903,7 +903,7 @@ BufferParams const & LaTeXFeatures::bufferParams() const
void LaTeXFeatures::getFloatDefinitions(ostream & os) const
{
FloatList const & floats = params_.textClass().floats();
FloatList const & floats = params_.documentClass().floats();
// Here we will output the code to create the needed float styles.
// We will try to do this as minimal as possible.

View File

@ -1539,7 +1539,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
Buffer * buffer = lyx_view_->buffer();
TextClassPtr oldClass = buffer->params().textClassPtr();
DocumentClass * oldClass = buffer->params().documentClassPtr();
Cursor & cur = view()->cursor();
cur.recordUndoFullDocument();
@ -1583,10 +1583,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
case LFUN_LAYOUT_MODULES_CLEAR: {
BOOST_ASSERT(lyx_view_);
Buffer * buffer = lyx_view_->buffer();
TextClassPtr oldClass = buffer->params().textClassPtr();
DocumentClass * oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().clearLayoutModules();
buffer->params().makeTextClass();
buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
@ -1595,10 +1595,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
case LFUN_LAYOUT_MODULE_ADD: {
BOOST_ASSERT(lyx_view_);
Buffer * buffer = lyx_view_->buffer();
TextClassPtr oldClass = buffer->params().textClassPtr();
DocumentClass * oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().addLayoutModule(argument);
buffer->params().makeTextClass();
buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
@ -1624,10 +1624,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
break;
//Save the old, possibly modular, layout for use in conversion.
TextClassPtr oldClass = buffer->params().textClassPtr();
DocumentClass * oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().setBaseClass(new_class);
buffer->params().makeTextClass();
buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
@ -1636,11 +1636,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
case LFUN_LAYOUT_RELOAD: {
BOOST_ASSERT(lyx_view_);
Buffer * buffer = lyx_view_->buffer();
TextClassPtr oldClass = buffer->params().textClassPtr();
DocumentClass * oldClass = buffer->params().documentClassPtr();
BaseClassIndex const tc = buffer->params().baseClass();
baseclasslist.reset(tc);
buffer->params().setBaseClass(tc);
buffer->params().makeTextClass();
buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
@ -1866,14 +1866,14 @@ bool LyXFunc::wasMetaKey() const
}
void LyXFunc::updateLayout(TextClassPtr oldlayout,Buffer * buffer)
void LyXFunc::updateLayout(DocumentClass * oldlayout,Buffer * buffer)
{
lyx_view_->message(_("Converting document to new document class..."));
StableDocIterator backcur(view()->cursor());
ErrorList & el = buffer->errorList("Class Switch");
cap::switchBetweenClasses(
oldlayout, buffer->params().textClassPtr(),
oldlayout, buffer->params().documentClassPtr(),
static_cast<InsetText &>(buffer->inset()), el);
view()->setCursor(backcur.asDocIterator(&(buffer->inset())));

View File

@ -17,7 +17,6 @@
#include "KeySequence.h"
#include "lfuns.h"
#include "TextClassPtr.h"
#include "support/docstring.h"
@ -25,6 +24,7 @@ namespace lyx {
class Buffer;
class BufferView;
class DocumentClass;
class FuncRequest;
class FuncStatus;
class KeySymbol;
@ -134,7 +134,7 @@ private:
///
bool ensureBufferClean(BufferView * bv);
///
void updateLayout(TextClassPtr oldlayout, Buffer * buffer);
void updateLayout(DocumentClass * oldlayout, Buffer * buffer);
};
/// Implementation is in LyX.cpp

View File

@ -262,7 +262,6 @@ HEADERFILESCORE = \
TexStream.h \
Text.h \
TextClass.h \
TextClassPtr.h \
TextMetrics.h \
TocBackend.h \
ToolbarBackend.h \

View File

@ -598,7 +598,7 @@ void expandFloatListInsert(Menu & tomenu, Buffer const * buf)
return;
}
FloatList const & floats = buf->params().textClass().floats();
FloatList const & floats = buf->params().documentClass().floats();
FloatList::const_iterator cit = floats.begin();
FloatList::const_iterator end = floats.end();
for (; cit != end; ++cit) {
@ -619,7 +619,7 @@ void expandFloatInsert(Menu & tomenu, Buffer const * buf)
return;
}
FloatList const & floats = buf->params().textClass().floats();
FloatList const & floats = buf->params().documentClass().floats();
FloatList::const_iterator cit = floats.begin();
FloatList::const_iterator end = floats.end();
for (; cit != end; ++cit) {
@ -641,7 +641,7 @@ void expandFlexInsert(Menu & tomenu, Buffer const * buf, string s)
return;
}
TextClass::InsetLayouts const & insetLayouts =
buf->params().textClass().insetLayouts();
buf->params().documentClass().insetLayouts();
TextClass::InsetLayouts::const_iterator cit = insetLayouts.begin();
TextClass::InsetLayouts::const_iterator end = insetLayouts.end();
for (; cit != end; ++cit) {
@ -741,7 +741,7 @@ void expandToc(Menu & tomenu, Buffer const * buf)
tomenu.add(MenuItem(MenuItem::Command, _("Master Document"), f));
}
FloatList const & floatlist = buf->params().textClass().floats();
FloatList const & floatlist = buf->params().documentClass().floats();
TocList const & toc_list = buf->tocBackend().tocs();
TocList::const_iterator cit = toc_list.begin();
TocList::const_iterator end = toc_list.end();

View File

@ -1522,7 +1522,7 @@ docstring const Paragraph::translateIfPossible(docstring const & s,
docstring Paragraph::expandLabel(LayoutPtr const & layout,
BufferParams const & bparams, bool process_appendix) const
{
TextClass const & tclass = bparams.textClass();
DocumentClass const & tclass = bparams.documentClass();
docstring fmt;
if (process_appendix && d->params_.appendix())
@ -1827,7 +1827,7 @@ bool Paragraph::latex(BufferParams const & bparams,
bool asdefault = forceEmptyLayout();
if (asdefault)
style = bparams.textClass().defaultLayout();
style = bparams.documentClass().emptyLayout();
else
style = d->layout_;

View File

@ -198,7 +198,7 @@ void ParagraphMetrics::dump() const
int ParagraphMetrics::rightMargin(BufferView const & bv) const
{
BufferParams const & params = bv.buffer().params();
TextClass const & tclass = params.textClass();
DocumentClass const & tclass = params.documentClass();
frontend::FontMetrics const & fm = theFontMetrics(params.getFont());
int const r_margin =
bv.rightMargin()

View File

@ -96,7 +96,7 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
font = Font(inherit_font, bp.language);
change = Change(Change::UNCHANGED);
TextClass const & tclass = bp.textClass();
DocumentClass const & tclass = bp.documentClass();
if (layoutname.empty())
layoutname = tclass.defaultLayoutName();
@ -125,12 +125,12 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
tclass.defaultLayoutName();
}
par.setLayout(bp.textClass()[layoutname]);
par.setLayout(bp.documentClass()[layoutname]);
// Test whether the layout is obsolete.
LayoutPtr const & layout = par.layout();
if (!layout->obsoleted_by().empty())
par.setLayout(bp.textClass()[layout->obsoleted_by()]);
par.setLayout(bp.documentClass()[layout->obsoleted_by()]);
par.params().read(lex);
@ -355,7 +355,7 @@ void Text::breakParagraph(Cursor & cur, bool inverse_logic)
Paragraph & cpar = cur.paragraph();
pit_type cpit = cur.pit();
TextClass const & tclass = cur.buffer().params().textClass();
DocumentClass const & tclass = cur.buffer().params().documentClass();
LayoutPtr const & layout = cpar.layout();
// this is only allowed, if the current paragraph is not empty
@ -915,11 +915,7 @@ bool Text::handleBibitems(Cursor & cur)
}
// otherwise reset to default
if (par.useEmptyLayout())
cur.paragraph().setLayout(bufparams.textClass().emptyLayout());
else
cur.paragraph().setLayout(bufparams.textClass().defaultLayout());
return true;
cur.paragraph().setEmptyOrDefaultLayout(bufparams.documentClass());
}
@ -979,7 +975,7 @@ bool Text::backspacePos0(Cursor & cur)
bool needsUpdate = false;
BufferParams const & bufparams = cur.buffer().params();
TextClass const & tclass = bufparams.textClass();
DocumentClass const & tclass = bufparams.documentClass();
ParagraphList & plist = cur.text()->paragraphs();
Paragraph const & par = cur.paragraph();
Cursor prevcur = cur;
@ -1104,7 +1100,7 @@ bool Text::dissolveInset(Cursor & cur) {
for (; it != it_end; it++)
it->changeLanguage(b.params(), latex_language, b.language());
pasteParagraphList(cur, plist, b.params().textClassPtr(),
pasteParagraphList(cur, plist, b.params().documentClassPtr(),
b.errorList("Paste"));
// restore position
cur.pit() = min(cur.lastpit(), spit);

View File

@ -199,7 +199,7 @@ void Text::setLayout(Buffer const & buffer, pit_type start, pit_type end,
BOOST_ASSERT(start != end);
BufferParams const & bufparams = buffer.params();
LayoutPtr const & lyxlayout = bufparams.textClass()[layout];
LayoutPtr const & lyxlayout = bufparams.documentClass()[layout];
for (pit_type pit = start; pit != end; ++pit) {
Paragraph & par = pars_[pit];
@ -218,7 +218,7 @@ void Text::setLayout(Cursor & cur, docstring const & layout)
// special handling of new environment insets
BufferView & bv = cur.bv();
BufferParams const & params = bv.buffer().params();
LayoutPtr const & lyxlayout = params.textClass()[layout];
LayoutPtr const & lyxlayout = params.documentClass()[layout];
if (lyxlayout->is_environment) {
// move everything in a new environment inset
LYXERR(Debug::DEBUG, "setting layout " << to_utf8(layout));

View File

@ -220,7 +220,7 @@ static bool doInsertInset(Cursor & cur, Text * text,
if (insetText && !insetText->allowMultiPar() || cur.lastpit() == 0) {
// reset first par to default
cur.text()->paragraphs().begin()
->setEmptyOrDefaultLayout(bparams.textClass());
->setEmptyOrDefaultLayout(bparams.documentClass());
cur.pos() = 0;
cur.pit() = 0;
// Merge multiple paragraphs -- hack
@ -229,8 +229,8 @@ static bool doInsertInset(Cursor & cur, Text * text,
} else {
// reset surrounding par to default
docstring const layoutname = insetText->useEmptyLayout()
? bparams.textClass().emptyLayoutName()
: bparams.textClass().defaultLayoutName();
? bparams.documentClass().emptyLayoutName()
: bparams.documentClass().defaultLayoutName();
cur.leaveInset(*inset);
text->setLayout(cur, layoutname);
}
@ -266,7 +266,7 @@ static void outline(OutlineOp mode, Cursor & cur)
ParagraphList::iterator finish = start;
ParagraphList::iterator end = pars.end();
TextClass const & tc = buf.params().textClass();
DocumentClass const & tc = buf.params().documentClass();
int const thistoclevel = start->layout()->toclevel;
int toclevel;
@ -1011,7 +1011,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
Paragraph const & para = cur.paragraph();
docstring const old_layout = para.layout()->name();
TextClass const & tclass = bv->buffer().params().textClass();
DocumentClass const & tclass = bv->buffer().params().documentClass();
if (layout.empty())
layout = tclass.defaultLayoutName();
@ -1384,7 +1384,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
cur.posForward();
ParagraphList & pars = cur.text()->paragraphs();
TextClass const & tclass = bv->buffer().params().textClass();
DocumentClass const & tclass = bv->buffer().params().documentClass();
// add a separate paragraph for the caption inset
pars.push_back(Paragraph());
@ -1675,7 +1675,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
break;
case LFUN_FLOAT_LIST: {
TextClass const & tclass = bv->buffer().params().textClass();
DocumentClass const & tclass = bv->buffer().params().documentClass();
if (tclass.floats().typeExist(to_utf8(cmd.argument()))) {
cur.recordUndo();
if (cur.selection())
@ -1946,7 +1946,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_FLEX_INSERT: {
code = FLEX_CODE;
string s = cmd.getArg(0);
InsetLayout il = cur.buffer().params().textClass().insetLayout(from_utf8(s));
InsetLayout il =
cur.buffer().params().documentClass().insetLayout(from_utf8(s));
if (il.lyxtype() != "charstyle" &&
il.lyxtype() != "custom" &&
il.lyxtype() != "element" &&

View File

@ -1131,28 +1131,24 @@ bool TextClass::hasTocLevels() const
}
TextClassPtr TextClassBundle::newClass(TextClass const & baseClass)
DocumentClass & DocumentClassBundle::newClass(TextClass const & baseClass)
{
TextClass * tc = new TextClass(baseClass);
tc_list_.push_back(tc);
return tc;
DocumentClass dc(baseClass);
tc_list_.push_back(dc);
return tc_list_.back();
}
TextClassBundle & TextClassBundle::get()
DocumentClassBundle & DocumentClassBundle::get()
{
static TextClassBundle singleton;
static DocumentClassBundle singleton;
return singleton;
}
TextClassBundle::~TextClassBundle()
{
std::list<TextClassPtr>::iterator it = tc_list_.begin();
std::list<TextClassPtr>::iterator end = tc_list_.end();
for (; it != end; ++it)
delete *it;
}
DocumentClass::DocumentClass(TextClass const & tc)
: TextClass(tc)
{}
ostream & operator<<(ostream & os, PageSides p)

View File

@ -14,7 +14,6 @@
#include "FontInfo.h"
#include "LayoutEnums.h"
#include "LayoutPtr.h"
#include "TextClassPtr.h"
#include "insets/InsetLayout.h"
@ -32,10 +31,10 @@ namespace lyx {
namespace support { class FileName; }
class Layout;
class Lexer;
class Counters;
class FloatList;
class Layout;
class Lexer;
/// A TextClass represents a collection of layout information: At the
@ -292,34 +291,44 @@ private:
};
/// This class amounts to little more than a `strong typedef'.
/// Its purpose is to control the creation of TextClass objects
/// within the DocumentClassBundle.
/// These TextClasses represent the layout information that is
/// associated with a given buffer.
class DocumentClass : public TextClass {
private:
/// Constructs a DocumentClass based upon a TextClass.
DocumentClass(TextClass const & tc);
/// The only class that can create a DocumentClass is
/// DocumentClassBundle, which calls the private constructor.
friend class DocumentClassBundle;
};
/// This is simply a container for the text classes generated when modules
/// are read, so that they stay in memory for use by Insets, CutAndPaste,
/// and the like. Since they're constructed via new, they wouldn't actually
/// disappear without this class---but this class holds the pointers to them
/// so that they don't leak.
/// and the like.
/// FIXME Some sort of garbage collection or reference counting wouldn't
/// be a bad idea here. It might be enough to check when a Buffer is closed
/// (or makeTextClass is called) whether the old TextClass is in use anywhere.
/// (or makeDocumentClass is called) whether the old DocumentClass is in use
/// anywhere.
///
/// This is a singleton class. Its sole instance is accessed via
/// TextClassBundle::get().
///
/// See \file TextClassPtr.h for the definition of TextClassPtr.
class TextClassBundle {
/// DocumentClassBundle::get().
class DocumentClassBundle {
public:
/// \return Pointer to a new class equal to baseClass
TextClassPtr newClass(TextClass const & baseClass);
DocumentClass & newClass(TextClass const & baseClass);
/// \return The sole instance of this class.
static TextClassBundle & get();
///
~TextClassBundle();
static DocumentClassBundle & get();
private:
/// control instantiation
TextClassBundle() {};
DocumentClassBundle() {}
/// noncopyable
TextClassBundle(TextClassBundle const &);
DocumentClassBundle(DocumentClassBundle const &);
///
std::list<TextClassPtr> tc_list_;
std::list<DocumentClass> tc_list_;
};

View File

@ -1,22 +0,0 @@
// -*- C++ -*-
/**
* \file TextClassPtr.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* Full author contact details are available in file CREDITS.
*/
#ifndef TEXTCLASS_PTR_H
#define TEXTCLASS_PTR_H
namespace lyx {
class TextClass;
// This largely useless typedef is scheduled to be replaced by
// something better.
typedef TextClass * TextClassPtr;
} // namespace lyx
#endif

View File

@ -1764,7 +1764,7 @@ int TextMetrics::leftMargin(int max_width,
BOOST_ASSERT(pos <= par.size());
Buffer const & buffer = bv_->buffer();
//lyxerr << "TextMetrics::leftMargin: pit: " << pit << " pos: " << pos << endl;
TextClass const & tclass = buffer.params().textClass();
DocumentClass const & tclass = buffer.params().documentClass();
LayoutPtr const & layout = par.layout();
docstring parindent = layout->parindent;

View File

@ -108,7 +108,7 @@ void TocBackend::updateItem(ParConstIterator const & par_it)
}
BufferParams const & bufparams = buffer_->params();
const int min_toclevel = bufparams.textClass().min_toclevel();
const int min_toclevel = bufparams.documentClass().min_toclevel();
TocIterator toc_item = item("tableofcontents", par_it);
@ -146,7 +146,7 @@ void TocBackend::update()
tocs_.clear();
BufferParams const & bufparams = buffer_->params();
const int min_toclevel = bufparams.textClass().min_toclevel();
const int min_toclevel = bufparams.documentClass().min_toclevel();
Toc & toc = tocs_["tableofcontents"];
ParConstIterator pit = buffer_->par_iterator_begin();

View File

@ -294,7 +294,7 @@ bool needEnumCounterReset(ParIterator const & it)
// set the label of a paragraph. This includes the counters.
void setLabel(Buffer const & buf, ParIterator & it)
{
TextClass const & textclass = buf.params().textClass();
DocumentClass const & textclass = buf.params().documentClass();
Paragraph & par = it.paragraph();
LayoutPtr const & layout = par.layout();
Counters & counters = textclass.counters();
@ -481,7 +481,7 @@ void updateLabels(Buffer const & buf, bool childonly)
{
Buffer const * const master = buf.masterBuffer();
// Use the master text class also for child documents
TextClass const & textclass = master->params().textClass();
DocumentClass const & textclass = master->params().documentClass();
if (!childonly) {
// If this is a child document start with the master

View File

@ -102,7 +102,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
case LFUN_FLEX_INSERT: {
string s = cmd.getArg(0);
return new InsetFlex(params, params.textClassPtr(), s);
return new InsetFlex(params, params.documentClassPtr(), s);
}
case LFUN_NOTE_INSERT: {
@ -147,7 +147,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
case LFUN_FLOAT_INSERT: {
// check if the float type exists
string const argument = to_utf8(cmd.argument());
if (params.textClass().floats().typeExist(argument))
if (params.documentClass().floats().typeExist(argument))
return new InsetFloat(params, argument);
lyxerr << "Non-existent float type: " << argument << endl;
}
@ -155,7 +155,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
case LFUN_FLOAT_WIDE_INSERT: {
// check if the float type exists
string const argument = to_utf8(cmd.argument());
if (params.textClass().floats().typeExist(argument)) {
if (params.documentClass().floats().typeExist(argument)) {
auto_ptr<InsetFloat> p(new InsetFloat(params, argument));
p->wide(true, params);
return p.release();
@ -485,7 +485,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
lex.next();
string s = lex.getString();
inset.reset(new InsetFlex(buf.params(),
buf.params().textClassPtr(), s));
buf.params().documentClassPtr(), s));
} else if (tmptok == "Branch") {
inset.reset(new InsetBranch(buf.params(),
InsetBranchParams()));

View File

@ -1354,7 +1354,7 @@ void GuiDocument::updateEmbeddedFileList()
void GuiDocument::updateNumbering()
{
TextClass const & tclass = bp_.textClass();
DocumentClass const & tclass = bp_.documentClass();
numberingModule->tocTW->setUpdatesEnabled(false);
numberingModule->tocTW->clear();
@ -1441,7 +1441,7 @@ void GuiDocument::apply(BufferParams & params)
params.language = lyx::languages.getLanguage(lang_[pos]);
// numbering
if (params.textClass().hasTocLevels()) {
if (params.documentClass().hasTocLevels()) {
params.tocdepth = numberingModule->tocSL->value();
params.secnumdepth = numberingModule->depthSL->value();
}

View File

@ -236,7 +236,7 @@ docstring GuiToc::guiName(string const & type) const
if (type == "label")
return _("Labels and References");
FloatList const & floats = buffer().params().textClass().floats();
FloatList const & floats = buffer().params().documentClass().floats();
if (floats.typeExist(type))
return _(floats.getType(type).listName());

View File

@ -307,7 +307,7 @@ void GuiLayoutBox::updateContents(bool reset)
return;
}
TextClass const * text_class = &buffer->params().textClass();
DocumentClass const * text_class = &buffer->params().documentClass();
Inset const * inset =
owner_.view()->cursor().innerParagraph().inInset();

View File

@ -14,14 +14,13 @@
#ifndef GUI_TOOLBARS_H
#define GUI_TOOLBARS_H
#include "TextClassPtr.h"
#include "support/docstring.h"
#include <map>
namespace lyx {
class DocumentClass;
class ToolbarInfo;
namespace frontend {
@ -86,7 +85,7 @@ private:
ToolbarsMap toolbars_;
/// The last textclass layout list in the layout choice selector
TextClassPtr last_textclass_;
DocumentClass * last_textclass_;
};

View File

@ -387,7 +387,7 @@ bool Inset::covers(BufferView const & bv, int x, int y) const
InsetLayout const & Inset::getLayout(BufferParams const & bp) const
{
return bp.textClass().insetLayout(name());
return bp.documentClass().insetLayout(name());
}

View File

@ -208,7 +208,7 @@ void InsetBibitem::fillWithBibKeys(BiblioInfo & keys, InsetIterator const & it)
/// Update the counters of this inset and of its contents
void InsetBibitem::updateLabels(ParIterator const &)
{
Counters & counters = buffer().params().textClass().counters();
Counters & counters = buffer().params().documentClass().counters();
docstring const bibitem = from_ascii("bibitem");
if (counters.hasCounter(bibitem) && getParam("label").empty()) {
counters.step(bibitem);

View File

@ -293,7 +293,7 @@ int InsetBibtex::latex(odocstream & os, OutputParams const & runparams) const
"BibTeX will be unable to find it."));
}
if (!db_out.empty() && buffer().params().use_bibtopic){
if (!db_out.empty() && buffer().params().use_bibtopic) {
os << "\\begin{btSect}{" << db_out << "}\n";
docstring btprint = getParam("btprint");
if (btprint.empty())
@ -310,8 +310,7 @@ int InsetBibtex::latex(odocstream & os, OutputParams const & runparams) const
// part of its name, because it's than book.
// For the "official" lyx-layouts it's no problem to support
// all well
if (!contains(buffer().params().textClass().name(),
"art")) {
if (!contains(buffer().params().documentClass().name(), "art")) {
if (buffer().params().sides == OneSide) {
// oneside
os << "\\clearpage";

View File

@ -89,7 +89,7 @@ InsetBox::InsetBox(BufferParams const & bp, string const & label)
: InsetCollapsable(bp), params_(label)
{
if (forceEmptyLayout())
paragraphs().back().setLayout(bp.textClass().emptyLayout());
paragraphs().back().setLayout(bp.documentClass().emptyLayout());
}

View File

@ -76,7 +76,7 @@ void InsetBranch::read(Lexer & lex)
}
docstring InsetBranch::toolTip(BufferView const & bv, int x, int y) const
docstring InsetBranch::toolTip(BufferView const &, int, int) const
{
return _("Branch: ") + params_.branch;
}
@ -224,7 +224,7 @@ void InsetBranch::updateLabels(ParIterator const & it)
if (isBranchSelected())
InsetCollapsable::updateLabels(it);
else {
TextClass const & tclass = buffer().params().textClass();
DocumentClass const & tclass = buffer().params().documentClass();
Counters savecnt = tclass.counters();
InsetCollapsable::updateLabels(it);
tclass.counters() = savecnt;

View File

@ -57,14 +57,14 @@ InsetCaption::InsetCaption(InsetCaption const & ic)
InsetCaption::InsetCaption(BufferParams const & bp)
: InsetText(bp), textclass_(bp.textClass())
: InsetText(bp), textclass_(bp.documentClass())
{
setAutoBreakRows(true);
setDrawFrame(true);
setFrameColor(Color_captionframe);
//FIXME Do we need to set all paragraphs here? or will there
//always only be one?
paragraphs().back().setLayout(bp.textClass().emptyLayout());
paragraphs().back().setLayout(bp.documentClass().emptyLayout());
}
@ -277,7 +277,7 @@ int InsetCaption::getOptArg(odocstream & os,
void InsetCaption::updateLabels(ParIterator const & it)
{
TextClass const & tclass = buffer().params().textClass();
DocumentClass const & tclass = buffer().params().documentClass();
Counters & cnts = tclass.counters();
string const & type = cnts.current_float();
// Memorize type for addToToc().

View File

@ -78,21 +78,20 @@ InsetCollapsable::Geometry InsetCollapsable::geometry() const
InsetCollapsable::InsetCollapsable(BufferParams const & bp,
CollapseStatus status, TextClassPtr tc)
CollapseStatus status, DocumentClass * dc)
: InsetText(bp), status_(status),
openinlined_(false), autoOpen_(false), mouse_hover_(false)
{
setLayout(tc);
setLayout(dc);
setAutoBreakRows(true);
setDrawFrame(true);
setFrameColor(Color_collapsableframe);
paragraphs().back().setLayout(bp.textClass().emptyLayout());
paragraphs().back().setLayout(bp.documentClass().emptyLayout());
}
InsetCollapsable::InsetCollapsable(InsetCollapsable const & rhs)
: InsetText(rhs),
textClass_(rhs.textClass_),
layout_(rhs.layout_),
labelstring_(rhs.labelstring_),
button_dim(rhs.button_dim),
@ -125,15 +124,14 @@ docstring InsetCollapsable::toolTip(BufferView const & bv, int x, int y) const
void InsetCollapsable::setLayout(BufferParams const & bp)
{
setLayout(bp.textClassPtr());
setLayout(bp.documentClassPtr());
}
void InsetCollapsable::setLayout(TextClassPtr tc)
void InsetCollapsable::setLayout(DocumentClass const * const dc)
{
textClass_ = tc;
if ( textClass_ != 0 ) {
layout_ = &textClass_->insetLayout(name());
if (dc != 0) {
layout_ = &(dc->insetLayout(name()));
labelstring_ = layout_->labelstring();
} else {
layout_ = &TextClass::emptyInsetLayout();
@ -795,7 +793,7 @@ void InsetCollapsable::setStatus(Cursor & cur, CollapseStatus status)
docstring InsetCollapsable::floatName(
string const & type, BufferParams const & bp) const
{
FloatList const & floats = bp.textClass().floats();
FloatList const & floats = bp.documentClass().floats();
FloatList::const_iterator it = floats[type];
// FIXME UNICODE
return (it == floats.end()) ? from_ascii(type) : bp.B_(it->second.name());

View File

@ -19,7 +19,6 @@
#include "Box.h"
#include "TextClass.h"
#include "TextClassPtr.h"
#include <string>
@ -40,7 +39,7 @@ class InsetCollapsable : public InsetText {
public:
///
InsetCollapsable(BufferParams const &,
CollapseStatus status = Inset::Open, TextClassPtr tc = 0);
CollapseStatus status = Inset::Open, DocumentClass * tc = 0);
///
InsetCollapsable(InsetCollapsable const & rhs);
///
@ -59,7 +58,7 @@ public:
void setLayout(BufferParams const &);
/// (Re-)set the character style parameters from \p tc according
/// to name()
void setLayout(TextClassPtr tc);
void setLayout(DocumentClass const * const tc);
///
virtual bool useEmptyLayout() { return true; }
///
@ -171,10 +170,7 @@ protected:
virtual void resetParagraphsFont();
private:
/// text class to keep the InsetLayout above in memory
/// FIXME This probably isn't needed now
TextClassPtr textClass_;
/// cache for the layout_. Make sure it is in sync with the text class!
/// cache for the layout_. Make sure it is in sync with the document class!
InsetLayout const * layout_;
///
Dimension dimensionCollapsed() const;

View File

@ -115,8 +115,7 @@ int InsetERT::docbook(odocstream & os, OutputParams const &) const
void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd)
{
BufferParams const & bp = cur.buffer().params();
LayoutPtr const layout =
bp.textClass().emptyLayout();
LayoutPtr const layout = bp.documentClass().emptyLayout();
//lyxerr << "\nInsetERT::doDispatch (begin): cmd: " << cmd << endl;
switch (cmd.action) {

View File

@ -27,7 +27,7 @@ namespace lyx {
InsetEnvironment::InsetEnvironment
(BufferParams const & bp, docstring const & name)
: InsetText(bp), layout_(bp.textClass()[name]), name_(name)
: InsetText(bp), layout_(bp.documentClass()[name]), name_(name)
{
setAutoBreakRows(true);
setDrawFrame(true);

View File

@ -40,11 +40,11 @@ namespace lyx {
InsetFlex::InsetFlex(BufferParams const & bp,
TextClassPtr tc, string const & layoutName)
: InsetCollapsable(bp, Collapsed, tc),
DocumentClass * dc, string const & layoutName)
: InsetCollapsable(bp, Collapsed, dc),
name_(layoutName)
{
setLayout(tc); // again, because now the name is initialized
setLayout(dc); // again, because now the name is initialized
packages_ = getLayout().requires();
preamble_ = getLayout().preamble();
}

View File

@ -23,7 +23,7 @@ namespace lyx {
class InsetFlex : public InsetCollapsable {
public:
///
InsetFlex(BufferParams const &,TextClassPtr tc,
InsetFlex(BufferParams const &, DocumentClass * dc,
std::string const & layoutName);
///
docstring name() const { return from_utf8(name_); }

View File

@ -175,7 +175,7 @@ bool InsetFloat::getStatus(Cursor & cur, FuncRequest const & cmd,
void InsetFloat::updateLabels(ParIterator const & it)
{
Counters & cnts = buffer().params().textClass().counters();
Counters & cnts = buffer().params().documentClass().counters();
string const saveflt = cnts.current_float();
// Tell to captions what the current float is
@ -282,7 +282,7 @@ docstring InsetFloat::editMessage() const
int InsetFloat::latex(odocstream & os, OutputParams const & runparams) const
{
FloatList const & floats = buffer().params().textClass().floats();
FloatList const & floats = buffer().params().documentClass().floats();
string tmptype = params_.type;
if (params_.sideways)
tmptype = "sideways" + params_.type;

View File

@ -68,7 +68,7 @@ bool InsetFloatList::isCompatibleCommand(string const & s)
docstring InsetFloatList::screenLabel() const
{
FloatList const & floats = buffer().params().textClass().floats();
FloatList const & floats = buffer().params().documentClass().floats();
FloatList::const_iterator it = floats[to_ascii(getParam("type"))];
if (it != floats.end())
return buffer().B_(it->second.listName());
@ -85,7 +85,7 @@ void InsetFloatList::write(ostream & os) const
void InsetFloatList::read(Lexer & lex)
{
FloatList const & floats = buffer().params().textClass().floats();
FloatList const & floats = buffer().params().documentClass().floats();
string token;
if (lex.eatLine()) {
@ -113,7 +113,7 @@ void InsetFloatList::read(Lexer & lex)
int InsetFloatList::latex(odocstream & os, OutputParams const &) const
{
FloatList const & floats = buffer().params().textClass().floats();
FloatList const & floats = buffer().params().documentClass().floats();
FloatList::const_iterator cit = floats[to_ascii(getParam("type"))];
if (cit != floats.end()) {

View File

@ -59,7 +59,7 @@ docstring InsetFoot::editMessage() const
void InsetFoot::updateLabels(ParIterator const & it)
{
TextClass const & tclass = buffer().params().textClass();
DocumentClass const & tclass = buffer().params().documentClass();
Counters & cnts = tclass.counters();
docstring const foot = from_ascii("footnote");
Paragraph const & outer = it.paragraph();

View File

@ -447,8 +447,8 @@ int InsetInclude::latex(odocstream & os, OutputParams const & runparams) const
"has textclass `%2$s'\n"
"while parent file has textclass `%3$s'."),
included_file.displayName(),
from_utf8(tmp->params().textClass().name()),
from_utf8(masterBuffer->params().textClass().name()));
from_utf8(tmp->params().documentClass().name()),
from_utf8(masterBuffer->params().documentClass().name()));
Alert::warning(_("Different textclasses"), text);
//return 0;
}
@ -898,7 +898,7 @@ void InsetInclude::updateLabels(ParIterator const &)
listings_label_.clear();
return;
}
Counters & counters = buffer().params().textClass().counters();
Counters & counters = buffer().params().documentClass().counters();
docstring const cnt = from_ascii("listing");
listings_label_ = buffer().B_("Program Listing");
if (counters.hasCounter(cnt)) {

View File

@ -242,7 +242,7 @@ void InsetInfo::updateInfo()
else if (name_ == "path")
setText(from_utf8(buffer().filePath()), bp.getFont(), false);
else if (name_ == "class")
setText(from_utf8(bp.textClass().name()), bp.getFont(), false);
setText(from_utf8(bp.documentClass().name()), bp.getFont(), false);
else
setText(_("Unknown buffer info"), bp.getFont(), false);
break;

View File

@ -71,7 +71,7 @@ Inset::DisplayType InsetListings::display() const
void InsetListings::updateLabels(ParIterator const & it)
{
Counters & cnts = buffer().params().textClass().counters();
Counters & cnts = buffer().params().documentClass().counters();
string const saveflt = cnts.current_float();
// Tell to captions what the current float is

View File

@ -213,7 +213,7 @@ bool InsetNote::getStatus(Cursor & cur, FuncRequest const & cmd,
void InsetNote::updateLabels(ParIterator const & it)
{
TextClass const & tclass = buffer().params().textClass();
DocumentClass const & tclass = buffer().params().documentClass();
Counters savecnt = tclass.counters();
InsetCollapsable::updateLabels(it);
tclass.counters() = savecnt;

View File

@ -487,7 +487,7 @@ Tabular::CellData::CellData(Buffer const & buffer)
inset(new InsetText(buffer.params()))
{
inset->setBuffer(const_cast<Buffer &>(buffer));
inset->paragraphs().back().setLayout(buffer.params().textClass().emptyLayout());
inset->paragraphs().back().setLayout(buffer.params().documentClass().emptyLayout());
}
@ -1097,7 +1097,7 @@ void toggleFixedWidth(Cursor & cur, InsetText * inset, bool fixedWidth)
cur.push(*inset);
// undo information has already been recorded
inset->getText(0)->setLayout(cur.bv().buffer(), 0, cur.lastpit() + 1,
bp.textClass().emptyLayoutName());
bp.documentClass().emptyLayoutName());
cur.pop();
}
@ -3175,7 +3175,7 @@ void InsetTabular::edit(Cursor & cur, bool front, EntryDirection)
void InsetTabular::updateLabels(ParIterator const & it)
{
// In a longtable, tell captions what the current float is
Counters & cnts = buffer().params().textClass().counters();
Counters & cnts = buffer().params().documentClass().counters();
string const saveflt = cnts.current_float();
if (tabular.isLongTabular())
cnts.current_float("table");

View File

@ -103,7 +103,7 @@ InsetText::InsetText(BufferParams const & bp)
{
paragraphs().push_back(Paragraph());
Paragraph & ourpar = paragraphs().back();
ourpar.setEmptyOrDefaultLayout(bp.textClass());
ourpar.setEmptyOrDefaultLayout(bp.documentClass());
ourpar.setInsetOwner(this);
}

View File

@ -107,7 +107,7 @@ bool InsetWrap::getStatus(Cursor & cur, FuncRequest const & cmd,
void InsetWrap::updateLabels(ParIterator const & it)
{
Counters & cnts = buffer().params().textClass().counters();
Counters & cnts = buffer().params().documentClass().counters();
string const saveflt = cnts.current_float();
// Tell to captions what the current float is

View File

@ -101,7 +101,7 @@ ParagraphList::const_iterator makeParagraph(Buffer const & buf,
ParagraphList::const_iterator const & pbegin,
ParagraphList::const_iterator const & pend)
{
LayoutPtr const & defaultstyle = buf.params().textClass().defaultLayout();
LayoutPtr const & defaultstyle = buf.params().documentClass().defaultLayout();
for (ParagraphList::const_iterator par = pbegin; par != pend; ++par) {
if (par != pbegin)
os << '\n';
@ -127,7 +127,7 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
ParagraphList::const_iterator const & pend) {
ParagraphList::const_iterator par = pbegin;
LayoutPtr const & defaultstyle = buf.params().textClass().defaultLayout();
LayoutPtr const & defaultstyle = buf.params().documentClass().defaultLayout();
LayoutPtr const & bstyle = par->layout();
string item_tag;

View File

@ -109,7 +109,7 @@ TeXEnvironment(Buffer const & buf,
BufferParams const & bparams = buf.params();
LayoutPtr const & style = pit->forceEmptyLayout() ?
bparams.textClass().emptyLayout() : pit->layout();
bparams.documentClass().emptyLayout() : pit->layout();
ParagraphList const & paragraphs = text.paragraphs();
@ -309,7 +309,7 @@ TeXOnePar(Buffer const & buf,
// In an inset with unlimited length (all in one row),
// force layout to default
LayoutPtr const style = pit->forceEmptyLayout() ?
bparams.textClass().emptyLayout() : pit->layout();
bparams.documentClass().emptyLayout() : pit->layout();
OutputParams runparams = runparams_in;
runparams.moving_arg |= style->needprotect;
@ -477,7 +477,7 @@ TeXOnePar(Buffer const & buf,
}
}
bool const useSetSpace = bparams.textClass().provides("SetSpace");
bool const useSetSpace = bparams.documentClass().provides("SetSpace");
if (pit->allowParagraphCustomization()) {
if (pit->params().startOfAppendix()) {
os << "\\appendix\n";
@ -741,7 +741,7 @@ void latexParagraphs(Buffer const & buf,
bool was_title = false;
bool already_title = false;
BufferParams const & bparams = buf.params();
TextClass const & tclass = bparams.textClass();
DocumentClass const & tclass = bparams.documentClass();
ParagraphList const & paragraphs = text.paragraphs();
ParagraphList::const_iterator par = paragraphs.begin();
ParagraphList::const_iterator endpar = paragraphs.end();

View File

@ -76,7 +76,7 @@ void breakParagraph(BufferParams const & bparams,
tmp->setInsetOwner(par.inInset());
// without doing that we get a crash when typing <Return> at the
// end of a paragraph
tmp->setEmptyOrDefaultLayout(bparams.textClass());
tmp->setEmptyOrDefaultLayout(bparams.documentClass());
// layout stays the same with latex-environments
if (keep_layout) {
@ -141,7 +141,7 @@ void breakParagraph(BufferParams const & bparams,
par.params().clear();
// do not lose start of appendix marker (bug 4212)
par.params().startOfAppendix(soa);
par.setEmptyOrDefaultLayout(bparams.textClass());
par.setEmptyOrDefaultLayout(bparams.documentClass());
}
// layout stays the same with latex-environments

View File

@ -121,7 +121,7 @@ docstring sgml::cleanID(Buffer const & buf, OutputParams const & runparams,
// and adds a number for uniqueness.
// If you know what you are doing, you can set allowed==""
// to disable this mangling.
TextClass const & tclass = buf.params().textClass();
DocumentClass const & tclass = buf.params().documentClass();
docstring const allowed = from_ascii(
runparams.flavor == OutputParams::XML ? ".-_:" : tclass.options());
@ -204,7 +204,7 @@ void sgml::openTag(Buffer const & buf, odocstream & os,
LayoutPtr const & style = par.layout();
string const & name = style->latexname();
string param = style->latexparam();
Counters & counters = buf.params().textClass().counters();
Counters & counters = buf.params().documentClass().counters();
string id = par.getID(buf, runparams);