#include "Buffer.h"
#include "BufferParams.h"
#include "BufferView.h"
+#include "CutAndPaste.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "InsetGraphics.h"
return InsetCollapsable::getStatus(cur, cmd, flag);
case LFUN_INSET_DIALOG_UPDATE:
+ case LFUN_INSET_COPY_AS:
flag.setEnabled(true);
return true;
flag.setEnabled(true);
return true;
}
- //fall back
+ //fall through
default:
return false;
void InsetInfo::doDispatch(Cursor & cur, FuncRequest & cmd)
{
- // allow selection, copy but not cut, delete etc
switch (cmd.action()) {
- case LFUN_INSET_SETTINGS:
- InsetCollapsable::doDispatch(cur, cmd);
- break;
-
case LFUN_INSET_MODIFY:
setInfo(to_utf8(cmd.argument()));
break;
+ case LFUN_INSET_COPY_AS: {
+ cap::clearSelection();
+ Cursor copy(cur);
+ copy.pushBackward(*this);
+ copy.pit() = 0;
+ copy.pos() = 0;
+ copy.resetAnchor();
+ copy.pit() = copy.lastpit();
+ copy.pos() = copy.lastpos();
+ copy.setSelection();
+ cap::copySelection(copy);
+ break;
+ }
+
default:
+ InsetCollapsable::doDispatch(cur, cmd);
break;
}
}
}
case LYXRC_INFO: {
ostringstream oss;
+ if (name_.empty()) {
+ setText(_("undefined"));
+ break;
+ }
lyxrc.write(oss, true, name_);
string result = oss.str();
- // remove leading \\name
- result = result.substr(name_.size() + 2);
+ if (result.size() < 2) {
+ setText(_("undefined"));
+ break;
+ }
+ string::size_type loc = result.rfind("\n", result.size() - 2);
+ loc = loc == string::npos ? 0 : loc + 1;
+ if (result.size() < loc + name_.size() + 1
+ || result.substr(loc + 1, name_.size()) != name_) {
+ setText(_("undefined"));
+ break;
+ }
+ // remove leading comments and \\name and space
+ result = result.substr(loc + name_.size() + 2);
+
// remove \n and ""
result = rtrim(result, "\n");
result = trim(result, "\"");
// check in packages.lst
setText(LaTeXFeatures::isAvailable(name_) ? _("yes") : _("no"));
break;
+
case TEXTCLASS_INFO: {
// name_ is the class name
- setText(LayoutFileList::get().haveClass(name_) ? _("yes") : _("no"));
+ LayoutFileList const & list = LayoutFileList::get();
+ bool available = false;
+ if (list.haveClass(name_))
+ available = list[name_].isTeXClassAvailable();
+ setText(available ? _("yes") : _("no"));
break;
}
case MENU_INFO: {