X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetert.C;h=53ada70eb04ee9481f8942c3cd26c15d8fc6aff4;hb=dbd7a961fc46bb10c85bdd8c7fb6626477ae63d8;hp=4aeb306f0be4ef5bd404b3fdcbe6783e1e8feda7;hpb=85e30074c271cb2d13b984e9dcb223d7bdde19f4;p=lyx.git diff --git a/src/insets/insetert.C b/src/insets/insetert.C index 4aeb306f0b..53ada70eb0 100644 --- a/src/insets/insetert.C +++ b/src/insets/insetert.C @@ -16,18 +16,28 @@ #include "insetert.h" #include "gettext.h" #include "lyxfont.h" +#include "language.h" #include "buffer.h" -#include "insets/insettext.h" -#include "support/LOstream.h" -#include "lyx_gui_misc.h" #include "BufferView.h" #include "LyXView.h" #include "lyxtext.h" +#include "debug.h" +#include "lyxtextclasslist.h" + +#include "insets/insettext.h" + #include "frontends/Dialogs.h" #include "frontends/Alert.h" -#include "debug.h" + +#include "support/LOstream.h" + using std::ostream; +using std::min; +using std::endl; + +using lyx::pos_type; + void InsetERT::init() { @@ -37,7 +47,6 @@ void InsetERT::init() labelfont.decSize(); labelfont.setColor(LColor::latex); setInsetName("ERT"); - } @@ -65,23 +74,23 @@ Inset * InsetERT::clone(Buffer const &, bool same_id) const } -InsetERT::InsetERT(string const & contents, bool collapsed) +InsetERT::InsetERT(Language const * l, string const & contents, bool collapsed) : InsetCollapsable(collapsed) { if (collapsed) status_ = Collapsed; else status_ = Open; -#ifndef INHERIT_LANG - LyXFont font(LyXFont::ALL_INHERIT, latex_language); -#else - LyXFont font(LyXFont::ALL_INHERIT); -#endif + + LyXFont font(LyXFont::ALL_INHERIT, l); +#ifdef SET_HARD_FONT font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); +#endif + string::const_iterator cit = contents.begin(); string::const_iterator end = contents.end(); - Paragraph::size_type pos = 0; + pos_type pos = 0; for (; cit != end; ++cit) { inset.paragraph()->insertChar(pos++, *cit, font); } @@ -119,11 +128,12 @@ void InsetERT::read(Buffer const * buf, LyXLex & lex) token_found = true; } else { lyxerr << "InsetERT::Read: Missing 'status'-tag!" - << std::endl; + << endl; // take countermeasures lex.pushToken(token); } } +#if 0 #warning this should be really short lived only for compatibility to #warning files written 07/08/2001 so this has to go before 1.2.0! (Jug) if (lex.isOK()) { @@ -137,25 +147,27 @@ void InsetERT::read(Buffer const * buf, LyXLex & lex) lex.pushToken(token); } } +#endif inset.read(buf, lex); +#ifdef SET_HARD_FONT #ifndef INHERIT_LANG LyXFont font(LyXFont::ALL_INHERIT, latex_language); #else LyXFont font(LyXFont::ALL_INHERIT); #endif - font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); Paragraph * par = inset.paragraph(); while (par) { - Paragraph::size_type siz = par->size(); - for (Paragraph::size_type i = 0; i < siz; ++i) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { par->setFont(i, font); } par = par->next(); } - +#endif + if (!token_found) { if (collapsed_) { status(0, Collapsed); @@ -171,7 +183,7 @@ void InsetERT::write(Buffer const * buf, ostream & os) const { string st; - switch(status_) { + switch (status_) { case Open: st = "Open"; break; @@ -187,19 +199,18 @@ void InsetERT::write(Buffer const * buf, ostream & os) const << "status "<< st << "\n"; //inset.writeParagraphData(buf, os); - string const layout = - textclasslist.NameOfLayout(buf->params.textclass, 0); + string const layout(textclasslist[buf->params.textclass].defaultLayoutName()); Paragraph * par = inset.paragraph(); while (par) { os << "\n\\layout " << layout << "\n"; - Paragraph::size_type siz = par->size(); - for (Paragraph::size_type i = 0; i < siz; ++i) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { Paragraph::value_type c = par->getChar(i); switch (c) { case Paragraph::META_INSET: case Paragraph::META_HFILL: lyxerr << "Element is not allowed in insertERT" - << std::endl; + << endl; case Paragraph::META_NEWLINE: os << "\n\\newline \n"; break; @@ -255,10 +266,16 @@ void InsetERT::edit(BufferView * bv, int x, int y, unsigned int button) { if (button == 3) return; - - InsetCollapsable::edit(bv, x, y, button); - updateStatus(0); + + if (status_ == Inlined) { + if (!bv->lockInset(this)) + return; + inset.edit(bv, x, y, button); + } else { + InsetCollapsable::edit(bv, x, y, button); + } set_latex_font(bv); + updateStatus(bv); } @@ -278,11 +295,24 @@ void InsetERT::edit(BufferView * bv, bool front) } -void InsetERT::insetButtonRelease(BufferView * bv, int x, int y, int button) + + +void InsetERT::insetButtonPress(BufferView * bv, + int x, int y, int button) +{ + if (status_ == Inlined) { + inset.insetButtonPress(bv, x, y, button); + } else { + InsetCollapsable::insetButtonPress(bv, x, y, button); + } +} + + +bool InsetERT::insetButtonRelease(BufferView * bv, int x, int y, int button) { if (button == 3) { showInsetDialog(bv); - return; + return true; } if (status_ != Inlined && (x >= 0) && (x < button_length) && @@ -301,17 +331,29 @@ void InsetERT::insetButtonRelease(BufferView * bv, int x, int y, int button) inset.insetButtonRelease(bv, x, yy, button); } } + return false; +} + + +void InsetERT::insetMotionNotify(BufferView * bv, + int x, int y, int state) +{ + if (status_ == Inlined) { + inset.insetMotionNotify(bv, x, y, state); + } else { + InsetCollapsable::insetMotionNotify(bv, x, y, state); + } } -int InsetERT::latex(Buffer const *, std::ostream & os, bool /*fragile*/, +int InsetERT::latex(Buffer const *, ostream & os, bool /*fragile*/, bool /*free_spc*/) const { Paragraph * par = inset.paragraph(); int lines = 0; while (par) { - Paragraph::size_type siz = par->size(); - for (Paragraph::size_type i = 0; i < siz; ++i) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { Paragraph::value_type c = par->getChar(i); switch (c) { case Paragraph::META_NEWLINE: @@ -335,19 +377,19 @@ int InsetERT::latex(Buffer const *, std::ostream & os, bool /*fragile*/, int InsetERT::ascii(Buffer const *, - std::ostream &, int /*linelen*/) const + ostream &, int /*linelen*/) const { return 0; } -int InsetERT::linuxdoc(Buffer const *, std::ostream & os) const +int InsetERT::linuxdoc(Buffer const *, ostream & os) const { Paragraph * par = inset.paragraph(); int lines = 0; while (par) { - Paragraph::size_type siz = par->size(); - for (Paragraph::size_type i = 0; i < siz; ++i) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { Paragraph::value_type c = par->getChar(i); switch (c) { case Paragraph::META_NEWLINE: @@ -370,13 +412,13 @@ int InsetERT::linuxdoc(Buffer const *, std::ostream & os) const } -int InsetERT::docbook(Buffer const *, std::ostream & os) const +int InsetERT::docbook(Buffer const *, ostream & os) const { Paragraph * par = inset.paragraph(); int lines = 0; while (par) { - Paragraph::size_type siz = par->size(); - for (Paragraph::size_type i = 0; i < siz; ++i) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { Paragraph::value_type c = par->getChar(i); switch (c) { case Paragraph::META_NEWLINE: @@ -408,14 +450,14 @@ InsetERT::localDispatch(BufferView * bv, kb_action action, string const & arg) set_latex_font(bv); } - switch(action) { + switch (action) { case LFUN_LAYOUT: - bv->owner()->setLayout(inset.paragraph()->getLayout()); + bv->owner()->setLayout(inset.paragraph()->layout()); break; default: result = InsetCollapsable::localDispatch(bv, action, arg); } - switch(action) { + switch (action) { case LFUN_BREAKPARAGRAPH: case LFUN_BREAKPARAGRAPHKEEPLAYOUT: case LFUN_BACKSPACE: @@ -437,10 +479,9 @@ InsetERT::localDispatch(BufferView * bv, kb_action action, string const & arg) string const InsetERT::get_new_label() const { string la; - Paragraph::size_type const max_length = 15; - - Paragraph::size_type const p_siz = inset.paragraph()->size(); - Paragraph::size_type const n = std::min(max_length, p_siz); + pos_type const max_length = 15; + pos_type const p_siz = inset.paragraph()->size(); + pos_type const n = min(max_length, p_siz); int i = 0; int j = 0; for(; i < n && j < p_siz; ++j) { @@ -469,8 +510,9 @@ void InsetERT::setButtonLabel() const } -bool InsetERT::checkInsertChar(LyXFont & font) +bool InsetERT::checkInsertChar(LyXFont & /* font */) { +#ifdef SET_HARD_FONT #ifndef INHERIT_LANG LyXFont f(LyXFont::ALL_INHERIT, latex_language); #else @@ -479,6 +521,7 @@ bool InsetERT::checkInsertChar(LyXFont & font) font = f; font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); +#endif return true; } @@ -561,8 +604,9 @@ void InsetERT::draw(BufferView * bv, LyXFont const & f, } -void InsetERT::set_latex_font(BufferView * bv) +void InsetERT::set_latex_font(BufferView * /* bv */) { +#ifdef SET_HARD_FONT #ifndef INHERIT_LANG LyXFont font(LyXFont::ALL_INHERIT, latex_language); #else @@ -571,7 +615,9 @@ void InsetERT::set_latex_font(BufferView * bv) font.setFamily(LyXFont::TYPEWRITER_FAMILY); font.setColor(LColor::latex); + inset.getLyXText(bv)->setFont(bv, font, false); +#endif } @@ -579,7 +625,7 @@ void InsetERT::status(BufferView * bv, ERTStatus const st) const { if (st != status_) { status_ = st; - switch(st) { + switch (st) { case Inlined: inset.setAutoBreakRows(false); break; @@ -629,6 +675,18 @@ void InsetERT::close(BufferView * bv) const string const InsetERT::selectNextWordToSpellcheck(BufferView * bv,float &) const { - bv->unlockInset(const_cast(this)); + bv->unlockInset(const_cast(this)); return string(); } + +void InsetERT::getDrawFont(LyXFont & font) const +{ +#ifndef INHERIT_LANG + LyXFont f(LyXFont::ALL_INHERIT, latex_language); +#else + LyXFont f(LyXFont::ALL_INHERIT); +#endif + font = f; + font.setFamily(LyXFont::TYPEWRITER_FAMILY); + font.setColor(LColor::latex); +}