#include "Buffer.h"
#include "BufferParams.h"
#include "Counters.h"
-#include "Language.h"
-#include "gettext.h"
+#include "Cursor.h"
#include "DispatchResult.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
+#include "gettext.h"
+#include "InsetList.h"
+#include "Language.h"
#include "MetricsInfo.h"
-#include "Cursor.h"
+
+#include "support/docstream.h"
#include "support/lstrings.h"
#include <sstream>
+using std::istringstream;
+using std::ostream;
+using std::ostringstream;
+using std::string;
+
namespace lyx {
using support::token;
using support::contains;
using support::subst;
-using std::istringstream;
-using std::ostream;
-using std::ostringstream;
-using std::string;
-
char const lstinline_delimiters[] =
"!*()-=+|;:'\"`,<.>/?QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
-void InsetListings::init()
-{
- setButtonLabel();
- Font font(Font::ALL_SANE);
- font.decSize();
- font.decSize();
- font.setColor(Color::none);
- setLabelFont(font);
- // FIXME: what to do with those?
- //text_.current_font.setLanguage(latex_language);
- //text_.real_current_font.setLanguage(latex_language);
-}
-
-
InsetListings::InsetListings(BufferParams const & bp, InsetListingsParams const & par)
- : InsetERT(bp, par.status())
-{
- init();
-}
+ : InsetCollapsable(bp, par.status())
+{}
InsetListings::InsetListings(InsetListings const & in)
- : InsetERT(in), params_(in.params_)
-{
- init();
-}
+ : InsetCollapsable(in), params_(in.params_)
+{}
Inset * InsetListings::clone() const
break;
}
}
- InsetERT::read(buf, lex);
+ InsetCollapsable::read(buf, lex);
}
os << code
<< *delimiter;
} else {
- docstring const caption = getCaption(buf, runparams);
+ OutputParams rp = runparams;
+ // FIXME: the line below would fix bug 4182,
+ // but real_current_font moved to cursor.
+ //rp.local_font = &text_.real_current_font;
+ rp.moving_arg = true;
+ docstring const caption = getCaption(buf, rp);
+ runparams.encoding = rp.encoding;
if (param_string.empty() && caption.empty())
os << "\n\\begingroup\n\\inputencoding{latin1}\n\\begin{lstlisting}\n";
else {
os << from_utf8(param_string) << "]\n";
}
lines += 4;
- os << code
- << "\n\\end{lstlisting}\n\\endgroup\n";
+ os << code << "\n\\end{lstlisting}\n\\endgroup\n";
lines += 3;
}
InsetListingsMailer(*this).showDialog(&cur.bv());
break;
}
- InsetERT::doDispatch(cur, cmd);
+ InsetCollapsable::doDispatch(cur, cmd);
break;
}
default:
- InsetERT::doDispatch(cur, cmd);
+ InsetCollapsable::doDispatch(cur, cmd);
break;
}
}
status.enabled(!params().isInline());
return true;
default:
- return InsetERT::getStatus(cur, cmd, status);
+ return InsetCollapsable::getStatus(cur, cmd, status);
}
}
void InsetListings::setButtonLabel()
{
// FIXME UNICODE
- setLabel(isOpen() ? _("Listing") : getNewLabel(_("Listing")));
-}
-
-
-void InsetListings::metrics(MetricsInfo & mi, Dimension & dim) const
-{
- Font tmpfont = mi.base.font;
- getDrawFont(mi.base.font);
- mi.base.font.realize(tmpfont);
- InsetCollapsable::metrics(mi, dim);
- mi.base.font = tmpfont;
-}
-
-
-void InsetListings::draw(PainterInfo & pi, int x, int y) const
-{
- Font tmpfont = pi.base.font;
- getDrawFont(pi.base.font);
- pi.base.font.realize(tmpfont);
- InsetCollapsable::draw(pi, x, y);
- pi.base.font = tmpfont;
+ if (decoration() == Classic)
+ setLabel(isOpen() ? _("Listing") : getNewLabel(_("Listing")));
+ else
+ setLabel(getNewLabel(_("Listing")));
}
void InsetListings::validate(LaTeXFeatures & features) const
{
features.require("listings");
- InsetERT::validate(features);
+ InsetCollapsable::validate(features);
}
}
-void InsetListings::getDrawFont(Font & font) const
-{
- font = Font(Font::ALL_INHERIT, latex_language);
- font.setFamily(Font::TYPEWRITER_FAMILY);
- // FIXME: define Color::listing?
- font.setColor(Color::foreground);
-}
-
-
docstring InsetListings::getCaption(Buffer const & buf,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
if (paragraphs().empty())
return docstring();
ParagraphList::const_iterator pit = paragraphs().begin();
for (; pit != paragraphs().end(); ++pit) {
- InsetList::const_iterator it = pit->insetlist.begin();
- for (; it != pit->insetlist.end(); ++it) {
+ InsetList::const_iterator it = pit->insetList().begin();
+ for (; it != pit->insetList().end(); ++it) {
Inset & inset = *it->inset;
- if (inset.lyxCode() == Inset::CAPTION_CODE) {
+ if (inset.lyxCode() == CAPTION_CODE) {
odocstringstream ods;
InsetCaption * ins =
static_cast<InsetCaption *>(it->inset);