commit 588d939722f4a516e8e4a932086e574bc3b13065 Author: Guillaume Munch <g...@lyx.org> Date: Sun Dec 4 18:28:03 2016 +0100
Cosmetic changes to the needauth dialogs * Use rich text for this complicated message * More concise * Fix line breaking issues * Remove "Do not show again" checkbox --- src/Converter.cpp | 37 ++++++++++++++++++++++++------------- src/frontends/qt4/GuiProgress.cpp | 3 +++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/Converter.cpp b/src/Converter.cpp index 14b18dd..e596b3d 100644 --- a/src/Converter.cpp +++ b/src/Converter.cpp @@ -283,29 +283,40 @@ bool Converters::checkAuth(Converter const & conv, string const & doc_fname) { if (!conv.need_auth()) return true; - const docstring security_warning = bformat(_("Requested operation needs use of converter '%1$s' from %2$s to %3$s, " - "which is tagged with the 'needauth' option. This is an external program normally acting as a picture/format " - "converter, but which is known to be able to execute arbitrary actions on the system on behalf of the user, " - "including dangerous ones such as deleting files, if instructed to do so by a maliciously crafted .lyx document."), - from_utf8(conv.command()), from_utf8(conv.from()), from_utf8(conv.to())); + const docstring security_warning = bformat( + _("<p>The requested operation requires the use of a converter from " + "%2$s to %3$s:" + "<blockquote><tt>%1$s</tt></blockquote>" + "<p>This external program can execute arbitrary commands on your " + "system, including dangerous ones, if instructed to do so by a " + "maliciously crafted .lyx document.</p>"), + from_utf8(conv.command()), from_utf8(conv.from()), + from_utf8(conv.to())); if (lyxrc.use_converter_needauth_forbidden) { - frontend::Alert::warning(_("Launch of external converter is forbidden"), security_warning + _("\n\n" - "This is forbidden by default. In order to unlock execution of these converters, please, go to\n" - "Preferences->File Handling->Converters and uncheck Security->Forbid needauth converters."), true); + frontend::Alert::warning( + _("An external converter is disabled for security reasons"), + security_warning + _( + "<p>Your current settings forbid its execution.</p>" + "<p>(To change this setting, go to <i>Preferences ▹ File " + "Handling ▹ Converters</i> and uncheck <i>Security ▹ " + "Forbid needauth converters</i>.)"), false); return false; } if (!lyxrc.use_converter_needauth) return true; - static const docstring security_title = _("Launch of external converter needs user authorization"); + static const docstring security_title = + _("An external converter requires your authorization"); int choice; - const docstring security_warning2 = security_warning + _("\n\nWould you like to run the converter?\n\n" - "ANSWER RUN ONLY IF YOU TRUST THE ORIGIN/SENDER OF THE LYX DOCUMENT!"); + const docstring security_warning2 = security_warning + + _("<p>Would you like to run this converter?</p>" + "<p><b>Only run if you trust the origin/sender of the LyX " + "document!</b></p>"); if (!doc_fname.empty()) { LYXERR(Debug::FILES, "looking up: " << doc_fname); std::set<std::string> & auth_files = theSession().authFiles().authFiles(); if (auth_files.find(doc_fname) == auth_files.end()) { choice = frontend::Alert::prompt(security_title, security_warning2, - 0, 0, _("Do &NOT run"), _("&Run"), _("&Always run for this document")); + 0, 0, _("Do ¬ run"), _("&Run"), _("&Always run for this document")); if (choice == 2) auth_files.insert(doc_fname); } else { @@ -313,7 +324,7 @@ bool Converters::checkAuth(Converter const & conv, string const & doc_fname) } } else { choice = frontend::Alert::prompt(security_title, security_warning2, - 0, 0, _("Do &NOT run"), _("&Run")); + 0, 0, _("Do ¬ run"), _("&Run")); } return choice != 0; } diff --git a/src/frontends/qt4/GuiProgress.cpp b/src/frontends/qt4/GuiProgress.cpp index a44438d..c7b556e 100644 --- a/src/frontends/qt4/GuiProgress.cpp +++ b/src/frontends/qt4/GuiProgress.cpp @@ -32,6 +32,9 @@ namespace lyx { namespace frontend { +// FIXME: This dialog has issues with line breaking and size, in particular with +// html. But it could easily be reimplemented as a QMessageBox using +// QMessageBox::setCheckBox() available starting from Qt 5.2 class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi { public: