X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fcommand_inset.C;h=77570665d6d14f7857d04a1a6ac2ab2fde0e0ce7;hb=92d522b7f1be6046adcac062c558bbf0bf021612;hp=42a0f5c1e7111055d99a18ce89023a69bfb36612;hpb=bf2e2d58f3905625b65d51a6b258603e8071701c;p=lyx.git diff --git a/src/mathed/command_inset.C b/src/mathed/command_inset.C index 42a0f5c1e7..77570665d6 100644 --- a/src/mathed/command_inset.C +++ b/src/mathed/command_inset.C @@ -1,41 +1,46 @@ -#ifdef __GNUG__ -#pragma implementation -#endif #include "command_inset.h" #include "math_mathmlstream.h" #include "funcrequest.h" +#include "Lsstream.h" -CommandInset::CommandInset(string const & data) +CommandInset::CommandInset(string const & name) + : MathNestInset(2), + name_(name), + set_label_(false) { lock_ = true; - - string::size_type idx0 = data.find("|++|"); - name_ = data.substr(0, idx0); - if (idx0 == string::npos) - return; - idx0 += 4; - string::size_type idx1 = data.find("|++|", idx0); - cell(0) = asArray(data.substr(idx0, idx1 - idx0)); - if (idx1 == string::npos) - return; - cell(1) = asArray(data.substr(idx1 + 4)); } -MathInset * CommandInset::clone() const +InsetBase * CommandInset::clone() const { return new CommandInset(*this); } -MathInset::result_type +void CommandInset::metrics(MetricsInfo & mi, Dimension & dim) const +{ + if (!set_label_) { + set_label_ = true; + button_.update(screenLabel(), true); + } + button_.metrics(mi, dim); +} + + +void CommandInset::draw(PainterInfo & pi, int x, int y) const +{ + button_.draw(pi, x, y); +} + +dispatch_result CommandInset::dispatch(FuncRequest const & cmd, idx_type & idx, pos_type & pos) { switch (cmd.action) { default: - return ButtonInset::dispatch(cmd, idx, pos); + return MathNestInset::dispatch(cmd, idx, pos); } return UNDISPATCHED; } @@ -43,14 +48,25 @@ CommandInset::dispatch(FuncRequest const & cmd, idx_type & idx, pos_type & pos) void CommandInset::write(WriteStream & os) const { - os << "\\" << name_.c_str(); + os << '\\' << name_.c_str(); if (cell(1).size()) - os << "[" << cell(1) << "]"; - os << "{" << cell(0) << "}"; + os << '[' << cell(1) << ']'; + os << '{' << cell(0) << '}'; +} + + +string const CommandInset::screenLabel() const +{ + return name_; } -string CommandInset::screenLabel() const +string const CommandInset::createDialogStr(string const & name) const { - return name_; + ostringstream data; + data << name << " LatexCommand "; + WriteStream wsdata(data); + write(wsdata); + wsdata << "\n\\end_inset\n\n"; + return STRCONV(data.str()); }