X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetfoot.C;h=b9be27578b7835d9ee2798557114dcf6c0365da1;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=3d7e76806207cbe7504e11e8976b984731760e09;hpb=132fe5e1322fbc86a32692df51eba78d6b4e479c;p=lyx.git diff --git a/src/insets/insetfoot.C b/src/insets/insetfoot.C index 3d7e768062..b9be27578b 100644 --- a/src/insets/insetfoot.C +++ b/src/insets/insetfoot.C @@ -1,114 +1,94 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright (C) 1998 The LyX Team. +/** + * \file insetfoot.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - *======================================================*/ + * \author Jürgen Vigna + * \author Lars Gullik Bjønnes + * + * Full author contact details are available in file CREDITS. + */ #include -#ifdef __GNUG__ -#pragma implementation -#endif - #include "insetfoot.h" + #include "gettext.h" -#include "lyxfont.h" -#include "BufferView.h" -#include "lyxscreen.h" -#include "Painter.h" +// the following are needed just to get the layout of the enclosing +// paragraph. This seems a bit too much to me (JMarc) +#include "lyxlayout.h" +#include "outputparams.h" +#include "paragraph.h" +#include "paragraph_funcs.h" +#include "support/std_ostream.h" -InsetFoot::InsetFoot(Buffer * bf): InsetCollapsable(bf) -{ - setLabel(_("foot")); - LyXFont font(LyXFont::ALL_SANE); - font.decSize(); - font.decSize(); - font.setColor(LColor::footnote); - setLabelFont(font); - setAutoCollapse(false); -} +namespace lyx { -InsetFoot * InsetFoot::Clone() const +using std::string; +using std::auto_ptr; +using std::ostream; + + +InsetFoot::InsetFoot(BufferParams const & bp) + : InsetFootlike(bp) { - InsetFoot * result = new InsetFoot(buffer); - return result; + setLabel(_("foot")); + setInsetName(from_ascii("Foot")); } -const char * InsetFoot::EditMessage() const +InsetFoot::InsetFoot(InsetFoot const & in) + : InsetFootlike(in) { - return _("Opened Footnote Inset"); + setLabel(_("foot")); + setInsetName(from_ascii("Foot")); } -#ifndef USE_OSTREAM_ONLY -int InsetFoot::Latex(string & l, signed char fragile) const + +auto_ptr InsetFoot::doClone() const { - int i; - - if (fragile) - l += "\\footnotetext{"; - else - l += "\\footnote{"; + return auto_ptr(new InsetFoot(*this)); +} - i = InsetText::Latex(l, fragile); - l += "}"; - return i; +docstring const InsetFoot::editMessage() const +{ + return _("Opened Footnote Inset"); } -#endif -int InsetFoot::Latex(ostream & os, signed char fragile, bool fp) const + +int InsetFoot::latex(Buffer const & buf, odocstream & os, + OutputParams const & runparams_in) const { - int i; - - if (fragile) - os << "\\footnotetext{"; - else - os << "\\footnote{"; + OutputParams runparams = runparams_in; + // footnotes in titling commands like \title have moving arguments + runparams.moving_arg |= runparams_in.intitle; - i = InsetText::Latex(os, fragile, fp); - os << "}"; + // in titling commands, \thanks should be used instead of \footnote. + // some classes (e.g. memoir) do not understand \footnote. + if (runparams_in.intitle) + os << "%\n\\thanks{"; + else + os << "%\n\\footnote{"; - return i; -} + int const i = InsetText::latex(buf, os, runparams); + os << "%\n}"; -void InsetFoot::Write(ostream & os) const -{ - os << "Foot\n"; - os << "\ncollapsed "; - if (display()) - os << "false"; - else - os << "true"; - os << "\n"; - WriteParagraphData(os); + return i + 2; } -void InsetFoot::Read(LyXLex & lex) -{ - if (lex.IsOK()) { - string token, tmptok; - - lex.next(); - token = lex.GetString(); - if (token == "collapsed") { - lex.next(); - collapsed = lex.GetBool(); - } - } - InsetText::Read(lex); -} -bool InsetFoot::InsertInset(BufferView *bv, Inset * inset) +int InsetFoot::docbook(Buffer const & buf, odocstream & os, + OutputParams const & runparams) const { - if ((inset->LyxCode() == Inset::FOOT_CODE) || - (inset->LyxCode() == Inset::MARGIN_CODE)) { - return false; - } - return InsetText::InsertInset(bv, inset); + os << ""; + int const i = InsetText::docbook(buf, os, runparams); + os << ""; + + return i; } + + +} // namespace lyx