/* This file is part of * ====================================================== * * LyX, The Document Processor * * Copyright 1998 The LyX Team. * *======================================================*/ #include #ifdef __GNUG__ #pragma implementation #endif #include "insetert.h" #include "gettext.h" #include "lyxfont.h" #include "buffer.h" #include "insets/insettext.h" #include "support/LOstream.h" #include "lyx_gui_misc.h" #include "BufferView.h" #include "LyXView.h" using std::ostream; void InsetERT::init() { setLabel(_("666"), true); labelfont = LyXFont(LyXFont::ALL_SANE); labelfont.decSize(); labelfont.decSize(); #ifndef NO_LATEX labelfont.setLatex(LyXFont::ON); #else labelfont.setColor(LColor::latex); #endif setInsetName("ERT"); } InsetERT::InsetERT() : InsetCollapsable() { init(); } #if 0 InsetERT::InsetERT(InsetERT const & in, bool same_id) : InsetCollapsable(in, same_id) { } #endif InsetERT::InsetERT(string const & contents, bool collapsed) : InsetCollapsable(collapsed) { LyXFont font(LyXFont::ALL_INHERIT); font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); string::const_iterator cit = contents.begin(); string::const_iterator end = contents.end(); Paragraph::size_type pos = 0; for (; cit != end; ++cit) { inset.paragraph()->insertChar(pos++, *cit, font); } // the init has to be after the initialization of the paragraph // because of the label settings (draw_label for ert insets). init(); } void InsetERT::write(Buffer const * buf, ostream & os) const { os << getInsetName() << "\n"; InsetCollapsable::write(buf, os); } string const InsetERT::editMessage() const { return _("Opened ERT Inset"); } bool InsetERT::insertInset(BufferView *, Inset *) { return false; } void InsetERT::setFont(BufferView *, LyXFont const &, bool, bool selectall) { // if selectall is activated then the fontchange was an outside general // fontchange and this messages is not needed if (!selectall) WriteAlert(_("Impossible Operation!"), _("Not permitted to change font-types inside ERT-insets!"), _("Sorry.")); } void InsetERT::edit(BufferView * bv, int x, int y, unsigned int button) { InsetCollapsable::edit(bv, x, y, button); #ifndef NO_LATEX LyXFont font(LyXFont::ALL_SANE); font.setLatex (LyXFont::ON); #else LyXFont font(LyXFont::ALL_INHERIT); font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); #endif inset.setFont(bv, font); } void InsetERT::edit(BufferView * bv, bool) { edit(bv, 0, 0, 0); } int InsetERT::latex(Buffer const *, std::ostream & os, bool /*fragile*/, bool /*free_spc*/) const { Paragraph * par = inset.paragraph(); while (par) { Paragraph::size_type siz = inset.paragraph()->size(); for (Paragraph::size_type i = 0; i != siz; ++i) { char c = inset.paragraph()->getChar(i); switch (c) { case Paragraph::META_NEWLINE: os << '\n'; break; default: os << c; break; } } par = par->next(); } return 1; } int InsetERT::ascii(Buffer const *, std::ostream &, int /*linelen*/) const { return 0; } int InsetERT::linuxdoc(Buffer const *, std::ostream &) const { return 0; } int InsetERT::docBook(Buffer const *, std::ostream &) const { return 0; } UpdatableInset::RESULT InsetERT::localDispatch(BufferView * bv, kb_action action, string const & arg) { UpdatableInset::RESULT result = DISPATCHED_NOUPDATE; switch(action) { case LFUN_LAYOUT: bv->owner()->setLayout(inset.paragraph()->getLayout()); break; default: result = InsetCollapsable::localDispatch(bv, action, arg); } switch(action) { case LFUN_BREAKPARAGRAPH: case LFUN_BREAKPARAGRAPHKEEPLAYOUT: { #ifndef NO_LATEX LyXFont font(LyXFont::ALL_SANE); font.setLatex (LyXFont::ON); #else LyXFont font(LyXFont::ALL_INHERIT); font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); #endif inset.setFont(bv, font); } break; default: break; } return result; }