X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetBox.cpp;h=91619aa2ab0df0d94b8c65d0b7bc43abaf4f84f1;hb=717105bfe71d77492339b6b99557ca15ab94b007;hp=7def781ac28dfa21bca8b8f9ac4af6478226e3c7;hpb=12a3c703d16d64c5897c228dadc3cb179eafdf87;p=lyx.git diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp index 7def781ac2..91619aa2ab 100644 --- a/src/insets/InsetBox.cpp +++ b/src/insets/InsetBox.cpp @@ -18,10 +18,10 @@ #include "BufferView.h" #include "Cursor.h" #include "DispatchResult.h" -#include "debug.h" +#include "support/debug.h" #include "FuncStatus.h" #include "FuncRequest.h" -#include "gettext.h" +#include "support/gettext.h" #include "LaTeXFeatures.h" #include "Lexer.h" #include "MetricsInfo.h" @@ -30,28 +30,24 @@ #include +using namespace std; namespace lyx { -using std::string; -using std::istringstream; -using std::ostream; -using std::ostringstream; -using std::endl; - - namespace { -typedef Translator BoxTranslator; +typedef Translator BoxTranslator; typedef Translator BoxTranslatorLoc; BoxTranslator const init_boxtranslator() { BoxTranslator translator("Boxed", InsetBox::Boxed); translator.addPair("Frameless", InsetBox::Frameless); + translator.addPair("Framed", InsetBox::Framed); translator.addPair("ovalbox", InsetBox::ovalbox); translator.addPair("Ovalbox", InsetBox::Ovalbox); translator.addPair("Shadowbox", InsetBox::Shadowbox); + translator.addPair("Shaded", InsetBox::Shaded); translator.addPair("Doublebox",InsetBox::Doublebox); return translator; } @@ -59,12 +55,14 @@ BoxTranslator const init_boxtranslator() BoxTranslatorLoc const init_boxtranslator_loc() { - BoxTranslatorLoc translator(_("Boxed"), InsetBox::Boxed); - translator.addPair(_("Frameless"), InsetBox::Frameless); - translator.addPair(_("ovalbox"), InsetBox::ovalbox); - translator.addPair(_("Ovalbox"), InsetBox::Ovalbox); - translator.addPair(_("Shadowbox"), InsetBox::Shadowbox); - translator.addPair(_("Doublebox"), InsetBox::Doublebox); + BoxTranslatorLoc translator(_("simple frame"), InsetBox::Boxed); + translator.addPair(_("frameless"), InsetBox::Frameless); + translator.addPair(_("simple frame, page breaks"), InsetBox::Framed); + translator.addPair(_("oval, thin"), InsetBox::ovalbox); + translator.addPair(_("oval, thick"), InsetBox::Ovalbox); + translator.addPair(_("drop shadow"), InsetBox::Shadowbox); + translator.addPair(_("shaded background"), InsetBox::Shaded); + translator.addPair(_("double frame"), InsetBox::Doublebox); return translator; } @@ -85,25 +83,14 @@ BoxTranslatorLoc const & boxtranslator_loc() } // anon -void InsetBox::init() -{ - setButtonLabel(); -} - - InsetBox::InsetBox(BufferParams const & bp, string const & label) : InsetCollapsable(bp), params_(label) -{ - setLayout(bp); - init(); -} +{} InsetBox::InsetBox(InsetBox const & in) : InsetCollapsable(in), params_(in.params_) -{ - init(); -} +{} InsetBox::~InsetBox() @@ -124,6 +111,16 @@ docstring const InsetBox::editMessage() const } +docstring InsetBox::name() const +{ + // FIXME: UNICODE + string name = string("Box"); + if (boxtranslator().find(params_.type) == Shaded) + name += string(":Shaded"); + return from_ascii(name); +} + + void InsetBox::write(Buffer const & buf, ostream & os) const { params_.write(os); @@ -135,8 +132,6 @@ void InsetBox::read(Buffer const & buf, Lexer & lex) { params_.read(lex); InsetCollapsable::read(buf, lex); - setLayout(buf.params()); - setButtonLabel(); } @@ -157,8 +152,6 @@ void InsetBox::setButtonLabel() label += ")"; setLabel(label); - - setLabelColor(Color_foreground); } @@ -201,7 +194,6 @@ void InsetBox::doDispatch(Cursor & cur, FuncRequest & cmd) //lyxerr << "InsetBox::dispatch MODIFY" << endl; InsetBoxMailer::string2params(to_utf8(cmd.argument()), params_); setLayout(cur.buffer().params()); - setButtonLabel(); break; } @@ -260,8 +252,10 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, stdwidth = true; switch (btype) { case Frameless: + case Framed: break; case Boxed: + case Shaded: width_string += " - 2\\fboxsep - 2\\fboxrule"; break; case ovalbox: @@ -289,6 +283,10 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, switch (btype) { case Frameless: break; + case Framed: + os << "\\begin{framed}%\n"; + i += 1; + break; case Boxed: os << "\\framebox"; if (!params_.inner_box) { @@ -317,6 +315,9 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, case Shadowbox: os << "\\shadowbox{"; break; + case Shaded: + // later + break; case Doublebox: os << "\\doublebox{"; break; @@ -357,9 +358,15 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, os << "%\n"; i += 1; } + if (btype == Shaded) + os << "\\begin{shaded}%\n"; + i += 1; i += InsetText::latex(buf, os, runparams); + if (btype == Shaded) + os << "\\end{shaded}"; + if (params_.inner_box) { if (params_.use_parbox) os << "%\n}"; @@ -370,6 +377,9 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, switch (btype) { case Frameless: break; + case Framed: + os << "\\end{framed}"; + break; case Boxed: if (!params_.inner_box) os << "}"; // for makebox @@ -381,6 +391,9 @@ int InsetBox::latex(Buffer const & buf, odocstream & os, case Shadowbox: os << "}"; break; + case Shaded: + // already done + break; } os << "%\n"; @@ -396,24 +409,56 @@ int InsetBox::plaintext(Buffer const & buf, odocstream & os, BoxType const btype = boxtranslator().find(params_.type); switch (btype) { - case Frameless: break; - case Boxed: os << "[\n"; break; - case ovalbox: os << "(\n"; break; - case Ovalbox: os << "((\n"; break; - case Shadowbox: os << "[/\n"; break; - case Doublebox: os << "[[\n"; break; + case Frameless: + break; + case Framed: + case Boxed: + os << "[\n"; + break; + case ovalbox: + os << "(\n"; + break; + case Ovalbox: + os << "((\n"; + break; + case Shadowbox: + case Shaded: + os << "[/\n"; + break; + case Doublebox: + os << "[[\n"; + break; } InsetText::plaintext(buf, os, runparams); int len = 0; switch (btype) { - case Frameless: os << "\n"; break; - case Boxed: os << "\n]"; len = 1; break; - case ovalbox: os << "\n)"; len = 1; break; - case Ovalbox: os << "\n))"; len = 2; break; - case Shadowbox: os << "\n/]"; len = 2; break; - case Doublebox: os << "\n]]"; len = 2; break; + case Frameless: + os << "\n"; + break; + case Framed: + case Boxed: + os << "\n]"; + len = 1; + break; + case ovalbox: + os << "\n)"; + len = 1; + break; + case Ovalbox: + os << "\n))"; + len = 2; + break; + case Shadowbox: + case Shaded: + os << "\n/]"; + len = 2; + break; + case Doublebox: + os << "\n]]"; + len = 2; + break; } return PLAINTEXT_NEWLINE + len; // len chars on a separate line @@ -433,6 +478,9 @@ void InsetBox::validate(LaTeXFeatures & features) const switch (btype) { case Frameless: break; + case Framed: + features.require("framed"); + break; case Boxed: features.require("calc"); break; @@ -443,6 +491,10 @@ void InsetBox::validate(LaTeXFeatures & features) const features.require("calc"); features.require("fancybox"); break; + case Shaded: + features.require("color"); + features.require("framed"); + break; } InsetText::validate(features); }