+}
+
+
+bool isInputOrInclude(InsetCommandParams const & params)
+{
+ Types const t = type(params);
+ return (t == INPUT) || (t == INCLUDE);
}
} // namespace anon
InsetInclude::InsetInclude(InsetCommandParams const & p)
- : params_(p), include_label(uniqueID()),
- preview_(new RenderMonitoredPreview(this)),
- set_label_(false)
+ : InsetCommand(p, "include"), include_label(uniqueID()),
+ preview_(new RenderMonitoredPreview(this)), set_label_(false)
{
preview_->fileChanged(boost::bind(&InsetInclude::fileChanged, this));
}
InsetInclude::InsetInclude(InsetInclude const & other)
- : Inset(other),
- params_(other.params_),
- include_label(other.include_label),
- preview_(new RenderMonitoredPreview(this)),
- set_label_(false)
+ : InsetCommand(other), include_label(other.include_label),
+ preview_(new RenderMonitoredPreview(this)), set_label_(false)
{
preview_->fileChanged(boost::bind(&InsetInclude::fileChanged, this));
-}
-
-
-InsetInclude::~InsetInclude()
-{
- InsetIncludeMailer(*this).hideDialog();
}
@@ -133,7 +163,7 @@
case LFUN_INSET_MODIFY: {
InsetCommandParams p(INCLUDE_CODE);
- InsetIncludeMailer::string2params(to_utf8(cmd.argument()), p);
+ InsetCommandMailer::string2params("include",
to_utf8(cmd.argument()), p);
if (!p.getCmdName().empty()) {
if (isListings(p)){
InsetListingsParams
par_old(params().getOptions());
@@ -153,86 +183,15 @@
break;
}
- case LFUN_INSET_DIALOG_UPDATE:
- InsetIncludeMailer(*this).updateDialog(&cur.bv());
+ //pass everything else up the chain
+ default:
+ InsetCommand::doDispatch(cur, cmd);
break;
-
- case LFUN_MOUSE_RELEASE:
- if (!cur.selection())
- InsetIncludeMailer(*this).showDialog(&cur.bv());
- break;
-
- default:
- Inset::doDispatch(cur, cmd);
- break;
- }
-}
-
-
-bool InsetInclude::getStatus(Cursor & cur, FuncRequest const & cmd,
- FuncStatus & flag) const
-{
- switch (cmd.action) {
-
- case LFUN_INSET_MODIFY:
- case LFUN_INSET_DIALOG_UPDATE:
- flag.enabled(true);
- return true;
-
- default:
- return Inset::getStatus(cur, cmd, flag);
- }
-}
-
-
-InsetCommandParams const & InsetInclude::params() const
-{
- return params_;
+ }
}
namespace {
-
-/// the type of inclusion
-enum Types {
- INCLUDE = 0,
- VERB = 1,
- INPUT = 2,
- VERBAST = 3,
- LISTINGS = 4,
-};
-
-
-Types type(InsetCommandParams const & params)
-{
- string const command_name = params.getCmdName();
-
- if (command_name == "input")
- return INPUT;
- if (command_name == "verbatiminput")
- return VERB;
- if (command_name == "verbatiminput*")
- return VERBAST;
- if (command_name == "lstinputlisting")
- return LISTINGS;
- return INCLUDE;
-}
-
-
-bool isVerbatim(InsetCommandParams const & params)
-{
- string const command_name = params.getCmdName();
- return command_name == "verbatiminput" ||
- command_name == "verbatiminput*";
-}
-
-
-bool isInputOrInclude(InsetCommandParams const & params)
-{
- Types const t = type(params);
- return (t == INPUT) || (t == INCLUDE);
-}
-
string const masterFilename(Buffer const & buffer)
{
@@ -250,7 +209,7 @@
InsetCommandParams const & params)
{
return makeAbsPath(to_utf8(params["filename"]),
- onlyPath(parentFilename(buffer)));
+ onlyPath(parentFilename(buffer)));
}
@@ -261,13 +220,13 @@
void InsetInclude::set(InsetCommandParams const & p, Buffer const & buffer)
{
- params_ = p;
+ setParams(p);
set_label_ = false;
if (preview_->monitoring())
preview_->stopMonitoring();
- if (type(params_) == INPUT)
+ if (type(params()) == INPUT)
add_preview(*preview_, *this, buffer);
}
@@ -278,56 +237,11 @@
}
-void InsetInclude::write(Buffer const &, ostream & os) const
-{
- write(os);
-}
-
-
-void InsetInclude::write(ostream & os) const
-{
- os << "Include " << to_utf8(params_.getCommand()) << '\n'
- << "preview " << convert<string>(params_.preview()) << '\n';
-}
-
-
-void InsetInclude::read(Buffer const &, Lexer & lex)
-{
- read(lex);
-}
-
-
-void InsetInclude::read(Lexer & lex)
-{
- if (lex.isOK()) {
- lex.eatLine();
- string const command = lex.getString();
- params_.scanCommand(command);
- }
- string token;
- while (lex.isOK()) {
- lex.next();
- token = lex.getString();
- if (token == "\\end_inset")
- break;
- if (token == "preview") {
- lex.next();
- params_.preview(lex.getBool());
- } else
- lex.printError("Unknown parameter name `$$Token' for command
" + params_.getCmdName());
- }
- if (token != "\\end_inset") {
- lex.printError("Missing \\end_inset at this point. "
- "Read: `$$Token'");
- }
-}
-
-
docstring const InsetInclude::getScreenLabel(Buffer const & buf) const
{
docstring temp;
- switch (type(params_)) {
+ switch (type(params())) {
case INPUT:
temp = buf.B_("Input");
break;
@@ -347,10 +261,10 @@
temp += ": ";
- if (params_["filename"].empty())
+ if (params()["filename"].empty())
temp += "???";
else
- temp += from_utf8(onlyFilename(to_utf8(params_["filename"])));
+ temp += from_utf8(onlyFilename(to_utf8(params()["filename"])));
return temp;
}
@@ -414,19 +328,19 @@
int InsetInclude::latex(Buffer const & buffer, odocstream & os,
OutputParams const & runparams) const
{
- string incfile(to_utf8(params_["filename"]));
+ string incfile(to_utf8(params()["filename"]));
// Do nothing if no file name has been specified
if (incfile.empty())
return 0;
- FileName const included_file = includedFilename(buffer, params_);
+ FileName const included_file = includedFilename(buffer, params());
//Check we're not trying to include ourselves.
//FIXME RECURSIVE INCLUDE
//This isn't sufficient, as the inclusion could be downstream.
//But it'll have to do for now.
- if (isInputOrInclude(params_) &&
+ if (isInputOrInclude(params()) &&
buffer.absFileName() == included_file.absFilename())
{
Alert::error(_("Recursive input"),
@@ -467,11 +381,11 @@
if (runparams.inComment || runparams.dryrun) {
//Don't try to load or copy the file if we're
//in a comment or doing a dryrun
- } else if (isInputOrInclude(params_) &&
+ } else if (isInputOrInclude(params()) &&
isLyXFilename(included_file.absFilename())) {
//if it's a LyX file and we're inputting or including,
//try to load it so we can write the associated latex
- if (!loadIfNeeded(buffer, params_))
+ if (!loadIfNeeded(buffer, params()))
return false;
Buffer * tmp = theBufferList().getBuffer(included_file.absFilename());
@@ -545,12 +459,12 @@
string const tex_format = (runparams.flavor == OutputParams::LATEX) ?
"latex" : "pdflatex";
- if (isVerbatim(params_)) {
+ if (isVerbatim(params())) {
incfile = latex_path(incfile);
// FIXME UNICODE
- os << '\\' << from_ascii(params_.getCmdName()) << '{'
+ os << '\\' << from_ascii(params().getCmdName()) << '{'
<< from_utf8(incfile) << '}';
- } else if (type(params_) == INPUT) {
+ } else if (type(params()) == INPUT) {
runparams.exportdata->addExternalFile(tex_format, writefile,
exportfile);
@@ -558,18 +472,18 @@
if (!isLyXFilename(included_file.absFilename())) {
incfile = latex_path(incfile);
// FIXME UNICODE
- os << '\\' << from_ascii(params_.getCmdName())
+ os << '\\' << from_ascii(params().getCmdName())
<< '{' << from_utf8(incfile) << '}';
} else {
incfile = changeExtension(incfile, ".tex");
incfile = latex_path(incfile);
// FIXME UNICODE
- os << '\\' << from_ascii(params_.getCmdName())
+ os << '\\' << from_ascii(params().getCmdName())
<< '{' << from_utf8(incfile) << '}';
}
- } else if (type(params_) == LISTINGS) {
- os << '\\' << from_ascii(params_.getCmdName());
- string opt = params_.getOptions();
+ } else if (type(params()) == LISTINGS) {
+ os << '\\' << from_ascii(params().getCmdName());
+ string opt = params().getOptions();
// opt is set in QInclude dialog and should have passed
validation.
InsetListingsParams params(opt);
if (!params.params().empty())
@@ -584,7 +498,7 @@
incfile = changeExtension(incfile, string());
incfile = latex_path(incfile);
// FIXME UNICODE
- os << '\\' << from_ascii(params_.getCmdName()) << '{'
+ os << '\\' << from_ascii(params().getCmdName()) << '{'
<< from_utf8(incfile) << '}';
}
@@ -595,11 +509,11 @@
int InsetInclude::plaintext(Buffer const & buffer, odocstream & os,
OutputParams const &) const
{
- if (isVerbatim(params_) || isListings(params_)) {
+ if (isVerbatim(params()) || isListings(params())) {
os << '[' << getScreenLabel(buffer) << '\n';
// FIXME: We don't know the encoding of the file
docstring const str =
- from_utf8(includedFilename(buffer,
params_).fileContents());
+ from_utf8(includedFilename(buffer,
params()).fileContents());
os << str;
os << "\n]";
return PLAINTEXT_NEWLINE + 1; // one char on a separate line
@@ -614,13 +528,13 @@
int InsetInclude::docbook(Buffer const & buffer, odocstream & os,
OutputParams const & runparams) const
{
- string incfile = to_utf8(params_["filename"]);
+ string incfile = to_utf8(params()["filename"]);
// Do nothing if no file name has been specified
if (incfile.empty())
return 0;
- string const included_file = includedFilename(buffer, params_).absFilename();
+ string const included_file = includedFilename(buffer,
params()).absFilename();
//Check we're not trying to include ourselves.
//FIXME RECURSIVE INCLUDE
@@ -637,7 +551,7 @@
string const exportfile = changeExtension(incfile, ".sgml");
DocFileName writefile(changeExtension(included_file, ".sgml"));
- if (loadIfNeeded(buffer, params_)) {
+ if (loadIfNeeded(buffer, params())) {
Buffer * tmp = theBufferList().getBuffer(included_file);
string const mangled = writefile.mangledFilename();
@@ -658,7 +572,7 @@
runparams.exportdata->addExternalFile("docbook-xml", writefile,
exportfile);
- if (isVerbatim(params_) || isListings(params_)) {
+ if (isVerbatim(params()) || isListings(params())) {
os << "<inlinegraphic fileref=\""
<< '&' << include_label << ';'
<< "\" format=\"linespecific\">";
@@ -671,19 +585,19 @@
void InsetInclude::validate(LaTeXFeatures & features) const
{
- string incfile(to_utf8(params_["filename"]));
+ string incfile(to_utf8(params()["filename"]));