-bool InsetInfo::validateModifyArgument(docstring const & arg) const
-{
- string type;
- string name = trim(split(to_utf8(arg), type, ' '));
-
- switch (nameTranslator().find(type)) {
- case InsetInfoParams::UNKNOWN_INFO:
- return false;
-
- case InsetInfoParams::SHORTCUT_INFO:
- case InsetInfoParams::SHORTCUTS_INFO:
- case InsetInfoParams::MENU_INFO: {
- FuncRequest func = lyxaction.lookupFunc(name);
- return func.action() != LFUN_UNKNOWN_ACTION;
- }
-
- case InsetInfoParams::L7N_INFO:
- return !name.empty();
-
- case InsetInfoParams::ICON_INFO: {
- FuncCode const action = lyxaction.lookupFunc(name).action();
- if (action == LFUN_UNKNOWN_ACTION) {
- string dir = "images";
- return !imageLibFileSearch(dir, name, "svgz,png").empty();
- }
- return true;
- }
-
- case InsetInfoParams::LYXRC_INFO: {
- set<string> rcs = lyxrc.getRCs();
- return rcs.find(name) != rcs.end();
- }
-
- case InsetInfoParams::PACKAGE_INFO:
- case InsetInfoParams::TEXTCLASS_INFO:
- return true;
-
- case InsetInfoParams::BUFFER_INFO:
- return (name == "name" || name == "name-noext"
- || name == "path" || name == "class");
-
- case InsetInfoParams::VCS_INFO:
- if (name == "revision" || name == "tree-revision"
- || name == "author" || name == "date" || name == "time")
- return buffer().lyxvc().inUse();
- return false;
-
- case InsetInfoParams::LYX_INFO:
- return name == "version";
-
- case InsetInfoParams::FIXDATE_INFO: {
- string date;
- string piece;
- date = split(name, piece, '@');
- if (!date.empty() && !QDate::fromString(toqstr(date), Qt::ISODate).isValid())
- return false;
- if (!piece.empty())
- name = piece;
- }
- // fall through
- case InsetInfoParams::DATE_INFO:
- case InsetInfoParams::MODDATE_INFO: {
- if (name == "long" || name == "short" || name == "ISO")
- return true;
- else {
- QDate date = QDate::currentDate();
- return !date.toString(toqstr(name)).isEmpty();
- }
- }
- case InsetInfoParams::FIXTIME_INFO: {
- string time;
- string piece;
- time = split(name, piece, '@');
- if (!time.empty() && !QTime::fromString(toqstr(time), Qt::ISODate).isValid())
- return false;
- if (!piece.empty())
- name = piece;
- }
- // fall through
- case InsetInfoParams::TIME_INFO:
- case InsetInfoParams::MODTIME_INFO: {
- if (name == "long" || name == "short" || name == "ISO")
- return true;
- else {
- QTime time = QTime::currentTime();
- return !time.toString(toqstr(name)).isEmpty();
- }
- }
- }
-
- return false;
-}
-
-