#include "Buffer.h"
#include "BufferParams.h"
#include "BufferView.h"
+#include "Changes.h"
+#include "Cursor.h"
#include "CutAndPaste.h"
#include "Font.h"
#include "FuncRequest.h"
#include "LaTeXFeatures.h"
#include "Language.h"
#include "LayoutFile.h"
-#include "Length.h"
#include "LyXAction.h"
#include "LyXRC.h"
#include "LyXVC.h"
#include "frontends/Application.h"
+#include "support/Changer.h"
#include "support/convert.h"
#include "support/debug.h"
#include "support/docstream.h"
#include "support/FileName.h"
#include "support/filetools.h"
#include "support/gettext.h"
+#include "support/Length.h"
#include "support/Messages.h"
#include "support/lstrings.h"
#include "support/qstring_helpers.h"
case MENU_INFO:
case ICON_INFO: {
result.push_back(make_pair("custom", _("Custom")));
- LyXAction::const_iterator fit = lyxaction.func_begin();
- LyXAction::const_iterator const fen = lyxaction.func_end();
- for (; fit != fen; ++fit) {
- string const lfun = fit->first;
+ for (auto const & name_code : lyxaction) {
+ string const lfun = name_code.first;
if (!lfun.empty())
result.push_back(make_pair(lfun, from_ascii(lfun)));
}
string const dt = split(name, '@');
QDate date;
if (itype == "moddate")
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ date = QDateTime::fromSecsSinceEpoch(buf->fileName().lastModified()).date();
+#else
date = QDateTime::fromTime_t(buf->fileName().lastModified()).date();
+#endif
else if (itype == "fixdate" && !dt.empty()) {
QDate const gdate = QDate::fromString(toqstr(dt), Qt::ISODate);
date = (gdate.isValid()) ? gdate : QDate::currentDate();
string const tt = split(name, '@');
QTime time;
if (itype == "modtime")
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ time = QDateTime::fromSecsSinceEpoch(buf->fileName().lastModified()).time();
+#else
time = QDateTime::fromTime_t(buf->fileName().lastModified()).time();
+#endif
else if (itype == "fixtime" && !tt.empty()) {
QTime const gtime = QTime::fromString(toqstr(tt), Qt::ISODate);
time = (gtime.isValid()) ? gtime : QTime::currentTime();
-InsetInfo::InsetInfo(Buffer * buf, string const & name)
+InsetInfo::InsetInfo(Buffer * buf, string const & info)
: InsetCollapsible(buf), initialized_(false)
{
params_.type = InsetInfoParams::UNKNOWN_INFO;
params_.force_ltr = false;
- setInfo(name);
+ setInfo(info);
status_ = Collapsed;
}
return true;
case LFUN_INSET_MODIFY:
+ if (nameTranslator().find(cmd.getArg(0)) == InsetInfoParams::UNKNOWN_INFO)
+ return Inset::getStatus(cur, cmd, flag);
if (params_.validateArgument(&buffer(), cmd.argument())) {
flag.setEnabled(true);
string typestr;
{
switch (cmd.action()) {
case LFUN_INSET_MODIFY:
+ if (nameTranslator().find(cmd.getArg(0)) == InsetInfoParams::UNKNOWN_INFO) {
+ cur.undispatched();
+ break;
+ }
cur.recordUndo();
setInfo(to_utf8(cmd.argument()));
cur.forceBufferUpdate();
}
-void InsetInfo::setInfo(string const & name)
+void InsetInfo::setInfo(string const & info)
{
- if (name.empty())
+ if (info.empty())
return;
string saved_date_specifier;
saved_date_specifier = split(params_.name, '@');
// info_type name
string type;
- params_.name = trim(split(name, type, ' '));
+ params_.name = trim(split(info, type, ' '));
params_.type = nameTranslator().find(type);
if (params_.name.empty())
params_.name = defaultValueTranslator().find(params_.type);
}
-void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) {
+bool InsetInfo::forceLocalFontSwitch() const
+{
+ return params_.type == InsetInfoParams::MENU_INFO
+ || params_.type == InsetInfoParams::SHORTCUTS_INFO
+ || params_.type == InsetInfoParams::SHORTCUT_INFO
+ || params_.type == InsetInfoParams::L7N_INFO;
+}
+
+
+void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+ const_cast<InsetInfo *>(this)->build();
+ InsetCollapsible::metrics(mi, dim);
+}
+
+
+void InsetInfo::draw(PainterInfo & pi, int x, int y) const
+{
+ Changer chg = changeVar(lyxrc.mark_foreign_language, false);
+ InsetCollapsible::draw(pi, x, y);
+}
+
+void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
+
+{
// If the Buffer is a clone, then we neither need nor want to do any
// of what follows. We want, rather, just to inherit how things were
// in the original Buffer. This is especially important for VCS.
// than in the Buffer we were exporting.
if (buffer().isClone())
return;
-
BufferParams const & bp = buffer().params();
params_.lang = it.paragraph().getFontSettings(bp, it.pos()).language();
+ InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::build()
+{
+ // If the Buffer is a clone, then we neither need nor want to do any
+ // of what follows. We want, rather, just to inherit how things were
+ // in the original Buffer. This is especially important for VCS.
+ // Otherwise, we could in principle have different settings here
+ // than in the Buffer we were exporting.
+ if (buffer().isClone())
+ return;
+
Language const * tryguilang = languages.getFromCode(Messages::guiLanguage());
// Some info insets use the language of the GUI (if available)
Language const * guilang = tryguilang ? tryguilang : params_.lang;
string const lcode = params_.lang->code();
docstring trans;
bool is_translated = sequence != seq_untranslated;
- for (size_t n = 0; n < sequence.size(); ++n) {
- char_type const c = sequence[n];
+ for (char_type const c : sequence) {
switch(c) {
case 0x21b5://Return
gui = _("Return[[Key]]");
igp.lyxscale = percent_scale;
igp.scale = string();
igp.width = Length(1, Length::EM);
+ if (contains(file.absoluteFilePath(), from_ascii("math"))
+ || contains(file.absoluteFilePath(), from_ascii("ert-insert"))
+ || suffixIs(file.onlyPath().absoluteFilePath(), from_ascii("ipa")))
+ igp.darkModeSensitive = true;
inset->setParams(igp);
clear();
Font const f(inherit_font, params_.lang);
else if (params_.name == "path")
setText(from_utf8(os::latex_path(buffer().filePath())), params_.lang);
else if (params_.name == "class")
- setText(from_utf8(bp.documentClass().name()), params_.lang);
+ setText(from_utf8(buffer().params().documentClass().name()), params_.lang);
break;
}
case InsetInfoParams::VCS_INFO: {
? split(params_.name, date_format, '@') : string();
QDate date;
if (params_.type == InsetInfoParams::MODDATE_INFO)
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ date = QDateTime::fromSecsSinceEpoch(buffer().fileName().lastModified()).date();
+#else
date = QDateTime::fromTime_t(buffer().fileName().lastModified()).date();
+#endif
else if (params_.type == InsetInfoParams::FIXDATE_INFO && !date_specifier.empty())
date = QDate::fromString(toqstr(date_specifier), Qt::ISODate);
else
? split(params_.name, time_format, '@') : string();
QTime time;
if (params_.type == InsetInfoParams::MODTIME_INFO)
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ time = QDateTime::fromSecsSinceEpoch(buffer().fileName().lastModified()).time();
+#else
time = QDateTime::fromTime_t(buffer().fileName().lastModified()).time();
+#endif
else if (params_.type == InsetInfoParams::FIXTIME_INFO && !time_specifier.empty())
time = QTime::fromString(toqstr(time_specifier), Qt::ISODate);
else
// Just to do something with that string
LYXERR(Debug::INFO, "info inset text: " << gui);
- InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::validate(LaTeXFeatures & features) const
+{
+ const_cast<InsetInfo *>(this)->build();
+ InsetCollapsible::validate(features);
}