X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fcommand_inset.C;h=77570665d6d14f7857d04a1a6ac2ab2fde0e0ce7;hb=92d522b7f1be6046adcac062c558bbf0bf021612;hp=7af795e341579f13602379b87a6f0b1f85d9b13f;hpb=4d59d00ad4bad81050cd2f50e71ad7056765033e;p=lyx.git diff --git a/src/mathed/command_inset.C b/src/mathed/command_inset.C index 7af795e341..77570665d6 100644 --- a/src/mathed/command_inset.C +++ b/src/mathed/command_inset.C @@ -1,41 +1,72 @@ #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); } +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 MathNestInset::dispatch(cmd, idx, pos); + } + return UNDISPATCHED; +} + + 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()); }